Arduino инфинити тон - PullRequest
       7

Arduino инфинити тон

0 голосов
/ 23 мая 2018

Я делаю детектор дыма.Когда он обнаруживает дым, он должен предупредить зуммер.Есть ли какой-нибудь способ, которым я мог бы заставить это гудеть навсегда до внешнего прерывания, такого как перезапуск pin?Или я могу просто удалить синхронизацию из функции tone ().Вот код, который я использую.

int sensorValue;

int digitalValue;
int green = 8;
int red = 7;

void setup(){

  Serial.begin(9600);

  pinMode( 0, INPUT);
  pinMode(green, OUTPUT);
  pinMode(red, OUTPUT);


}

void start(){
    digitalWrite(green, HIGH);
}

void loop() {

sensorValue = analogRead(0);       
digitalValue = digitalRead(0); 

Serial.println(sensorValue,DEC);  
Serial.println(digitalValue,DEC);

delay(2000);                    
  if(analogRead(0) < 100){
    tone(9,200,1000);
    digitalWrite(red,HIGH);
  }
 }

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Воспроизведение звука "навсегда" очень просто:

if(analogRead(A0) < 100 ) {
  tone(9,2000); // once triggered, will play the sound forever
}

Чтобы отключить его, вам, кажется, нравится кнопка RESET.Поэтому нет необходимости звонить

noTone(9);

Кстати: как насчет чтения ссылки ?

0 голосов
/ 19 июня 2018

Если вы действительно хотите использовать прерывания, вы не указали, с какой платой вы работаете, но для 2 3 контакта можно прикрепить как прерывания и просто вызвать функцию, которая отключает тональный сигнал, проверьте это: attachinterrupt

0 голосов
/ 23 мая 2018

Существует множество способов:

Изменить логику, которая активирует зуммер.

while (analogRead(0) < 100){
  tone(9,200,1000);
}

Просто используйте бесконечный цикл:

while (1) {
  tone(9,200,1000);
}

Сброс Arduinoчтобы выйти из бесконечного цикла.

Вариантом этого будет замена (1) кодом, который проверяет вывод для выхода из цикла или считывает датчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...