Arduino_speedometer
Arduino_speedometer copied to clipboard
loop() code optimization
Если я не ошибаюсь, запись в eeprom будет идти каждый цикл при простое более 2 сек. Так же, можно не делать лишних вызовов, если нет изменений. Как-то так:
void loop() {
if(SPEED) {
int pos=map(SPEED, min_speed, max_speed, 180, 0); //перевести значение от минимума до максимума в угол поворота сервы (от 0 до 180)
servo.write(pos); //повернуть серву
disp.digit4(DIST,50); //вывод расстояния на дисплей
if ((millis()-lastturn)>2000){ //если сигнала нет больше 2 секунды
SPEED=0; //считаем что SPEED 0
EEPROM.write(0,(float)DIST*10.0); //записываем DIST во внутреннюю память. Сделал так хитро, потому что внутренняя память не любит частой перезаписи. Также *10, чтобы сохранить десятую долю
}
}
if (digitalRead(8)==1) { // Если кнопка нажата
DIST=0; //обнулить расстояние
}
}