помогите запрограмировать кнопу на режимы
- Войдите на сайт для отправки комментариев
Чт, 28/11/2013 - 21:19
Помлгите сделать так чтобы при нажатии кнопки включался режим 1 еще раз нажать режим 2 и т.д а при нажати кнопки 2 можно было венуца на предыдущий режим int ledPins[] = {2,3,4,5,6,7}; void setup() { int index; for(index = 0; index <= 5; index++) { pinMode(ledPins[index],OUTPUT); } } void loop() { oneAfterAnotherNoLoop(); //режим 1 //oneAfterAnotherLoop(); //режим 2 //oneOnAtATime(); //режим 3 //pingPong(); //режим 4 //marquee(); // режим 5 //randomLED(); режим 6 } void oneAfterAnotherNoLoop() { int delayTime = 100; digitalWrite(ledPins[0], HIGH); delay(delayTime); digitalWrite(ledPins[1], HIGH); delay(delayTime); digitalWrite(ledPins[2], HIGH); delay(delayTime); digitalWrite(ledPins[3], HIGH); delay(delayTime); digitalWrite(ledPins[4], HIGH); delay(delayTime); digitalWrite(ledPins[5], HIGH); delay(delayTime); digitalWrite(ledPins[5], LOW); delay(delayTime); digitalWrite(ledPins[4], LOW); delay(delayTime); digitalWrite(ledPins[3], LOW); delay(delayTime); digitalWrite(ledPins[2], LOW); delay(delayTime); digitalWrite(ledPins[1], LOW); delay(delayTime); digitalWrite(ledPins[0], LOW); delay(delayTime); } void oneAfterAnotherLoop() { int index; int delayTime = 100; for(index = 0; index <= 5; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); } for(index = 5; index >= 0; index--) { digitalWrite(ledPins[index], LOW); delay(delayTime); } } void oneOnAtATime() { int index; int delayTime = 100; for(index = 0; index <= 5; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } } void pingPong() { int index; int delayTime = 100; for(index = 0; index <= 5; index++) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } for(index = 5; index >= 0; index--) { digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); } } void marquee() { int index; int delayTime = 200; for(index = 0; index <= 3; index++) { digitalWrite(ledPins[index], HIGH); digitalWrite(ledPins[index+3], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); digitalWrite(ledPins[index+3], LOW); } } void randomLED() { int index; int delayTime; index = random(6); delayTime = 100; digitalWrite(ledPins[index], HIGH); delay(delayTime); digitalWrite(ledPins[index], LOW); }
Не многовато ли int'ов ?
Не многовато ли int'ов ?
Спасибо исправил, Ctrl+C нечаянно int захватил.
Так же не учтен дребезг. А так как в функциях испольвована delay() кнопочки прийдется обрабатывать в прерываниях.
в самай раз все работает, мне надо зделать так чтобы все режимы переключались по нажатии кнопки
скетч взял отсюда там http://www.youtube.com/watch?v=Z_CYSAE8UAs
в самай раз все работает, мне надо зделать так чтобы все режимы переключались по нажатии кнопки
скетч взял отсюда там http://www.youtube.com/watch?v=Z_CYSAE8UAs
maksim хотел сказать что мой код, который я показал Вам для примера, будет работать только в "идеальных" условиях. И указал причины почему он может работать некорректно.