Нет, в прямом. В выше приведенном коде не определена antidelay()
Оу, когда переписывал про него забыл.
#define BTN_PIN 3
void antidelay(uint32_t timing) {
timing += millis();
while(millis() <=timing);
}
bool checkButton() {
static bool pState;
bool state = !digitalRead(BTN_PIN);
if (pState != state) {
pState = state;
return state;
}
return false;
}
void toggleLED() {
antidelay(1000);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(8, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(1200);
}
void setup() {
Serial.begin(115200);
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (checkButton()) toggleLED();
}
Исправленный код
После подачи питания ничего не работает. Скетч и фото не соответствует действительности!
У меня же работает, и я вроде даже объяснил как, почему не соответствует действительности?
Смоделируйте свою схему, вставьте скетч, увидите результат. https://wokwi.com
В скетче кнопка и светодиод, а на фото? Вы пришли спорить или чему-то научиться решить проблему?
На фото тоже кнопка и светодиод, другие там стоят и жить насколько я знаю мешать не должны, я не спорю, просто не могу понять почему то, что работает у меня не работает у вас
Дубль два!
#define BTN_PIN 3
void antidelay(uint32_t timing) {
timing += millis();
while(millis() <=timing);
}
bool checkButton() {
static bool pState;
bool state = !digitalRead (3);
if (pState != state) {
pState = state;
return state;
}
return false;
}
void toggleLED() {
antidelay(1000);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(8, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(1200);
}
void setup() {
Serial.begin(115200);
pinMode(3, INPUT_PULLUP);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
if (checkButton()) toggleLED();
}
Поздравляю, ваш дубль 2 сработал)
Извините, что-то конкретно я однако сегодня туплю, такая программа работать должна
Не программа а код*
Ну, тогда поздравляю. Вопрос решён?
Не совсем, она пока всë равно работает не так как надо, если что извиняюсь за назойливость, она по нажатию кнопки включается на одно повторение, а должна цикл со светодиодами гнать до второго нажатия
Одного не пойму - чего такого “анти” в функции antidelay()? )))
А в чём заключается “цикл”?
Если интернет не врëт, то с такой функцией останавливается не вся программа, а определëнная часть заключëнная в скобках
antidelay(1000);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(7, LOW);
antidelay(700);
digitalWrite(8, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(700);
digitalWrite(7, HIGH);
antidelay(70);
digitalWrite(8, LOW);
antidelay(1200);
Включение и выключения светодиодов, вначале одного, после второго с одинаковыми промежутками включения и отключения, но горят один за другим, а не одновременно
врет ![]()
Значит врëт.
