>

여기 초보자-말 그대로 약 3 시간 전에 Arduino를 열었습니다. 2 개의 LED를 무작위로 깜박이도록 코딩 할 수 있었지만 원하는 것은 10 초마다 2 개의 깜박임 중 하나입니다.

현재 코드 :

void setup() {
  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT); 
}
void loop() {
  // set 2 random on/off values
  byte on4 = random(2); //returns a random choice of 0 or 1
  byte on5 = random(2);
  //Write the value of each variable to the pins.
  digitalWrite(4,on4);
  digitalWrite(5,on5);
  delay(500); 
}

루프에 무언가를해야한다는 것을 알고 있습니다. 단지 무엇을 알아낼 수 없습니다.


  • 답변 # 1

    이 코드를 사용해보십시오. 도움이 될 것입니다.

    const int kPinLed = 4;      // LED at pin 4
    void setup()
    {
      pinMode(kPinLed, OUTPUT); // LED as OUTPUT
    }
    void loop()
    {
      digitalWrite(kPinLed, HIGH); // LED ON
      delay(10000);                // 10 Sec delay
      digitalWrite(kPinLed, LOW);  // LED OFF
      delay(10000);                // 10 Sec delay
    }
    
    

  • 답변 # 2

    핀 4 또는 5를 유지하려면 선택하십시오. 다른 참조를 모두 제거하십시오.

    설정 기능을 수행하기 전에 나머지 핀의 선언을 루프 외부로 이동하십시오. 예 : 바이트 on4;

    설정 내에서 생존 핀에 값 (1 또는 0)을 할당하십시오. 예 : on4 = 0;

    루프 내부에서 핀 값을 변경하십시오. 예 : on4 =! on4;

    digitalWrite는 LED를 구동하는 핀의 상태를 변경합니다. 원하지 않는 것을 제거하십시오.

    지연은 시스템이 대기하는 시간을 밀리 초 단위로 나타냅니다. 그에 따라 변경하십시오.

    byte on4;
    void setup() {
      on4 = 0;
      pinMode(4, OUTPUT); 
    }
    void loop() {;
      on4 = !on4;
      digitalWrite(4,on4);
      delay(10000); 
    }
    
    

    이것은 효과가 있지만 테스트하지는 않았습니다.

  • 답변 # 3

    논리를 두 부분으로 나눌 필요가 있습니다. 한 부분은 깜박일 핀을 선택하고 다른 부분은 핀을 깜박입니다. delay ()를 사용 하여이 작업을 수행하는 방법을 보여 주겠지 만 분명히 시간을 계산하는 BlinkWithoutDelay 메서드를 사용하는 것이 더 좋으므로 프로세서가 다른 작업을 수행 할 수 있습니다. 이 코드는 테스트되지 않았으며 다른 변경없이 ledPin 어레이에 핀을 추가하기 만하면 항상 올바르게 작동합니다.

    uint8_t ledPin[] = { 4, 5 };  // Arduino pins with the LEDs
    #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
    void BlinkOne(uint8_t pin)
    {
      digitalWrite(pin, HIGH);
      delay(5000);
      digitalWrite(pin, LOW);
      delay(5000);
    }
    void setup(void)
    {
      for (uint8_t i=0; i<ARRAY_SIZE(ledPin); i++)
        setMode(ledPin[i], OUTPUT);
    }
    void loop(void)
    {
      uint8_t thisPin = ledPin[random(ARRAY_SIZE(ledPin))];  // select which pin
      BlinkOne(thisPin);  // blink that pin
    }
    
    

관련 자료

  • 이전 arduino - 핀이없는 Arduino Nano 30 치수
  • 다음 arduino - USB PowerBank로 독립형 Arduino 전원 공급 문제