Как записать время работы диода и как потом узнать сколько он работал
- Войдите на сайт для отправки комментариев
Сб, 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