Skip to content

loop() code optimization #1

Description

@sbasmanov

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions