Почему мой программный код для Arduino не работает должным образом?

Как исправить код для возможности создания эффекта "Бегущие огни с одним общим циклом" в Arduino, так чтобы светодиоды мигали поочередно, а не загорались постоянно?
  • 29 июля 2024 г. 10:13
Ответы на вопрос 2
Существует несколько возможных причин, по которым ваш программный код для Arduino может не работать должным образом:

1. Ошибка в логике программы: возможно, вы ошиблись при написании логики своей программы, что приводит к неправильному выполнению действий.

2. Неправильное подключение светодиодов: убедитесь, что светодиоды подключены правильно к плате Arduino и что используются правильные пины.

3. Ошибки в синтаксисе: проверьте ваш код на наличие ошибок в синтаксисе, таких как неправильное использование скобок, точек с запятой и т. д.

Чтобы исправить ваш код и создать эффект "Бегущие огни с одним общим циклом" в Arduino, вам нужно сделать следующее:

```c
int leds[] = {2, 3, 4, 5, 6, 7}; // Пины, к которым подключены светодиоды
int numLeds = sizeof(leds) / sizeof(leds[0]); // Количество светодиодов
int currentLed = 0; // Текущий активный светодиод

void setup() {
  for (int i = 0; i < numLeds; i++) {
    pinMode(leds[i], OUTPUT);
  }
}

void loop() {
  digitalWrite(leds[currentLed], LOW); // Выключаем текущий светодиод
  currentLed = (currentLed + 1) % numLeds; // Переходим к следующему светодиоду
  digitalWrite(leds[currentLed], HIGH); // Включаем новый светодиод
  delay(100); // Задержка между переключениями
}
```

Этот код позволит вам создать эффект бегущих огней, где светодиоды будут мигать поочередно.
Судя по коду 
lastTime = 0;
должно быть внутри
if (millis() - lastTime > loopTime){
// ...
};

Иначе оно раз в цикл принимает значение millis(), потом сразу проскакивает цикл и обнуляется.
Похожие вопросы