Le système Arduino, nous donne la possibilité d'allier les performances de la programmation à celles de l'électronique. Plus précisément, nous avons programmer notre robot composé essentiellement de:
- Deux roue avec moteurs
- carte Shield Arduino l298:
- Module bluetooth:
et voila le robot commandé directement avec notre application androïde lien youtube ==> http://www.youtube.com/watch?v=3qOAXVEc4aA , vous pouvez aussi la télécharger gratuitement dans google Play, lien ==> https://play.google.com/store/apps/details?id=com.traveler.joystick ) (pour plus de renseignemnt voila mon email: sofien.traveler@yahoo.com)
et enfin voici le code arduino:
/*
Robot traveler (made by Dabbouni Sofien 2014
*/
//Arduino PWM Speed Control:
int E1 = 3;
int M1 = 12;
int E2 = 11;
int M2 = 13;
int BU = 8;
int turntime = 800;
int sensorIrDPin = 4;
int sensorIrDValue = 0; // valor leído del pot
#include <Ping.h>
Ping ping = Ping(13,0,0);
float distance;
float trigger = 10.00;
float rightreading;
float leftreading;
int delayVal = 500; // duration of blink, in millis (0 means no blinking in effect)
int delayCnt = 0; // counter to step through the delayVal
//
void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(BU, OUTPUT);
// myservo.attach(9);
}
void loop() {
//
// sensorIrDValue = analogRead(sensorIrDPin);
// delay(200);
// if(sensorIrDValue<=100){
//
// digitalWrite(BU,HIGH);
//delay(1500);
//digitalWrite(BU,LOW);
//delay(70); }
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) {
case '8':
forward();
break;
case '5':
fullstop();
break;
case '2':
reverse();
break;
case '6':
right();
break;
// case 's':
// distance = pingIt();
// break;
case '4':
left();
break;
// default:
// stop all:
}
}
}
// All motors forward
void forward(){
int value;
// myservo.write(90);
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
delay(50);
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, LOW); //PWM Speed Control
analogWrite(E2, LOW);
delay(2);
}
// All motors reverse
void reverse(){
int value;
digitalWrite(M1,LOW);
digitalWrite(M2, LOW);
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
delay(50);
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, LOW); //PWM Speed Control
analogWrite(E2, LOW);
delay(2);
}
void right(){
int value;
digitalWrite(M1,HIGH);
digitalWrite(M2, LOW);
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
delay(50);
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, LOW); //PWM Speed Control
analogWrite(E2, LOW);
delay(2);
}
void forwardright(){
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E2, 255); //PWM Speed Control
analogWrite(E1, 170); //PWM Speed Control
delay(30);
analogWrite(E1, 255); //PWM Speed Control
}
void left(){
int value;
digitalWrite(M1,LOW);
digitalWrite(M2, HIGH);
analogWrite(E1, 255); //PWM Speed Control
analogWrite(E2, 255); //PWM Speed Control
delay(50);
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, LOW); //PWM Speed Control
analogWrite(E2, LOW);
delay(2);
}
void fullstop(){
digitalWrite(BU,HIGH);
delay(100);
digitalWrite(BU,LOW);
delay(70);
digitalWrite(BU,HIGH);
delay(100);
digitalWrite(BU,LOW);
delay(70);
}