Ligth efterföljare Arduino baserad Robot
1. Tamiya caterpillar kit
2. Tamiya twin växellåda
3. Arduino Diecimila
4. H bridge L293e
5. 8 dioder
6. bröd styrelse
7. 2 foto motstånd
8 massa sladdar
Källkoden:
int pinMotorL1 = 2;
int pinMotorL2 = 3;
int pinMotorR1 = 8;
int pinMotorR2 = 9;
int pinEnableL = 4;
int pinEnableR = 5;
int valPWM = 175;
void setup()
{
börja den seriell kommunikationen
Serial.BEGIN(9600);
pinMode (pinMotorL1, produktionen);
pinMode (pinMotorL2, produktionen);
pinMode (pinMotorR1, produktionen);
pinMode (pinMotorR2, produktionen);
pinMode (pinEnableL, produktionen);
pinMode (pinEnableR, produktionen);
}
void ForwardR() {
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,HIGH);
digitalWrite(pinMotorR2,LOW);
}
void ForwardL() {
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,HIGH);
digitalWrite(pinMotorL2,LOW);
}
void BackwardR() {
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,LOW);
digitalWrite(pinMotorR2,HIGH);
}
void BackwardL() {
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,LOW);
digitalWrite(pinMotorL2,HIGH);
}
void StopR() {
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,HIGH);
digitalWrite(pinMotorR2,HIGH);
}
void StopL() {
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,HIGH);
digitalWrite(pinMotorL2,HIGH);
}
void StopAll() {
StopR();
StopL();
}
void goForward() {
ForwardR();
ForwardL();
}
void goBackward() {
BackwardR();
BackwardL();
}
void TurnR() {
ForwardL();
BackwardR();
}
void TurnL() {
ForwardR();
BackwardL();
}
void move(byte val) {
IF(val==0) {
Serial.println ("Caso 0-Adelante");
goForward();
Delay(1000);
StopAll();
} annat
IF(val==1) {
Serial.println ("Caso 1-Atras");
goBackward();
Delay(1000);
StopAll();
} annat
IF(Val==2) {
Serial.println ("Caso 2-Izquierda");
TurnR();
Delay(1000);
StopAll();
} annat
IF(val==3) {
Serial.println ("Caso 3-Izquierda");
TurnL();
Delay(1000);
StopAll();
}
annat {
Serial.println ("ingen valido ninguno");
goForward();
Delay(1000);
StopAll();
}
}
void loop()
{
flyta ojoDerecho = analogRead(1);
flyta ojoIzquierdo = analogRead(0);
Adelante
Move(0);
Izquierda
IF(ojoDerecho > ojoIzquierdo) {
Move(2);
}
Izquierda
annat if(ojoIzquierdo > ojoDerecho) {
Move(3);
}
}