Rotoshield et Xbee

Un shield de pilotage pour 4 moteurs à courant continu ou 2 moteurs pas à pas, qui permet une alimentation sur 12V et qui n'utilise que 4 sorties Pwm (sur 6) et 2 entrées analogiques (sur 6) de l'Arduino

Rotoshield et Xbee

Message non lude needsomehelp » Mar 21 Mai 2013 23:15

Bonjour je me présente, je suis en classe de terminale SI, et dans le cadre d'un ppe (projet de 72h pour le bac) moi ainsi que 3 autres amis devons réalisés un bras robotique. Bon nous restons des élèves de terminales et nous sommes partis avec des connaissances très insuffisantes en électronique et en informatique.

Bref, j'en viens à mon problème :D :
Nous cherchons à contrôler un seul moteur CC depuis le moniteur Série en wifi à l'aide de 2 cartes Arduino UNO, dont l'une munie d'un Rotoshield, qui communiquent à l'aide de 2 modules Xbee fixaient sur les WirlessShield Proto (fixaient sur nos montages précédents).
Nous avons déjà réussi à commander le moteur mais cela sans la wifi avec ce petit programme :


/*

pilotage d un moteur CC
moteur banché en M1
9V sur le driver Snootor
*/


#include <Wire.h>
#include <snootor.h>

// Declaration LEDs
int led_rouge = 13;
int led_bleu = 12;

// Declaration de notre object moteur
SnootorDC Motor_1;
SnootorDC Motor_2;

// Declaration fonctions
void monter(int temps);
void descendre(int temps);

//Declaration variables
int command = 0;
int temps=0;
String inputString = "";
boolean stringComplete = false;


// Partie Initialisation
void setup()
{

Serial.begin(115200);
Wire.begin();
Motor_1.init(1);
Motor_2.init(2);
pinMode(led_rouge,OUTPUT);
pinMode(led_bleu,OUTPUT);
Serial.println("init ok");


}

// Partie Execution
void loop()
{
if (stringComplete)
{
switch (command)
{
case 0:
Serial.println("commande invalide");

break;

case 1:
Serial.print("Rotation horaire de ");
Serial.print(temps);
Serial.println(" millisecondes");
monter(temps);
break;

case 2 :
Serial.print("Rotation antihoraire de ");
Serial.print(temps);
Serial.println(" millisecondes");
descendre(temps);
break;
}

// effacement des variables:
inputString = "";
stringComplete = false;
command = 0;


}

}

//reception des données
void serialEvent(){
while (Serial.available())
{
switch (Serial.read())
{
case 'M':
command = 1;
break;
case 'm':
command = 1;
break;

case 'D':
command = 2;
break;
case 'd':
command = 2;
break;
}


temps = Serial.parseInt();

stringComplete = true;

}
}



//Fonction Monter
void monter(int temps)
{
Motor_1.setSpeed(128);
Motor_2.setSpeed(128);
Motor_1.run(FORWARD);
Motor_2.run(FORWARD);
digitalWrite(led_rouge, HIGH);
delay(temps);
Motor_1.run(RELEASE);
Motor_2.run(RELEASE);
digitalWrite(led_rouge, LOW);
Serial.println(" Stop.");
}


//Fonction Descendre
void descendre(int temps)
{
Motor_1.setSpeed(128);
Motor_2.setSpeed(128);
Motor_1.run(BACKWARD);
Motor_2.run(BACKWARD);
digitalWrite(led_bleu, HIGH);
delay(temps);
Motor_1.run(RELEASE);
Motor_2.run(RELEASE);
digitalWrite(led_bleu, LOW);
Serial.println(" Stop.");

}



Puis par la suite nous avons réussi à commander 2 LED en wifi grâce à ces 2 programmes :

émetteur


#include <Wire.h>

int command = 0;
int temps=0;
String inputString = "";
boolean stringComplete = false;



void setup()

{
Serial.begin(9600);
Serial.println("init ok");
}


