2016-11-25 2 views
0

내 상황 나는 72 개의 LED를 제어하기 위해 시프트 레지스터를 사용하고 있습니다. 각 LED는 특정 요청을 통해 활성화 될 수 있습니다. LED를 HIGH로 설정하기는 쉽지만 LED는 깜박입니다. "for"를 통해 LED를 깜박 거리는 것은 문제가되지 않습니다. LED를 깜박 거리게 만들었습니다. 새 요청이 들어 왔을 때 깜박이지 않으면 LED가 깜박입니다. 새 요청이 도착할 때까지 LED가 깜박입니다.Arduino - readString.indexOf 루프 중지 (+ LED 깜박임 깜박임)

내 문제은 깜박이는 과도기 (예제 3 번) 중 멈출 수없는 경우입니다. 예를 들어 다른 LED (? button1onA2)에 대해 새 if(readString.indexOf("?button1onA2") > 0)을 보내는 중이면 이전 요청의 LED가 여전히 깜박일 때까지 요청이 무시됩니다.

내 목표를 LED 점멸을하지만, 'readstring'를 통해 새로운 요청이 도착했을 때을 중지하는 것입니다.

내 질문 :

  • 다음 for (i = 0; i < 3; i++)을 사용하여 다른 루프에서 점멸 LED를 만들 수있는 더 나은 방법이 있나요?
  • 하나는 루프에 있습니다. 을 깨고 다음 LED로 이동합니까? 이 경우

내 코드

if (readString.indexOf("?button1onA1") > 0) 는 4 깜박 센서 ID로했다.

 if (readString.indexOf("?button1onA1") > 0) { 

     for (i = 0; i < 3; i++) 
     { 
      shifter.setPin(4, HIGH); 
      shifter.write(); 
      delay(200); 
      shifter.setPin(4, LOW); 
      shifter.write(); 
      delay(200); 

     } 
+0

이 질문은 arduino.stackexchange.com 사이트에 속하기 때문에이 질문을 오프 토픽으로 끝내기로했습니다. – zx485

답변

1

당신은 비 차단 지연 (예를 들어, Blink Without Delay)를 사용합니다. 좋은 방법은 상태 시스템 (또는 그 중 다수)을 사용하는 것입니다.

그러나 이론적으로 LED에 대해 비트 마스크를 저장할 수 있습니다. 깜박이고 모두 블로킹 (블로킹 지연없이) 할 수 있습니다.

+0

덕분에, 내가 코드에 추가 없지만, 깜박 거리는 경우 한 (? "wall01_01"는 readString.indexOf는()> 0) { 는 부호없는 긴 현재) (밀리를 =; if (now - lastTime> = PERIOD) // PERIOD 밀리 초마다 true가됩니다. { lastTime = now; if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } shifter.setPin (1, ledState); shifter.write(); } } – Sebastian

+0

@Sebastian, 소스 코드를 업데이트하고 설명 대신 질문에 설명을 추가하십시오. –

관련 문제