Salve, ho un problema con un codice, premetto che programmo in vb.net e con il c non mi ci trovo tanto, la parte logica c'è ma i codici scritti fino ad adesso non funzionano
#define DEBOUNCE_DELAY 300
#define TOGGLE_PIN 1
#define PATTERN_INDEX_MAX 2
#define LED_PIN 13
int patternIndex = 0;
bool patternToggled = true;
unsigned long lastDebounceTime;
void setup()
{
Serial.begin(9600);
attachInterrupt(TOGGLE_PIN, togglePattern, FALLING);
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
switch (patternIndex)
{
case 0:
simple;
break;
case 1:
simple1;
break;
default:
simple;
break;
}
if (patternToggled) {
patternToggled = false;
}
}
void togglePattern() {
if ((millis() - lastDebounceTime) > DEBOUNCE_DELAY)
{
lastDebounceTime = millis();
patternIndex++;
Serial.print(patternIndex);
if (patternIndex > PATTERN_INDEX_MAX)
{
patternIndex = 0;
Serial.print("0");
}
patternToggled = true;
}
}
void simple()
{
if (patternToggled)
{
exit;
}
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
if (patternToggled)
{
exit;
}
delay(1000);
Serial.print("Simple");
}
void simple1()
{
- In pratica il loop dovrebbe scegliere l'effetto da riprodurre
- In base al valore lo riproduce
- Da quello che ho capito attachinterrupt dovrebbe riuscire a leggere un cambiamento di stato (tipo multithread)
- attachinterrupt vede il cambiamento, aumenta il contatore e imposta la variabile boolean
- mentre viene eseguito l'effetto controllo se il la variabile boolean è cambiata
- se è cambiata dovrebbe interrompere l'effetto e dovrebbe ripartire il loop con lo switch che cambia l'effetto
Grazie a tutti