Buongiorno a tutti,
Sto impazzendo con un semplice "Switch Case" che non "accetta" alcuni "case".
Ho provato anche ad impostare manualmente la variabile count = 12 ad inizio loop, prima dello switch, ma non c'è verso, il case 12 non mi viene eseguito. Mi potete per favore dare una mano a risolvere?
Si tratta di giochi di luce, ecco il codice:
#include <Wire.h>
#define blu_1 2
#define red_1 3
#define green_1 4
#define blu_2 5
#define red_2 6
#define green_2 7
#define blu_3 8
#define red_3 9
#define green_3 10
#define blu_4 11
#define red_4 12
#define green_4 13
#define micro A1
int count = 0;
int ritardo = 5;
int ritardo_rotor = 100;
int ritardo_fade = 5;
int r = 0;
int g = 0;
int b = 0;
void setup() {
Serial.begin(9600);
Wire.begin(0x04); //indirizzo I2C dello Slave
Wire.onReceive(receiveEvent);
pinMode (micro, INPUT);
}
void loop() {
Serial.println (count);
count = 12;
switch (count) {
case 1:
analogWrite (red_1, 255);
analogWrite (green_1, 0);
analogWrite (blu_1, 0);
break;
case 2:
analogWrite (red_3, 0);
analogWrite (green_3, 255);
analogWrite (blu_3, 0);
break;
case 3:
analogWrite (red_4, 0);
analogWrite (green_4, 0);
analogWrite (blu_4, 255);
break;
case 4:
analogWrite (blu_1, 0);
analogWrite (blu_2, 0);
analogWrite (blu_3, 0);
analogWrite (blu_4, 0);
analogWrite (green_1, 0);
analogWrite (green_2, 0);
analogWrite (green_3, 0);
analogWrite (green_4, 0);
for (r=0; r<=255; r++){
analogWrite (red_1, r);
analogWrite (red_2, r);
analogWrite (red_3, r);
analogWrite (red_4, r);
delay(ritardo_fade);
}
for (r=255; r>=0; r--){
analogWrite (red_1, r);
analogWrite (red_2, r);
analogWrite (red_3, r);
analogWrite (red_4, r);
delay(ritardo_fade);
}
break;
case 5:
analogWrite (blu_1, 0);
analogWrite (blu_2, 0);
analogWrite (blu_3, 0);
analogWrite (blu_4, 0);
analogWrite (red_1, 0);
analogWrite (red_2, 0);
analogWrite (red_3, 0);
analogWrite (red_4, 0);
for (r=0; r<=255; r++){
analogWrite (green_1, r);
analogWrite (green_2, r);
analogWrite (green_3, r);
analogWrite (green_4, r);
delay(ritardo_fade);
}
for (r=255; r>=0; r--){
analogWrite (green_1, r);
analogWrite (green_2, r);
analogWrite (green_3, r);
analogWrite (green_4, r);
delay(ritardo_fade);
}
break;
case 6:
analogWrite (red_1, 0);
analogWrite (red_2, 0);
analogWrite (red_3, 0);
analogWrite (red_4, 0);
analogWrite (green_1, 0);
analogWrite (green_2, 0);
analogWrite (green_3, 0);
analogWrite (green_4, 0);
for (r=0; r<=255; r++){
analogWrite (blu_1, r);
analogWrite (blu_2, r);
analogWrite (blu_3, r);
analogWrite (blu_4, r);
delay(ritardo_fade);
}
for (r=255; r>=0; r--){
analogWrite (blu_1, r);
analogWrite (blu_2, r);
analogWrite (blu_3, r);
analogWrite (blu_4, r);
delay(ritardo_fade);
}
break;
case 7:
analogWrite (blu_1, 0);
analogWrite (blu_2, 0);
analogWrite (blu_3, 0);
analogWrite (blu_4, 0);
analogWrite (green_1, 0);
analogWrite (green_2, 0);
analogWrite (green_3, 0);
analogWrite (green_4, 0);
analogWrite (red_1, 255);
delay(ritardo_rotor);
analogWrite (red_1, 0);
analogWrite (red_2, 255);
delay(ritardo_rotor);
analogWrite (red_2, 0);
analogWrite (red_3, 255);
delay(ritardo_rotor);
analogWrite (red_3, 0);
analogWrite (red_4, 255);
delay(ritardo_rotor);
analogWrite (red_4, 0);
break;
case 8:
analogWrite (blu_1, 0);
analogWrite (blu_2, 0);
analogWrite (blu_3, 0);
analogWrite (blu_4, 0);
analogWrite (red_1, 0);
analogWrite (red_2, 0);
analogWrite (red_3, 0);
analogWrite (red_4, 0);
analogWrite (green_1, 255);
delay(ritardo_rotor);
analogWrite (green_1, 0);
analogWrite (green_2, 255);
delay(ritardo_rotor);
analogWrite (green_2, 0);
analogWrite (green_3, 255);
delay(ritardo_rotor);
analogWrite (green_3, 0);
analogWrite (green_4, 255);
delay(ritardo_rotor);
analogWrite (green_4, 0);
break;
case 9:
analogWrite (red_1, 0);
analogWrite (red_2, 0);
analogWrite (red_3, 0);
analogWrite (red_4, 0);
analogWrite (green_1, 0);
analogWrite (green_2, 0);
analogWrite (green_3, 0);
analogWrite (green_4, 0);
analogWrite (blu_1, 255);
delay(ritardo_rotor);
analogWrite (blu_1, 0);
analogWrite (blu_2, 255);
delay(ritardo_rotor);
analogWrite (blu_2, 0);
analogWrite (blu_3, 255);
delay(ritardo_rotor);
analogWrite (blu_3, 0);
analogWrite (blu_4, 255);
delay(ritardo_rotor);
analogWrite (blu_4, 0);
break;
case 10:
int sound = analogRead(micro);
int m_sound = map(sound, 0, 1024, 0, 255);
//Serial.println (sound);
//Serial.println (m_sound);
if (m_sound > 20){
analogWrite (red_1, m_sound);
analogWrite (red_2, m_sound);
analogWrite (red_3, m_sound);
analogWrite (red_4, m_sound);
}
else {
analogWrite (red_1, 0);
analogWrite (red_2, 0);
analogWrite (red_3, 0);
analogWrite (red_4, 0);
}
break;
case 12:
analogWrite (red_2, 255);
break;
}
}
void receiveEvent(int data)
{
count = Wire.read();
}