Нужна помощь!
- Войдите на сайт для отправки комментариев
Ср, 21/01/2015 - 02:34
При нажатии на кнопку «Старт\Стоп» на индикатор выводится случайное число от 0000 до 9999 через заданный промежуток времени (от 5 до 7 сек.). При повторном нажатии вывод приостанавливается.
Написал скейтч, но столкнулся с проблеммой, при повторном нажатии приходиться кнопку держать 5секк, что бы остановить вывод чисел. что мне делать
long randNumber; #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int ButPin = 8; int regim=1; int flag=0; void setup() { lcd.begin(16, 2); Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { if(digitalRead(ButPin)==HIGH&&flag==0) { regim++; flag=1; if(regim>2) { regim=1; } } if(digitalRead(ButPin)==LOW&&flag==1) { flag=0; } if(regim==1) {lcd.noDisplay(); } if(regim==2)//второй режим { lcd.display(); lcd.setCursor(0, 0); randNumber = random(9999); lcd.println(randNumber); delay(500) ; } }
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
для чего переменные режим и флаг ?
программа должна каждые 5 сек генерировать случайное число, а после нажати кнопки ничего не делать и погасить экран ?
да
я понял , что нужно обойти оператор delay верно?
Ага. Завести переменную типа unsigned long и в неё записывать millis. Всё что нужно задержать, поместить внутрь условия if(millis()-timestamp>=time), обновлять переменную (unsigned long timestamp) тоже внутри условия. По другому называется Blink without delay(). А ещё человек 15 за месяц эту тему спрашивают, в среднем. AWGTHTGTTA?
Да, возможно я зануда, но regim надо переименовать в mode. Напrягает.
строка 40 и дальше - повтор , руки корявые :)
в строку 23 - delay( 30 ); - можно и так дребезг победить
Спасибо, но запускаю Ваш код в протеусе, и нечего не работает
кнонка, нано - смотрите в мониторе
выключается.... а снова не запускается :( , надо искать :)
вот так работает, но нужно бороться с дребезгом - не чётко режим переключается
Спасибо, все вроде работает, но запуск самого процесса идет тоже с задержкой, можно ли это как то убрать?
можно