Rover Eda 2

Rover Eda se zapojeným servo motorem a LEDkami. Jedná se o příklad zapojení. Vaše může vypadat trochu jinak. LEDky patří i k druhému DC motoru, pouze do nákresu se mi nevešly. Schéma zapojení neodpovídá kódu. Jsou použité jiné piny. Kód odpovídá reálnému vozítku, schéma co nejsnažšímu nákresu.

Kód:

#include <Servo.h> // připojení knihovny k programu

#define trig 13
#define echo 12
#define ENA 11
#define IN1 10
#define IN2 9
#define IN3 8
#define IN4 7
#define ENB 6

int pos = 90; // počáteční pozice je 90 stupňů
long levaVzdalenost=0;
long pravaVzdalenost=0;
Servo SG90;

void vpred(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}

void vlevo(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}

void vpravo(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}

void vzad(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}

void stat(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}

long vzdalenost(){
long cas, delka;
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
cas = pulseIn(echo, HIGH);
delka = (cas/2) / 29.1;
return delka;
}

void setup() {
SG90.attach(3);
for (byte i=6; i<=11;i++) {
pinMode(i,OUTPUT);
}
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
randomSeed(analogRead(12));
delay(2000); // odlozeny start o 2 s
}

void loop() {
if(vzdalenost()<35) {
stat();
SG90.write(1);
delay(500);
pravaVzdalenost=vzdalenost();
SG90.write(179);
levaVzdalenost=vzdalenost();
delay(500);
SG90.write(90);
delay(50);
if(pravaVzdalenost>levaVzdalenost){
vpravo();
delay(300);
}
else{
vlevo();
delay(300);
}
// random(2)==1 ? vlevo():vpravo();
// delay(400); // cas na zatoceni
}
else {
vpred();
delay(150);
}
while(millis() > 120000) { // stop po 2 min
stat();
}
}