Aller au contenu


Photo
- - - - -

Arduino serial emission et reception


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 03 mars 2013 - 04:49

Bonjour à tous

Voila j'ai ce petit bout de code qui fait fonctionner ma base roulante. Tout fonctionne correctement mais dès que j'essaye d'envoyer et recevoir des données en mm tps, cela fonctionne trés mal. Ma base roulante réponds avec bcp de retard.

J'aimerais avoir votre avis sur ce code pour que je puisse envoyer correctement une variable de mon arduino vers mon programme coté pc (processing)


// Moteur A
int dir1PinA = 13;
int dir2PinA = 12;

// Moteur B
int dir1PinB = 11;
int dir2PinB = 8;

// Vitesse Moteur
int speedPinA = 10;
int speedPinB = 9;

int speed = 0;
char incomingByte;


void setup() {
  Serial.begin(57600);

  pinMode(dir1PinA, OUTPUT);
  pinMode(dir2PinA, OUTPUT);
  pinMode(speedPinA, OUTPUT);
  pinMode(dir1PinB, OUTPUT);
  pinMode(dir2PinB, OUTPUT);
  pinMode(speedPinB, OUTPUT);

  speed = 100;
  
}



void loop() 
{

  while (Serial.available()>0)   
  {
  
  incomingByte = Serial.read();
  //Serial.println(incomingByte, DEC);
  analogWrite(speedPinA, speed);
  analogWrite(speedPinB, speed);
  switch (incomingByte)
    {
    case 'A':
      
      digitalWrite(dir1PinA, LOW);
      digitalWrite(dir2PinA, HIGH);
      digitalWrite(dir1PinB, HIGH);
      digitalWrite(dir2PinB, LOW);
      break;
    case 'B':
      
      digitalWrite(dir1PinA, LOW);
      digitalWrite(dir2PinA, LOW);
      digitalWrite(dir1PinB, LOW);
      digitalWrite(dir2PinB, LOW);
      break;
    case 'C':
      
      digitalWrite(dir1PinA, HIGH);
      digitalWrite(dir2PinA, LOW);
      digitalWrite(dir1PinB, LOW);
      digitalWrite(dir2PinB, HIGH);
      break;
    case 'D':
     
      digitalWrite(dir1PinA, LOW);
      digitalWrite(dir2PinA, HIGH);
      digitalWrite(dir1PinB, LOW);
      digitalWrite(dir2PinB, HIGH);
      break;
    case 'G':
      
      digitalWrite(dir1PinA, HIGH);
      digitalWrite(dir2PinA, LOW);
      digitalWrite(dir1PinB, HIGH);
      digitalWrite(dir2PinB, LOW);
      break;
    default:
      Serial.print("commande : ");
      Serial.print(incomingByte);
      Serial.println(" non reconnue.");
      break;
    
      }  

 
 }
     
}

    
   






Cordialement,
bypbop

#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 03 mars 2013 - 07:17

La question est : quand est ce que tu veux envoyer tes données ? ... Car si tu veux pouvoir le faire après un déplacement : pas de problème... si tu veux le faire pendant un déplacement, garde en mémoire qu'un micro contrôleur ne sait pas faire deux chose en même temps ... Deux solutions : ou bien tu utilise un deuxième micro contrôleur, ou tu partitionnes ton temps entre les taches: un coup tu lis un coup tu avances un coup tu envois et tu avances encore etc...

Une des solutions : les interruptions ... à toi de les gérer correctement.

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 03 mars 2013 - 08:47

Merci mike118
Pour cette réponse oui j aimerais par exemple avoir les infos de distance de ma base roulante lors d un déplacement.
Aurais tu un exemple de code avec une arduino
Je n avance plus sur mon robot a cause de cette partie
J arrive a envoyer une commande et recevoir des infos de mon robot vers le soft et reciproquement mais les 2 :-(

Cordialement,
Bypbop

#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 03 mars 2013 - 10:39

Merci mike118
Pour cette réponse oui j aimerais par exemple avoir les infos de distance de ma base roulante lors d un déplacement.
Aurais tu un exemple de code avec une arduino
Je n avance plus sur mon robot a cause de cette partie
J arrive a envoyer une commande et recevoir des infos de mon robot vers le soft et reciproquement mais les 2 :-(

Cordialement,
Bypbop


Généralement je travail sur pic ... J'ai une routine avec interruption qui permet de prendre en compte l'appuis d'un bouton pendant qu'un moteur pas à pas tourne. Je vais voir ce que je peux faire pour toi ;)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#5 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 03 mars 2013 - 10:44

Wep j'ai deja fait une interruption sur pic 16f88 c'est trés compliqué pour un débutant comme moi ;-)


Si d'autres membres du forum on un avis n'hesitez pas !!
Je suis bloqué ;-)

Cordialement,
bypbop

#6 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 08 mars 2013 - 10:54

Personne n'a une idée sur le sujet ?

Cordialement,
bypbop

#7 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 09 mars 2013 - 06:23

J'ai un souci similaire sur mon robot Ferraille, quand j'envoie des donner il faut parfois plusieurs second pour les executer.

 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users