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");
}