Základní řízení pohybů
Tento typ napsání programu je velice precizní, co se týče přesnosti a dvojí kontroly zda pozice je opravdu tam kde má být.
Tato funkční ukázka je pouze pro jeden typ pohybu….
int R1R2Pin = A0; // vyber vstupu pro senzor
int zapadPin = 13; // vyber vystupu 13
int vychodPin = 12; // vyber vystupu 12
void setup(){
Serial.begin(57600);
pinMode(zapadPin, OUTPUT); // prohlaseni výstupu 13 jako vystup
pinMode(vychodPin, OUTPUT); // prohlaseni výstupu 12 jako vystup
Serial.println("Vystupy jsou pripravene, jde se otáčet");
}
void loop(){
int s1 = 0; // promenna pro ulozeni hodnoty prichazejici ze snimace -- dame ji sem aby sa vzdy vynulovala
s1 = analogRead(R1R2Pin); // cist hodnotu ze senzoru
Serial.print("Ze senzoru R1 a R2 mame hodnotu:");
Serial.println(s1);
if(s1 >=0 && s1 <= 500) //kontrola na hodnotu 0 az 2,44V
otocNaZapad();
if(s1 >= 550 && s1 <= 1023) // kontrola na hodnotu 2,69 az 5V
otocNaVychod();
Serial.println("Cekam 60sec nez skusim znova");
delay(10000); // pocka 10sec nez zacne dalsi cyklus - treba potom zvysit na vhodnou velikost
}
void otocNaZapad(){
Serial.println("Tocim na zapad..");
int R1R2 = analogRead(R1R2Pin); // nacitani aktualni hodnoty
while(R1R2 >=0 && R1R2 <= 500){ // pokud je hodnota v rozmezi bude se dit následujici
Serial.print("..");
digitalWrite(zapadPin, HIGH); // na zapadní pin da +5V
R1R2 = analogRead(R1R2Pin); // zisti aktualni hodnotu a jde ji znova overit
}
digitalWrite(zapadPin, LOW); // hodnota senzoru se dostala do tolerance (vic jak 2,44V)
Serial.println("OK");
}
void otocNaVychod(){
Serial.println("Tocim na vychod..");
int R1R2 = analogRead(R1R2Pin); // nacitani aktualni hodnoty
while(R1R2 >= 550 && R1R2 <= 1023){ // pokud je hodnota v rozmezi bude sa dit následijici
Serial.print("..");
digitalWrite(vychodPin, HIGH); // na vychodni pin da +5V
R1R2 = analogRead(R1R2Pin); // zisti aktualni hodnotu a jde ji znova overit
}
digitalWrite(vychodPin, LOW); // hodnota senzoru se dostala do tolerance (mene jak 2,69V)
Serial.println("OK");
}