Как записать время работы диода и как потом узнать сколько он работал
- Войдите на сайт для отправки комментариев
Сб, 21/09/2013 - 17:21
Добрый день!
Сразу скажу, что в ардуино новичек. Возникла идейка у меня одна. Имеем мы 4 диода и четыре кнопки. При нажатии определенной кнопки, загарается определенный диод, другие тухнут.
Вот код, который имеется сейчас.
#define LED1 13 #define LED2 12 #define LED3 11 #define LED4 10 #define BUTTON1 9 #define BUTTON2 7 #define BUTTON3 6 #define BUTTON4 5 int val1 = 0; int val2 = 0; int val3 = 0; int val4 = 0; int old_val1 = 0; int old_val2 = 0; int old_val3 = 0; int old_val4 = 0; int state1 = 0; int state2 = 0; int state3 = 0; int state4 = 0; void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(BUTTON3, INPUT); pinMode(BUTTON4, INPUT); } void loop(){ val1 = digitalRead(BUTTON1); val2 = digitalRead(BUTTON2); val3 = digitalRead(BUTTON3); val4 = digitalRead(BUTTON4); if ((val1 == HIGH) && (old_val1 == LOW)) { state1 = 1 - state1; state2 = 0; state3 = 0; state4 = 0; delay(40); } old_val1 = val1; if (state1 == 1) { digitalWrite(LED1, HIGH); } else { digitalWrite(LED1, LOW); } if ((val2 == HIGH) && (old_val2 == LOW)) { state2 = 1 - state2; state1 = 0; state3 = 0; state4 = 0; delay(40); } old_val2 = val2; if (state2 == 1) { digitalWrite(LED2, HIGH); } else { digitalWrite(LED2, LOW); } if ((val3 == HIGH) && (old_val3 == LOW)) { state3 = 1 - state3; state1 = 0; state2 = 0; state4 = 0; delay(40); } old_val3 = val3; if (state3 == 1) { digitalWrite(LED3, HIGH); } else { digitalWrite(LED3, LOW); } if ((val4 == HIGH) && (old_val4 == LOW)) { state4 = 1 - state4; state1 = 0; state2 = 0; state3 = 0; delay(40); } old_val4 = val4; if (state4 == 1) { digitalWrite(LED4, HIGH); } else { digitalWrite(LED4, LOW); } }
Требуется, чтобы время работы определенного диода сохранялось где-то. А потом по запросу его можно было посмотреть. Прошу помощи в решении данного вопроса. Пока никак не пойму можно ли такое организовать. И создается у меня ощущение, что я изначально пошел не тем путем..
При нажатии кнопки загорвется светодиод и включается таймер. Когда гаснет диод данные с таймера записываем в EEPROM. Если нужно при длительном нажатии кнопки (как возможный вариант) показания выводятся на lcd.
"При нажатии кнопки загорвется светодиод и включается таймер. Когда гаснет диод данные с таймера записываем в EEPROM."
Не подскажете как это организовать?
http://arduino.ru/Reference/Millis
При нажатии на кнопку(зажигаем светодиод) - записываем текущее значение millis() (допустим как в примере time = millis();).
При нажатии на кнопку(тушим светодиод) - считаем разницу во времени millis()-time;
О том как записать данные в EEPROM написано здесь
http://arduino.ru/forum/programmirovanie/zapis-v-eeprom