подскажите пожалуйста, нужно чтобы при подаче напряжения на вход А0 начинал моргать светодиод на выходе 10. моргал 5 секунд и гас, до тех пор пока снова не подашь напряжение . сделал только так чтобы он просто моргал при подаче напряжения на А0, а как дальше не могу разобраться. int potPin = A0; int ledPin = 10; void setup(){ pinMode(10,OUTPUT); } void loop(){ int val=analogRead(A0); if(val>1000){ digitalWrite(10,HIGH); delay(50); digitalWrite(10, LOW); delay(50); } else(val=0); { digitalWrite(10,LOW); } }
Плохо вставленный код мы не читаем. Я бы завел 1 "таймер" и флаг подачи напряжения. если текущее время меньше, чем время подачи напряжения + 5 сек И флаг напряжения есть, то мигать, иначе если напряжения на пине нет, то сбрасывать флаг напряжения. При этом если флаг напряжения был ложью, а напряжение на пине есть, то засечь время и выставить флаг напряжения. Как-то так)
Будет исполнено! Это из серии "Я нифига не понял, гуглить не буду, читать книжки тоже, лучше на форуме потуплю"
так нельзя только по правилам MISRA. А остальным можно. Я тоже иногда if ... else в одну строчку писал без фигурных скобок. Сейчас так не пишу.
Я тут "взял выходной" (Крюгер Бархатное 1Л + 0.5 Алтайское Бархатное) (ни тёщи ни семьи) и подобрел, решил помочь стоящему на нижней ступени, от меня, студенту, в восприятии Ардуино. Не ругайте, пожалуйста, товарищи педагоги, знаю, что не правильно, но иногда находит .... и по мотивам сообщения решил сворганить это Код (C++): #define PinNapryajenie A0 #define Svetodiod 10 uint32_t Timer; uint32_t TimerMiganie; uint8_t FlagNapryajenie; uint8_t FlagMiganie; const uint32_t VremyaMiganiya = 5000; const uint32_t IntervalMiganie = 500; void setup() { // put your setup code here, to run once: pinMode(Svetodiod, OUTPUT); } void loop() { // put your main code here, to run repeatedly: if (!FlagNapryajenie) { if (digitalRead(PinNapryajenie)) { Timer = millis(); FlagMiganie = true; FlagNapryajenie = true; } } if (FlagMiganie) { if (millis() - Timer < VremyaMiganiya) { if (millis() - TimerMiganie > IntervalMiganie) { digitalWrite(Svetodiod, !digitalRead(Svetodiod)); TimerMiganie = millis(); } } else { FlagMiganie = false; digitalWrite(Svetodiod, LOW); } } if (!digitalRead(PinNapryajenie)) FlagNapryajenie = false; } Может где косякнул, и не всё понял по задаче, но как есть. ТС, пробуй, отпишись!
Я тоже периодически нападаю с помощью) Я бы парочку ифов объединил бы, а так как по тексту, только я забыл рассказать как мигать без делея(