void loop()
{
if (stringComplete) // se met en marche lorsqu'une information a été rentrée
{
switch (command)

{

case 0:
Serial.println("commande invalide");
break;

case 1:
Serial.print('M');
Serial.println(temps);
Serial.print("Rotation horaire de ");
Serial.print(temps);
Serial.println(" millisecondes");
break;

case 2 :
Serial.print('D');
Serial.println(temps);
Serial.print("Rotation antihoraire de ");
Serial.print(temps);
Serial.println(" millisecondes");
break;
}

// effacement des variables:
inputString = "";
stringComplete = false;
command = 0;

}

}

//reception des données
void serialEvent(){
while (Serial.available())
{
switch (Serial.read())
{
case 'M':
command = 1;
break;
case 'm':
command = 1;
break;

case 'D':
command = 2;
break;
case 'd':
command = 2;
break;
}

temps = Serial.parseInt();

stringComplete = true;

}
}

récepteur


#include <Wire.h>
#include <snootor.h>

// Declaration LEDs
int led_rouge = 13;
int led_bleu = 12;

int incomingByte;
int command;

// Declaration de notre object moteur
SnootorDC Motor_1;
SnootorDC Motor_2;

// Declaration fonctions
void monter(int temps);
void descendre(int temps);

//Declaration variables
int temps;
// Partie Initialisation
void setup()
{

Serial.begin(9600);
Motor_1.init(1);
Motor_2.init(2);
pinMode(led_rouge,OUTPUT);
pinMode(led_bleu,OUTPUT);
Serial.println("init ok");


}

// Partie Execution
void loop()
{
incomingByte = Serial.read();

{
switch (incomingByte)
{

case 'M':
//monter(temps);
digitalWrite(led_rouge,HIGH);
delay(2000);
digitalWrite(led_rouge,LOW);
break;

case 'D' :
//descendre(temps);
digitalWrite(led_bleu,HIGH);
delay(2000);
digitalWrite(led_bleu,LOW);
break;
}


}

}


//Fonction Monter
void monter(int temps)
{
Motor_1.setSpeed(128);
Motor_2.setSpeed(128);
Motor_1.run(FORWARD);
Motor_2.run(FORWARD);
digitalWrite(led_rouge, HIGH);
delay(temps);
Motor_1.run(RELEASE);
Motor_2.run(RELEASE);
digitalWrite(led_rouge, LOW);
// Serial.println(" Stop.");
}


//Fonction Descendre
void descendre(int temps)
{
Motor_1.setSpeed(128);
Motor_2.setSpeed(128);
Motor_1.run(BACKWARD);
Motor_2.run(BACKWARD);
digitalWrite(led_bleu, HIGH);
delay(temps);
Motor_1.run(RELEASE);
Motor_2.run(RELEASE);
digitalWrite(led_bleu, LOW);
// Serial.println(" Stop.");

}



Cependant, comme vous pouvez le voir en commentaire, ce que nous cherchons principalement à commander c'est le moteur !! (la variable "temps" est elle aussi en commentaire car nous éprouvons quelques difficultés aussi à émettre et recevoir une variable avec le wifi mais c'est secondaire). Notre gros soucis c'est vraiment le moteur, car même avec un delay à la place de la variable temps pour faire tourner le moteur pendant une période définie....aucune réaction !!

On a vraiment besoin d'aide car nous devons rendre dossier d'ici une semaine et la wifi sur notre robot pose toujours problème donc d'avance merci mille fois pour toutes vos réponses !!!!!! :mrgreen:
needsomehelp
 
Messages: 2
Inscription: Mar 21 Mai 2013 22:55

Re: Rotoshield et Xbee

Message non lude needsomehelp » Mer 22 Mai 2013 20:20

ondes radios pas wifi* désolé
needsomehelp
 
Messages: 2
Inscription: Mar 21 Mai 2013 22:55


Retourner vers Rotoshield

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité