Projet ICN robot télécommandé 2018/2019

De Informatique et Création Numérique
Version du 30 janvier 2019 à 14:17 par Ulysse.PALLIX (discuter | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : Navigation, rechercher

J'ai d'abord commencé par reprendre le programme présent dans un robot utilisé les années précédentes. Je l'ai modifié afin de l'adapter à mon projet. Le robot:

Voici le programme:

int pwmB = 11;
int bin2 = 13;
int bin1 = 12;
int stby = 8;
int ain1 = 7;
int ain2 = 4;
int pwmA = 3;
 void tour(int vitesse,int temps) //Déclare la fonction qui fait effectuer un tour au robot
{
  Serial.println("Tour");
  digitalWrite(ain1, LOW);//Lance le courant...
  digitalWrite(ain2, HIGH);//et fait en sorte qu'un des moteurs tourne a l'envers pour que le robot tourne sur lui-même
  digitalWrite(stby, HIGH);
  digitalWrite(bin1, HIGH);
  digitalWrite(bin2, LOW);
  analogWrite(pwmA, vitesse);//Donne la puissance du moteur 1
  analogWrite(pwmB, vitesse);//Donne la puissance du moteur 2 
  delay(temps);
  digitalWrite(stby, LOW);//arrête les moteurs
} 
void avancer(int vitesse,int temps)//Déclare la fonction qui fait avancer le robot
{
  Serial.println("Avant");
  digitalWrite(ain1, HIGH);//Lance le courant
  digitalWrite(ain2, LOW);
  digitalWrite(stby, HIGH);
  digitalWrite(bin1, HIGH);
  digitalWrite(bin2, LOW);
  analogWrite(pwmA, vitesse);//Donne la puissance du moteur 1
  analogWrite(pwmB, vitesse);//Donne la puissance du moteur 2 (pour qu'il aille droit)
  delay(temps);
  digitalWrite(stby, LOW);
}
void reculer(int vitesse,int temps)//Déclare la fonction qui fait reculer le robot
{
  Serial.println("Recul");
  digitalWrite(ain1, LOW);//Lance le courant
  digitalWrite(ain2, HIGH);
  digitalWrite(stby, HIGH);
  digitalWrite(bin1, LOW);
  digitalWrite(bin2, HIGH);
  analogWrite(pwmA, vitesse);//Donne la puissance du moteur 1
  analogWrite(pwmB, vitesse);//Donne la puissance du moteur 2
  delay(temps);
  digitalWrite(stby, LOW);
}
void setup()
{
  Serial.begin(9600);
  pinMode(pwmB, OUTPUT);
  pinMode(bin2, OUTPUT);
  pinMode(bin1, OUTPUT);
  pinMode(stby, OUTPUT);
  pinMode(ain1, OUTPUT);
  pinMode(ain2, OUTPUT);
  pinMode(pwmA, OUTPUT);   
}
void loop()
{
 if(Serial.available()>0){
   int c  =  Serial.read();
   switch(c){
     case 'A' :
        avancer(125,1000);
        break;
     case 'T' :
        tour(133,310);
        break;
     case 'R' :
        reculer(125,1000);
        break; 
  }
}}



Une fois que tout fonctionnait j'ai commencé à utiliser la raspberry pour pouvoir commander mon robot depuis mon téléphone sans fil.

J'ai ensuite installé une batterie portable, en plus des piles, reliée à la raspberry pour l'alimenter sans utiliser les piles.

Tous les éléments sont sur le robot, il me reste juste à tout organiser pour gagner de l'espace.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils