@hard111work

Простой скетч arduino не работает как надо?

Здравствуйте, я новичок в сфере arduino, и купил книгу Белова А.В. "arduino от азов программировани до создания практических устройств". В данной книге есть пример "Бегущие огни с одним общим циклом".
В соответствии со скетчем светодиоды должны загораться и гаснуть друг за другом, но у меня горят светодиод подключенный ко 2-му выводу постоянно, подскажите, пожалуйста, что может быть не так, благодарю!

const int buttonPin = 13;
const int loopTime = 200;

int loopStart = 2;
int loopStop = 10;
int loopStep = 1;

int thisPin;
unsigned long lastTime;

void setup () {
  for (int thisPin = 2; thisPin < 10; thisPin++ ){
    pinMode(thisPin, OUTPUT);
    digitalWrite(thisPin, 1);
  }
  pinMode(buttonPin, INPUT);
  thisPin = loopStart;
  lastTime = 0;
}
void loop (){
  if(lastTime == 0){
    digitalWrite(thisPin, LOW);
    lastTime = millis();
  }
  if (millis() - lastTime > loopTime){
    digitalWrite (thisPin, 1);
    thisPin += loopStep;
    if(thisPin == loopStop){
      if (digitalRead(buttonPin) == 1){
        loopStart=2; loopStop = 10; loopStep= 1;}
        else{loopStart= 9; loopStop=1; loopStep= -1;}
}
    thisPin = loopStart;
  }
  lastTime = 0;
}
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Судя по коду
lastTime = 0;
должно быть внутри
if (millis() - lastTime > loopTime){
// ...
};

Иначе оно раз в цикл принимает значение millis(), потом сразу проскакивает цикл и обнуляется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы