Не отрабатывает один case

trek1203

✩✩✩✩✩✩✩
31 Окт 2024
1
0
Оформи код соответствующим тэгом, см. Правила
А конкретно в функции melody пропускает case 1(он самый последний). Единица в функцию попадает, но содержимое кейса не отрабатывается. С остальными кейсами проблем нет.



#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int speaker=9;
int lastButton = 0;
int currentButton = 0;
const int Button = 2;
int numMelody=1;
const int RGBred=5;
const int RGBgreen=6;
const int RGBblue=10;
void setup() {
pinMode( 8, OUTPUT );
mySwitch.enableReceive(1);
pinMode( 2, INPUT );
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop()
{
currentButton = debounce(lastButton);
if(currentButton==1&&lastButton==0) //Выбор мелодии
{
numMelody++;
if (numMelody == 5) numMelody =1;
melody(numMelody);
}
if( mySwitch.available() ){ //Считывание состояния передатчика
int value = mySwitch.getReceivedValue();
if( value == B1000 )
{digitalWrite( 8, 0 );
}
else if( value == B0100 )
{digitalWrite( 8, 1 );
delay(5);
melody(numMelody);}
mySwitch.resetAvailable();
}
lastButton=currentButton;
}
bool debounce(bool last)
{
bool current = digitalRead(Button);
if(last!=current)
{
delay(5);
current=digitalRead(Button);
return current;
}
}
void melody(int number)
{

switch(number)
{
case 2: //SuperMario
tone(9,1318,150);
delay(150);
Blink();
tone(9,1318,300);
delay(300);
tone(9,1318,150);
Blink();
delay(300);
tone(9,1046,150);
delay(150);
Blink();
tone(9,1318,300);
delay(300);
tone(9,1568,600);
delay(600);
Blink();
tone(9,784,600);
delay(600);
tone(9,1046,450) ; // 2й такт
delay(450);
tone(9,784,150);
delay(450);
tone(9,659,300);
Blink();
delay(450);
tone(9,880,300);
delay(300);
tone(9,987,150);
delay(300);
tone(9,932,150);
Blink();
delay(150);
tone(9,880,300);
delay(300);
Blink();
tone(9,784,210); // 3й такт
delay(210);
tone(9,1318,210);
delay(210);
tone(9,1568,150);
Blink();
delay(150);
tone(9,1750,300);
Blink();
delay(300);
tone(9,1396,150);
delay(150);
tone(9,1568,150);
delay(300);
tone(9,1318,300);
Blink();
delay(300);
tone(9,1046,150);
delay(150);
tone(9,1174,150);
Blink();
delay(150);
tone(9,987,450);
delay(450);
Blink();
tone(9,1046,450); // 4й такт
delay(450);
tone(9,784,150);
delay(450);
tone(9,659,300);
delay(450);
Blink();
tone(9,880,300);
delay(300);
Blink();
tone(9,987,150);
delay(300);
tone(9,932,150);
delay(150);
tone(9,880,300);
delay(300);
Blink();
tone(9,784,210); // 5й такт
delay(210);
tone(9,1318,210);
delay(210);
Blink();
tone(9,1568,150);
delay(150);
tone(9,1750,300);
delay(300);
tone(9,1396,150);
Blink();
delay(150);
tone(9,1568,150);
delay(300);
tone(9,1318,300);
delay(300);
Blink();
tone(9,1046,150);
delay(150);
tone(9,1174,150);
delay(150);
tone(9,987,450);
Blink();
delay(600);
tone(9,1568,150); // 6ой Спуск вниз
delay(150);
tone(9,1480,150);
Blink();
delay(150);
tone(9,1396,150);
delay(150);
tone(9,1244,300);
Blink();
delay(300);
tone(9,1318,150);
delay(300);
tone(9,830,150);
delay(150);
tone(9,880,150);
delay(150);
Blink();
tone(9,1046,150);
delay(300);
tone(9,880,150);
Blink();
delay(150);
tone(9,1046,150);
delay(150);
Blink();
tone(9,1174,150);
delay(150);
delay(300); // 7ой
tone(9,1568,150);
delay(150);
Blink();
tone(9,1480,150);
delay(150);
tone(9,1396,150);
delay(150);
Blink();
tone(9,1244,300);
delay(300);
tone(9,1318,150);
delay(300);
tone(9,2093,300);
delay(300);
Blink();
tone(9,2093,150);
delay(150);
tone(9,2093,600);
Blink();
delay(600);
break;
case 4: //Jeremi Blum
Blink();
tone(9, 440, 250);
delay(250);
tone(9, 165, 250);
delay(250);
Blink();
tone(9, 440, 250);
delay(250);
delay(250);
Blink();
tone(9, 440, 250);
delay(250);
tone(9, 165, 250);
Blink();
delay(250);
tone(9, 440, 250);
delay(250);
Blink();
delay(250);
tone(9, 330, 125);
delay(125);
tone(9, 294, 125);
delay(125);
Blink();
tone(9, 262, 125);
delay(124);
tone(9, 494, 125);
delay(125);
Blink();
tone(9, 440, 125);
delay(125);
tone(9, 494, 125);
delay(125);
tone(9, 262, 125);
Blink();
delay(125);
tone(9, 294, 125);
delay(125);
Blink();
tone(9, 330, 250);
delay(250);
tone(9, 165, 250);
delay(250);
Blink();
tone(9, 440, 250);
delay(250);
delay(250);
Blink();
break;
case 3: //star wars
const byte COUNT_NOTES = 39;
int frequences[COUNT_NOTES] = {
392, 392, 392, 311, 466, 392, 311, 466, 392,
587, 587, 587, 622, 466, 369, 311, 466, 392,
784, 392, 392, 784, 739, 698, 659, 622, 659,
415, 554, 523, 493, 466, 440, 466,
311, 369, 311, 466, 392
};
int durations[COUNT_NOTES] = {
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 250, 100, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 750
};
for (int i = 0; i <= COUNT_NOTES; i++ ) {
Blink(); // Цикл от 0 до количества нот
tone(9, frequences, durations * 2); // Включаем звук, определенной частоты
delay(durations * 2); // Дауза для заданой ноты
noTone(9);} // Останавливаем звук
break;
case 1: //ytro nas vstrechaet rassvetom
tone(9, 700, 300);
Serial.println("inside");
delay(600);
Blink();
tone(9, 700, 300);
delay(600);
tone(9, 780, 150);
delay(300);
Blink();
tone(9, 700, 150);
delay(300);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
Blink();
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 460, 450);
delay(600);
Blink();
tone(9, 350, 450);
delay(600);
delay(600);
tone(9, 350, 450);
delay(600);
Blink();
tone(9, 460, 450);
delay(600);
tone(9, 520, 150);
delay(300);
tone(9, 590, 150);
Blink();
delay(300);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
Blink();
tone(9, 520, 150);
delay(300);
tone(9, 700, 1350);
delay(1800);
Blink();
tone(9, 700, 300);
delay(600);
tone(9, 700, 300);
Blink();
delay(600);
tone(9, 780, 150);
delay(300);
tone(9, 700, 150);
delay(300);
Blink();
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
Blink();
delay(300);
tone(9, 460, 450);
delay(600);
tone(9, 350, 450);
delay(600);
Blink();
delay(600);
tone(9, 350, 450);
delay(600);
Blink();
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
Blink();
delay(300);
tone(9, 700, 450);
delay(600);
Blink();
tone(9, 590, 150);
delay(300);
Blink();
tone(9, 520, 150);
delay(300);
tone(9, 460, 1350);
Blink();
break;
}
RGBoff();
Serial.println(number);
}
void Blink()
{
int red = random(0, 255);
int green =random(0, 255);
int blue =random(0, 255);
analogWrite(RGBred, red);
analogWrite(RGBgreen, green);
analogWrite(RGBblue, blue);
}
void RGBoff()
{
digitalWrite(RGBgreen,0);
digitalWrite(RGBred,0);
digitalWrite(RGBblue,0);
}