Запуск и остановка проблескового маячка и сирены кнопкой
- Войдите на сайт для отправки комментариев
Ср, 11/11/2020 - 18:16
Здравствуйте, мне нужно чтобы после нажатия на одну кнопку, светодиод начинал мигать, а зуммер издавать периодический сигнал. Выключить маячок с помощью второй кнопки. Как сделать чтоб мигание было постоянное и я смог выключить маячок?
void setup()
{
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(5, INPUT);
pinMode(6, OUTPUT);
}
void loop()
{
if (digitalRead(3)==HIGH){
digitalWrite(6,HIGH);
digitalWrite(4,HIGH);
delay(300);
digitalWrite(6,LOW);
digitalWrite(4,LOW);
delay(300);
digitalWrite(6,HIGH);
digitalWrite(4,HIGH);
}
else
if (digitalRead(5)==HIGH){
digitalWrite(4,LOW);
digitalWrite(6,LOW);}
взять активный зуммер и запитать его параллельно с маячком
А препод методичку дал какуюнить? Чо там написано?
Чо там написано?
Там поди написано, что код должен, для начала, компилироваться, а у ТС с этим напряг :-(
Выключить маячок с помощью второй кнопки.
A нафига Вам вторая кнопка? Логично было бы тыцнул кнопку - мигалка замигала, еще раз тыцнул - перестала мигать. а? Но при написании кода надо учесть, что мигалка - зло, если она не у скорой помощи. ;)
напрмер так:
#define BUTTON_PRESSED_TIME 200 #define BUTTON_PIN 3 #define MIGALKA 4 #define SIRENA 6 #define PERIOD_ON_OFF 300 bool isButtonPressed(){//подразумеваем, что вход подтянут к питанию static uint32_t timer = 0; if(!digitalRead(BUTTON_PIN) && timer == 0)timer = millis(); if(timer != 0 && digitalRead(BUTTON_PIN)){ bool res = (millis() - timer >= BUTTON_PRESSED_TIME)? true:false; // как вариант bool res = (millis() - timer >= BUTTON_PRESSED_TIME); timer = 0; return res; } return false; } void controlMigalka( bool state){ static uint32_t timer = millis(); static bool _state = false; if(!state){ driveOutput(_state = false); return; } else{ if(millis() - timer >= PERIOD_ON_OFF){ driveOutput(_state = !_state); timer = millis(); } else return; } } void driveOutput(bool state){ digitalWrite(MIGALKA, state); digitalWrite(SIRENA, state); } void setup() { } // Add the main program code into the continuous loop() function void loop() { static bool migalka_state = false; if(isButtonPressed())migalka_state = !migalka_state; controlMigalka(migalka_state); }По идее должно работать, хотя я не проверял по причине не совсем трезвого состояния :)
По идее должно работать, хотя я не проверял по причине не совсем трезвого состояния :)
Не будет - пины не настроены ))
Не будет - пины не настроены ))