Hi allemaal,
Ik ben voor mijn studie bezig met een prototype maken van een om de pols gedragen 'device'. Het device heeft een led die tussen groen en rood wisselt, een vibrating motor en 2 buttons. Ik ben niet heel erg handig met arduino dus ik hoop dat iemand misschien een oplossing weet. Ik programmeer een Seeeduino Lotus met Groove componenten
Wat er moet gebeuren:
- Led moet op groen blijven staan en na een aantal seconde gaan trillen
- Dan kan er gekozen worden om het trillen te 'snoozen' en de led blijft groen, waarna het weer naar het begin stadium begint: een groen led en na een tijdje weer trillen
- Of er kan gekozen worden om het trillen te stoppen en het led wordt rood, daarna zal het ook weer naar het begin statium terug gaan.
Nu is het probleem dat een interrupt middenin mijn loop stop (dus midden in het trillen) en dan daarna daar weer verder gaat. Ik wil juist graag de de hele interrupt wordt gedaan en dat daarna het programma weer begint bij het het begin van de loop.
De code:
#include <ChainableLED.h>
int button1 = 3;
int button2 = 2;
int ledpin1 = 4;
int ledpin2 = 5;
int vibratingmotor = 6;
int numLeds = 1;
ChainableLED leds(ledpin1, ledpin2, numLeds);
void setup()
{
//leds.init();
pinMode(button1,INPUT);
pinMode(button2,INPUT);
pinMode(vibratingmotor,OUTPUT);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
attachInterrupt(digitalPinToInterrupt(3),InterruptFunction1, HIGH);
attachInterrupt(digitalPinToInterrupt(2),InterruptFunction2, HIGH);
}
void loop()
{
leds.setColorRGB(0, 0, 255, 0);
delay (10000);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
delay (250);
digitalWrite(vibratingmotor, HIGH);
delay (500);
digitalWrite(vibratingmotor, LOW);
}
void InterruptFunction1 (){
digitalWrite(vibratingmotor, LOW);
leds.setColorRGB(0, 255, 0, 0);
delay(10000);
}
void InterruptFunction2 (){
digitalWrite(vibratingmotor, LOW);
leds.setColorRGB(0, 0, 255, 0);
delay (10000);
}