Официальный сайт компании Arduino по адресу arduino.cc
Счетчик при нажатии на кнопку
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 01/01/2015 - 06:51
Посчитать количество нажатий на кнопку,
вывести на компьютер
#include <EEPROM.h> int i; volatile int stop1 = HIGH; void setup() { pinMode(2, INPUT); //кнопка //attachInterrupt(0, blink, CHANGE); //прерывание Serial.begin(9600); i = EEPROM.read(0); Serial.println(i); } void loop() { //digitalWrite(2, stop1); if (digitalRead(2)==HIGH){ //нажатие кнопки EEPROM.write(0, i+1); delay(500); i = EEPROM.read(0); } //detachInterrupt(0); } /*void blink() { stop1 =! stop1; }*/
Однако если удерживать кнопку более 0,5 сек то цикл повторяется и значение нажатие кнопки не соответстввует действительному
Попытался подключить функцию прерывания (без delay) но ничего не вышло цикл не останавливается
Еще трудность возникла что значение i не сохраняется в памяти и пришлось строчку i = EEPROM.read(0); повторить два раза.
впрочем i = EEPROM.read(0); в цикле можно не указывать, это ни начто не влияет. а вот если в setup пропустить то даже при написание этой строчки в цикле, на печать выводит значение 0
Писец какая странная конструкция. Вопрос 1.Нафига EEPROM? 2.Что сериал делает в сетапе? 3.Где тут прерывание? 4.Читать http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku эту тему не пробовал? Весь код бред какой-то.
И про дребезг тоже почитай.
eeprom, очевидно, для того, чтобы не потерять количество нажатий при выключении. сериал в сетапе выводит количество нажатий, которое было до предыдущего выключения. прерывания действительно не причем, так они и закоментарены. если разобраться, то никакая не "писец какая странная" конструкция, а вполне обычная.
впрочем i = EEPROM.read(0); в цикле можно не указывать, это ни начто не влияет. а вот если в setup пропустить то даже при написание этой строчки в цикле, на печать выводит значение 0
в цикле чтение можно не указывать, заменив
на
вот я убрал delay() и сделал boolean in для триггернего режима и цикл не будет повторятся.