программирование светодиода ардуино, включение и выключение
Я хочу, чтобы светодиод загорелся в начале и оставался таким некоторое время, а затем погас, поэтому я написал:
int led=13;
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
digitalWrite(led,HIGH);
delay (5000);
digitalWrite (led,LOW);
}
насколько я понимаю, он должен начинаться с высокого уровня, то есть с digitalWrite(led,HIGH)... и оставаться в таком состоянии в течение задержки 5000 мкс (5000), затем он должен выключиться с помощью digitalWrite(led,LOW). но почему он не работает, сначала он гаснет на несколько секунд, а затем остается включенным... что я понимаю неправильно в этих простых шагах ????
@sumer fattoum, 👍0
Обсуждение3 ответа
Он немедленно зацикливается, от низкого уровня записи до высокого уровня записи. Добавьте вторую задержку после низкого уровня, чтобы цикл не начался снова.
Спасибо, можете ли вы объяснить мне этот цикл и почему он так работает? Насколько я понимаю, он должен заканчиваться отключением цифровой записи, потому что это последний шаг в программе., @sumer fattoum
Я добавил таймер после низкого уровня... но происходит вспышка... она повторяется... но я хочу, чтобы она сначала была включена в течение определенного времени, а затем выключалась и оставалась выключенной., @sumer fattoum
Эта задержка не даёт ничего, кроме траты 5 секунд... вам нужно сделать так:
void loop() {
digitalWrite(led,HIGH);
delay (2500);
digitalWrite (led,LOW);
delay (2500);
}
Код выполняется последовательно... в вашем коде после выключения светодиода он немедленно включает его снова и ждет 5 секунд... это настолько объемно, что вы этого не замечаете.
Я применил это, но оно мигает, не останавливаясь... Я хочу, чтобы оно останавливалось через несколько секунд после включения., @sumer fattoum
Спасибо за объяснение, что это так быстро, что я не замечу., @sumer fattoum
Функция цикла, как следует из её названия, будет повторяться снова и снова. Вам необходимо установить флаг, например, целое число, которое подсчитывает количество выполнений цикла. Затем добавьте оператор if для проверки и выполнения., @Saeid Yazdani
«Цикл()» будет повторяться снова и снова, включая и выключая светодиод. Если вы хотите включить светодиод только один раз, поместите команды для включения светодиода в раздел «setup()»:
void setup() {
pinMode(led,OUTPUT);
digitalWrite(led,HIGH);
delay (5000);
digitalWrite (led,LOW);
}
void loop() {
}
Другой способ — добавить переменную для подсчёта количества вспышек светодиода. Я скопировал следующий скетч отсюда отсюда
int ledPin = 13; // Светодиод подключен к цифровому выводу 13
int alreadyBlinked = 0;
// Метод setup() запускается один раз при запуске скетча
void setup() {
pinMode(ledPin, OUTPUT); // инициализируем цифровой вывод как выход:
}
// метод loop() выполняется снова и снова,
// пока у Arduino есть питание
void loop()
{
if(alreadyBlinked == 0)
{
digitalWrite(ledPin, HIGH); // включаем светодиод
delay(5000); // ждем пять секунд
digitalWrite(ledPin, LOW); // выключить светодиод
alreadyBlinked = 1;
}
}
Если переменная «alreadyBlinked» установлена в значение 1, светодиод больше не включится.
thnx, я понял, я просто хотел понять структуру программы и инструкции, теперь для большего понимания цикла я добавил once void loop(){ digitalWrite(led,HIGH); digitalWrite(led,LOW);} и один раз высокий, затем низкий, но почему в обоих случаях светодиод всегда остается включенным ???, @sumer fattoum
Вы проверили имена переменных? Светодиод правильно подключен? Один вывод светодиода должен быть подключен к выходу Arduino, а другой — к земле. В первом варианте digitalwrite(led,LOW) — последняя команда, поэтому светодиод должен оставаться выключенным после настройки. Во втором варианте _digitalWrite(ledPin, LOW)_ выполняется до _alreadyBlinked = 1_, и с этого момента светодиод больше не загорается. Завтра попробую этот скетч., @mguima
да, я проверил. теперь я понял, @sumer fattoum
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Управление цифровой адресной светодиодной лентой RGB 12 В с помощью Arduino
- Мигните светодиодом 5 раз с помощью цикла for
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
при сбросе Arduino он начинает выполнять код. ... он выполняет весь код в
void setup()только один раз, затем он выполняет весь код вvoid loop()и повторяет выполнение кода вvoid loop()снова и снова, пока вы не сбросите Arduino или не выключите его. .... если вы хотите, чтобы Arduino сделал что-то только один раз, то **не** помещайте код вvoid loop(), @jsotolaСпасибо, можете ли вы ответить на мой другой вопрос здесь. https://arduinoprosto.ru/q/47858/arduino-led-flashes-with-one-button-press/48164?noredirect=1#comment95932_48164, @sumer fattoum