/******* definovanie pinov *******/ const int motorPin=2; const int greenPin=6; const int bluePin=7; const int redPin=8; const int eventPin=10; /* pin sledujúci udalosť pri ktorej sa spustí čistenie */ const int polohaPin=9; /* pin sledujúci polohu čistiaceho bežca, keď je v pôvodnej polohe zastaví sa motor */ /******* pomocná premenná definujúca stav volantu *******/ bool motorIsRunning=false; void setup() { Serial.begin(9600); pinMode(motorPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(redPin, OUTPUT); pinMode(sedloPin, INPUT); pinMode(polohaPin, INPUT); digitalWrite(greenPin,HIGH); } void loop() { if(!motorIsRunning){ if(digitalRead(sedloPin)){ startCleaning(); motorIsRunning=true; } } if(motorIsRunning){ // Serial.println(digitalRead(polohaPin)); if(digitalRead(polohaPin)){ stopCleaning(); motorIsRunning=false; } } } /******** Funkcia sa zavolá v stave ked je vypnutý motor a rozbehne ho **********/ void startCleaning(){ for(int i=1;i<5;i++){ blinkYellow(); } digitalWrite(redPin,HIGH); delay(1000); digitalWrite(motorPin,HIGH); delay(1000); } /******** Funkcia sa zavolá v stave ked motor beží a vypne ho **********/ void stopCleaning(){ digitalWrite(motorPin,LOW); for(int i=1;i<5;i++){ blinkRed(); } digitalWrite(redPin, LOW); delay(500); digitalWrite(greenPin,HIGH); } /***** Funkcia pre blikanie žltou farbou **********/ void blinkYellow(){ digitalWrite(greenPin,HIGH); digitalWrite(redPin, HIGH); delay(400); digitalWrite(greenPin,LOW); digitalWrite(redPin, LOW); delay(400); } /***** Funkcia pre blikanie červenou farbou **********/ void blinkRed(){ digitalWrite(redPin, LOW); delay(400); digitalWrite(redPin, HIGH); delay(400); }