Partage
  • Partager sur Facebook
  • Partager sur Twitter

Robot automatque(HELP)

demande d'aide pour créer un robot

Sujet résolu
Anonyme
    6 octobre 2012 à 15:29:44

    Bonjour,

    je suis à créer un robot (avec l'Arduino Uno) et j'ai besoin d'aide :

    1. Est-ce qu'on peut faire tourner un moteur dans l'autre sens(ex : le robot roule : le moteur tourne dans un sens; il recule : il tourne dans le sens inverse).

    2.Est-ce que mon code est bon (je veux qu'il change de sens quand il se cogne contre un mur, qu'il un un panneau tourne solaire qui cherche le soleil et que quand il trouve le soleil la pile arrête d'alimenter le robot et le panneau solaire prenne le relai(si il n'a toujours pas trouver le soleil après 2 sec le moteur qui le fait tourner s'arrête). Qu'il soit alimenter par une pile 9 VOLT(sauf si le robot trouve le soleil là c'est le panneau solaire qui l'alimente.Il peut se faire commander par l'ordinateur.

    const int pile = 2;
    const int moteur_1 = 3;
    const int moteur_2 = 4;
    const int moteur_3 = 5;
    const int led_red = 6;
    const int bouton_1 = 7;
    const int bouton_2 = 8;
    const int bouton_3 = 9;
    const int panneau_solaire = 10;
    boolean etet_led;
    long temps = 0;
    long temps_2 = 0;
    long temps_3 = 0;
    long temps_4 = 0;
    
    char mot[20];
    
    void setup()
    {
      Serial.begin(9600); 
      
      etet_led = 0;
      pinMode(pile,INPUT);
      pinMode(panneau_solaire,INPUT);
      pinMode(moteur_1, OUTPUT);
      pinMode(moteur_2, OUTPUT);
      pinMode(moteur_3, OUTPUT);
      pinMode(led_red, OUTPUT);
      pinMode(bouton_1, OUTPUT);
      pinMode(bouton_2, OUTPUT);
      pinMode(bouton_3, OUTPUT);
      
      digitalWrite(led_red, etet_led);
      digitalWrite(moteur_1, LOW);
      digitalWrite(moteur_2, LOW);
      digitalWrite(moteur_3, HIGH);
    
    }
    void loop()
    {
       if(digitalRead(bouton_1)== LOW || digitalRead(bouton_2) == LOW || digitalRead(bouton_3) == LOW) // si le robot se cogne( devant, à droite ou  à gauche) il recule et tourne vers la gauche(remarque: le moteur 1 est celui de gauche pour toirner à gauche le moteur 2 est celui de droite pour tourner à droite et si les deux sont actionner il avance)
    	{
    		digitalWrite(moteur_2, HIGH);
                   //Le robot recule ( a vous de le mettre je ne sais pas comment faire)
                    if((millis() - temps_2) > 500)
                    { 
                    digitalWrite(moteur_2, LOW);
    	        }
            }
            else if(Serial.available())
    	{
            int i = 0; 
    	while(Serial.available() > 0 && i <= 19)
    	{
                mot[i] = Serial.read(); 
                delay(10); 
                i++; 
    	}
            mot[i-2] = '\0';
                
                if(mot == "tourner droite")
                {
                       digitalWrite(moteur_2, LOW);
                       if((millis() - temps_2) > 500)
                       {
                          digitalWrite(moteur_2, HIGH); 
                          temps_2 = millis();
                       }
                       Serial.print("OK");
                }
                else if(mot == "tourner gauche")
                {
                    digitalWrite(moteur_1, LOW);
                       if((millis() - temps_2) > 500)
                       {
                          digitalWrite(moteur_1, HIGH); 
                          temps_2 = millis();
                       }
                       Serial.print("OK");
                }
                else if(mot == "arret")
                {
                    digitalWrite(moteur_1, HIGH);
                    digitalWrite(moteur_2, HIGH);
                    digitalWrite(moteur_3, HIGH);
                    Serial.print("OK"); 
                }
                else if(mot =="marche")
                {
                     digitalWrite(moteur_1, LOW);
                     digitalWrite(moteur_2, LOW);
                     Serial.print("OK");
                }
               
            }
            else if(pile == LOW)
            {
             digitalWrite(moteur_3, LOW);// il cherche le soleil
              if(panneau_solaire == LOW)// si oui...
              {
                  digitalWrite(moteur_3, HIGH);//il éteint le moteur qui lef ait tourner
                  digitalWrite(pile, HIGH);//on arrête de faire passer le courant avec la pile 9 VOLT
              }
              else if((millis() - temps_4) > 2000)// sinon si il tourne 2 sec et qu'il ne l'a pas trouver...
              {
                digitalWrite(moteur_3, HIGH);// on arrête de cherchez le soleil(car soit il n'y en pas soit il est cacher par les nuages
              }
            }
    	else // sinon on cloignote
    	{
    		if((millis() - temps) > 1000)
    		{
    			etet_led = !etet_led; 
    			digitalWrite(led_red, etet_led); 
    			temps = millis(); 
    		}
    	}
     
    }
    

    Vous pouvez l'améliorez.


    3.Quelle bouton poussoir me conseiller vous pour quand il se cogne dans un mur sa s'active ?


    DéSOLER POUR LES FAUTES DE GRAMMAIRE ET D'ORTHOGRAPHE SI IL Y EN A










    PLUS BESOIN DE RENSEIGNEMENT FERMETURE DE CE SUJET
    • Partager sur Facebook
    • Partager sur Twitter

    Robot automatque(HELP)

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown