Voiture télécommander

Parlez nous de vos projets et de vos idées, imaginez des applications

Voiture télécommander

Message non lude FloVot » Mer 19 Sep 2012 17:52

Bonjour, dans le cadre de mon option sciences de l'ingénieur au bac on doit réaliser un objet fessant intervenir de l’électronique et de la mécanique, donc on a eu l'idée de faire une voiture télécommander qui s’arrête devant les murs.

Donc ayant déjà un peu programmé sur arduino je suis partie dessus, mais voilà pensant avoir fini un bout de code un message d'erreur s'affiche :
Code: Tout sélectionner
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp: In member function 'uint8_t SoftwareServo::attach(int)':
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:27: error: 'digitalWrite' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:28: error: 'OUTPUT' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:28: error: 'pinMode' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp: In member function 'void SoftwareServo::write(int)':
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:51: error: 'clockCyclesPerMicrosecond' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp: In static member function 'static void SoftwareServo::refresh()':
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:73: error: 'millis' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:106: error: 'digitalWrite' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:108: error: 'TCNT0' was not declared in this scope
G:\arduino-1.0.1\libraries\SoftwareServo\SoftwareServo.cpp:123: error: 'digitalWrite' was not declared in this scope

Donc si quelqu'un pourrais m'aider a trouvé de problème, mon code est :
Code: Tout sélectionner
#include <SoftwareServo.h>
#include <VirtualWire.h>
SoftwareServo myservo;
void setup()
{
    Serial.begin(9600);    // On initialise "le serial monitor", j'ai laissé 9600 bauds ici car c'est la valeur par défaut mais vous pouvez la modifier. Attention à bien mettre la même valeur dans votre Serial Monitor et dans votre programme.
    vw_set_ptt_inverted(true);
    vw_setup(2000);                 // Bits par seconde (vous pouvez le modifier mais cela modifiera la portée). Voir la documentation de la librairie VirtualWire.
    vw_set_rx_pin(11);             // C'est sur cette broche que l'on reliera les broches DATA du récepteur, vous pouvez changez de broche si vous le désirez.
    vw_rx_start();                    // On démarre le récepteur.
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    myservo.attach(9);
   
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // On test afin de savoir si un message est reçu.
    {
    int i;
     // Un message est reçu.
    if (uint8_t buf=1){
      myservo.write(90);
      digitalWrite(1, 1);
      digitalWrite(2, 0);
     
    }
    if (uint8_t buf=2){
      myservo.write(90);
      digitalWrite(1, 0);
      digitalWrite(2, 1);
    }
    if (uint8_t buf=3){
      digitalWrite(1, 1);
      digitalWrite(2, 0);
      myservo.write(60);
    }
    if (uint8_t buf=4){
      digitalWrite(1, 1);
      digitalWrite(2, 0);
      myservo.write(120);   
    }
    if (uint8_t buf=5){
      myservo.write(60);
      digitalWrite(1, 1);
      digitalWrite(2, 0);
    }
    if (uint8_t buf=6){
      myservo.write(120);
      digitalWrite(1, 1);
      digitalWrite(2, 0);
    }
    if (uint8_t buf=7){
      myservo.write(60);
      digitalWrite(1, 0);
      digitalWrite(2, 0);
    }
    if (uint8_t buf=8){
      myservo.write(120);
      digitalWrite(1, 0);
      digitalWrite(2, 0);
    }
       
}
 SoftwareServo::refresh();
}

Je pense que cela vient de la librarie SoftwareServo que je suis obliger d'utiliser car la librarie VirtualWire n'est pas compatible avec Servo.

PS: Si au passage vous voyer d'autres erreurs dans le code ça serrait gentil de le dire :D car j'ai pas peu encore le tester.
FloVot
 
Messages: 12
Inscription: Sam 14 Juil 2012 15:20

Re: Voiture télécommander

Message non lude SesechXP » Mer 19 Sep 2012 18:29

Salut,

De manière générale, je t'invite à initialiser tes variables, c'est une bonne pratique qui pourrait t'éviter de nombreux déboires...
Sinon dans ta fonction loop tu pourrais utiliser un switch ... case afin d'éviter cette collection de if.

Edit : la bibliothèque SoftwareServo (elle du Playground Arduino) a été développé pour Arduino 002x. Hors tu travailles avec la version 1.0.1. S'il n'existe pas déjà une version compatible, il faut que tu adaptes la bibliothèque. Pour commencer tu peux remplacer les
Code: Tout sélectionner
#include <WProgram.h>

par
Code: Tout sélectionner
#include <Arduino.h>


++
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35


Retourner vers Vos projets, vos idées

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités

cron