TimerFreeTone

Kaston
Offline
Зарегистрирован: 13.01.2018

 Очень срочно!

Помогите после включения пищалки у меня всё перестаёт работать.

Вот скетч:

#include "IRremote.h"
IRrecv irrecv(10);
decode_results results;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led=0;
#include <TimerFreeTone.h>
 
#define TONE_PIN 9
int melody[] = { 262, 196, 196, 220, 196, 0, 247, 262 };
int duration[] = { 250, 125, 125, 250, 250, 250, 250, 250 };
 
void setup (){
  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
pinMode(4,OUTPUT);
pinMode(9, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if ( irrecv.decode( &results )) { 
    Serial.println(results.value, HEX);
    
if (results.value==0xFF30CF&&led1==0){
  digitalWrite( 2, HIGH );led1=1;results.value=0;
}
if (results.value==0xFF30CF&&led1==1){
  digitalWrite( 2, LOW );led1=0;results.value=0;
}   
if (results.value==0xFF18E7&&led2==0){
  digitalWrite( 3, HIGH );led2=1;results.value=0;
}
if (results.value==0xFF18E7&&led2==1){
  digitalWrite( 3, LOW );led2=0;results.value=0;
}
if (results.value==0xFF7A85&&led3==0){
  digitalWrite( 4, HIGH );led3=1;results.value=0;
}
if (results.value==0xFF7A85&&led3==1){
  digitalWrite( 4, LOW );led3=0;results.value=0;
if (results.value==0xFFA25D){
   digitalWrite( 2, HIGH );
   delay(200);
   digitalWrite( 2, LOW );
     delay(200);
        digitalWrite( 3, HIGH );
   delay(200);
   digitalWrite( 3, LOW );
     delay(200);
        digitalWrite( 4, HIGH );
   delay(200);
   digitalWrite( 4, LOW );
     delay(200);
     digitalWrite( 3, HIGH );
   delay(200);
   digitalWrite( 3, LOW );
     delay(200);
      digitalWrite( 2, HIGH );
   delay(200);
   digitalWrite( 2, LOW );
     delay(200);
}
if (results.value==0xFFC23D){
  for (int thisNote = 0; thisNote < 8; thisNote++) { 
    TimerFreeTone(TONE_PIN, melody[thisNote], duration[thisNote]); 
    delay(25);
    }
  while(1);
  results.value=0;
  }
if (results.value==0xFF6897&&led==0){
     digitalWrite( 2, HIGH );
    digitalWrite( 3, HIGH );
  digitalWrite( 4, HIGH );led=1;results.value=0;
}
if (results.value==0xFF6897&&led==1){
   digitalWrite( 2, LOW );
   digitalWrite( 3, LOW );
  digitalWrite( 4, LOW );led=0;results.value=0;
 irrecv.resume();
 }
  
}
DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Что, по-вашему, делает while(1); ? Как только ответите на этот простой вопрос - сразу поймёте, почему всё перестаёт работать.

И да - вставляйте код правильно, на панели инструментов редактора сообщений есть кнопочка для вставки кода.

Kaston
Offline
Зарегистрирован: 13.01.2018

DIYMan пишет:

Что, по-вашему, делает while(1); ? Как только ответите на этот простой вопрос - сразу поймёте, почему всё перестаёт работать.

И да - вставляйте код правильно, на панели инструментов редактора сообщений есть кнопочка для вставки кода.

спасибо большое!