jeudi 8 mai 2014


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 Arduino:



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