Arduino_speedometer icon indicating copy to clipboard operation
Arduino_speedometer copied to clipboard

loop() code optimization

Open sbasmanov opened this issue 8 years ago • 0 comments

Если я не ошибаюсь, запись в 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;    //обнулить расстояние
  }
}

sbasmanov avatar Nov 10 '17 06:11 sbasmanov