Aller au contenu


Photo
- - - - -

programmation serial


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

#1 axelou19

axelou19

    Membre

  • Membres
  • 21 messages
  • Gender:Male

Posté 29 décembre 2011 - 12:07

bonjour

j'ai un problème de code j'aimerai que quand j’écris quelque chose dans la moniteur arduino fasse une action bien précise mais je ne trouve pas de commande .
par exemple si j’écris avant dans le moniteur mes moteur tourne jusqu’à que j’écrive stop dans le moniteur.
que faire ? quelle est la fonction?

merci d'avance

#2 Microrupteurman

Microrupteurman

    Pilier du forum

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

Posté 29 décembre 2011 - 02:11

Salut, il faut surement faire une interface avec processing.

 
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 !
 


#3 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 29 décembre 2011 - 09:41

Il faut lire le port série :

http://arduino.cc/en/Serial/Read


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#4 axelou19

axelou19

    Membre

  • Membres
  • 21 messages
  • Gender:Male

Posté 29 décembre 2011 - 10:38

Il faut lire le port série :

http://arduino.cc/en/Serial/Read


j'ai déjà essayer mais je n'ai pas réussi
je ne sais pas comment l'utiliser et même en regardant les exemple je ne comprend pas comment lire .
j'ai déjà fait ça mais je n’arrive pas a mettre plusieurs lettres a la fois pour faire un mot
(celons la lettre écrite il allume plus ou moins longtemps un LED)

nt ledPin = 9;  // j'initialise une led

void setup() // inisialisation des interface
{

 Serial.begin(9600); // je commence le serial a 9600 bit par seconde

 pinMode(ledPin, OUTPUT); //je define la led en sortie

}

if (Serial.available() > 0) {          //si il y a une valeur dans le serial 

  char valeur = Serial.read();           // je lit les donne envoyer ( celle que jenvoie a arduino par le pc)

  switch(valeur) {        //je defini les condition

  case 'a':        // si il lit un a 

    analogWrite(ledPin, HIGH);         //j'allume la led
delay(1000);//j'attend 1sec
   analogWrite(ledPin, LOW);        //j'etain

  case 'c':         //pareile

    analogWrite(ledPin, HIGH);
delay(500);
   analogWrite(ledPin, LOW);

  case 'd':

    analogWrite(ledPin, HIGH);
delay(100);
   analogWrite(ledPin, LOW);

  }

}


#5 axelou19

axelou19

    Membre

  • Membres
  • 21 messages
  • Gender:Male

Posté 31 décembre 2011 - 07:01

personne ne peut m'aider
:(

#6 mvp86

mvp86

    Membre occasionnel

  • Membres
  • Pip
  • 136 messages
  • Gender:Male
  • Location:POITIERS

Posté 04 janvier 2012 - 01:16

Bonjour,

Je découvre "un peu" votre post, avez vous trouvé une solution ?
Comment réagit votre programme, votre led reste continuellement allumée ou éteinte ?
Je ne suis pas un habitué de l'instruction switch, mais il semble que l'instruction "break" soit à la fin de chaque "case".

:blush:

#7 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 04 janvier 2012 - 01:30

Oui MVp86 a raison.

L'instruction break est utilisée pour sortir d'une boucle do, for ou while, en passant outre le déroulement normal de la boucle. Cette instruction est également utilisée pour sortir d'une instruction switch.

Sinon je tes trouvais un tuto ( un sujet ) que j'ai trouvais sur le net sa pourrai t’être utile je pense Mon lien

#8 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 05 janvier 2012 - 12:41

Bonjour axelou19.

Bon Voila je me suis permis de corrigé ton code.

Moi je ne savais même pas que c'été possible de contrôlé des LED ou AUTRE avec le

serial monitor du logiciel Arduino.


J'ai trouvais que pour moi ça été a c'est facile de contrôlé une LED , je me suis

même amusé a contrôlé mon robot sa été marrant.

Bref , comme je m'ennuyer je me suis permis de faire ton code de plus tu avais fait

pas mal d'erreur.

Donc voici le code que je tes fait et cela marche très bien puisque je les testé avec

une de mais LED.

int ledPin = 9;  // j'initialise une led

void setup() // inisialisation des interface
{

 Serial.begin(9600); // je commence le serial a 9600 bit par seconde

 pinMode(ledPin, OUTPUT); //je define la led en sortie

}
void loop(){
if (Serial.available() > 0) {          //si il y a une valeur dans le serial 

  char valeur = Serial.read();           // je lit les donne envoyer ( celle que jenvoie a arduino par le pc)

  switch(valeur) {        //je defini les condition

  case 'a':        // si il lit un a 
  digitalWrite(ledPin, HIGH);         //j'allume la led
  delay(1000);
  digitalWrite(ledPin, LOW);
  
  break;
  
  case 'c':         //pareile
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);

  break;
  
  case 'd':
  digitalWrite(ledPin, HIGH);
  delay(100);
  digitalWrite(ledPin, LOW);

}
 }
  }

Voici ton code a toi avec les erreurs.

nt ledPin = 9;  // j'initialise une led

void setup() // inisialisation des interface
{

 Serial.begin(9600); // je commence le serial a 9600 bit par seconde

 pinMode(ledPin, OUTPUT); //je define la led en sortie

}

if (Serial.available() > 0) {          //si il y a une valeur dans le serial 

  char valeur = Serial.read();           // je lit les donne envoyer ( celle que jenvoie a arduino par le pc)

  switch(valeur) {        //je defini les condition

  case 'a':        // si il lit un a 

    analogWrite(ledPin, HIGH);         //j'allume la led
delay(1000);//j'attend 1sec
   analogWrite(ledPin, LOW);        //j'etain

  case 'c':         //pareile

    analogWrite(ledPin, HIGH);
delay(500);
   analogWrite(ledPin, LOW);

  case 'd':

    analogWrite(ledPin, HIGH);
delay(100);
   analogWrite(ledPin, LOW);

  }

}

Donc d'une part tu as mal déclaré ta LED

nt ledPin = 9;  // j'initialise une led

Tu as oublier le i de int bon c'est rien c'est une erreur de frappe on vas dire.

après tu mais des:

analogWrite(ledPin, LOW);


la j'ai pas compris tu aurais du mètre des:

digitalWrite(ledPin, LOW);

Et sur chaque cas il faut rajouté un break; sa te permet de sortie de la boucle.

Voila axelou19

#9 axelou19

axelou19

    Membre

  • Membres
  • 21 messages
  • Gender:Male

Posté 05 janvier 2012 - 04:37

oui j'ai oublier de me relire pour c'est faute j'avais compris comment lire une lettre comme a b ou c mais comment faire avec un mots entier c'est la ou j'ai un problème je ne sait pas comment le formuler corectement
j'ai esayer sa
j'ai defini octet

if(octet == 'bonjour'(
ce ne macrhe pas
puis j'ai essayer ca
if(octet == 'b' && octet == 'o'...(
mais aucun des deux ne marche comment faire ?

#10 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 05 janvier 2012 - 05:51

Ok axelou19.

Désolé si je te réponds que maintenant je viens tout juste de rentrée du taf.

Bon je tes faits un morceau de code qui ma pris 15 minutes il et a c'est simple .

A toi de combiné le morceau de code que je te passe avec se que tu veux faire.

tien moi au courant.

int ledPin = 9;  // j'initialise une led
   //Déclaration de la variable contenant la valeur de la touche saisi au clavier
   int octetRecu;
   
   
void setup() // inisialisation des interface
{

 Serial.begin(9600); // je commence le serial a 9600 bit par seconde

 pinMode(ledPin, OUTPUT); //je define la led en sortie

}
void loop(){
     if (Serial.available() > 0) {          //si il y a une valeur dans le serial 

       // Lecture de l'octet présent dans la mémoire tampon (buffer)
     octetRecu = Serial.read();
     
     if (octetRecu == 'A' || octetRecu == 'a') //Si l'octet recuz est égal à A ou a
{    
     digitalWrite(ledPin, HIGH); //Allume la LED A 
     Serial.println("allume"); //Affiche "allume"  la LED série
}

     if (octetRecu == 'E' || octetRecu == 'e') //Si l'octet recu est égal à E ou e
{
       //Eteindre la LED connectées 
      digitalWrite(ledPin, LOW);
      Serial.println("eteinte");//Affiche " eteinte" dans le moniteur série
 }
  }
   }


#11 axelou19

axelou19

    Membre

  • Membres
  • 21 messages
  • Gender:Male

Posté 05 janvier 2012 - 08:12



int ledPin = 9;  // j'initialise une led
   //Déclaration de la variable contenant la valeur de la touche saisi au clavier
   int octetRecu;
   
   
void setup() // inisialisation des interface
{

 Serial.begin(9600); // je commence le serial a 9600 bit par seconde

 pinMode(ledPin, OUTPUT); //je define la led en sortie

}
void loop(){
     if (Serial.available() > 0) {          //si il y a une valeur dans le serial 

       // Lecture de l'octet présent dans la mémoire tampon (buffer)
     octetRecu = Serial.read();
     
     if (octetRecu == 'A' || octetRecu == 'a') //Si l'octet recuz est égal à A ou a
{    
     digitalWrite(ledPin, HIGH); //Allume la LED A 
     Serial.println("allume"); //Affiche "allume"  la LED série
}

     if (octetRecu == 'E' || octetRecu == 'e') //Si l'octet recu est égal à E ou e
{
       //Eteindre la LED connectées 
      digitalWrite(ledPin, LOW);
      Serial.println("eteinte");//Affiche " eteinte" dans le moniteur série
 }
  }
   }

merci mais tu ne prend que le a moi j'aimerai controle en ecrivant un mot entier et pas juste une seul lettre

#12 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 05 janvier 2012 - 09:47

axelou19 Bon et bien je n’ai pas réussi , je ne pense pas que cela et possible , enfin je croix , mes bon si quelqu'un a la solution merci de la partager , ça serrais sympa .

#13 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 02 février 2012 - 12:45

Salut axelou19

Je tes trouver un sujet sur le forum qui se rapproche au tien , donc vas sur se lien Mon lien

#14 Roboteer

Roboteer

    Membre

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 03 février 2012 - 03:41

Hello Axelou,


Tu as un protocole déjà developpé par la communauté Arduino qui t'aide à faire ce que tu cherches. Ca s'appelle FIRMATA: voici le lien de la page officielle: http://firmata.org/wiki/Main_Page

Si la langue de Shakespeare te dérange, voici un tuto en français: http://www.mon-club-...ibrairieFirmata

Si tu cherches à refaire un protocole, il est possible de lire un mot entier par l'Arduino mais cela n'a que peu d'intérêt et va te "bouffer du code" inutilement. Par contre, rien ne t'empeche d'écrire le mot entier dans ton moniteur et de ne lire sur Arduino que la première ou les 2,3 premières si certaines commandes commencent de la même façon.


Hope this helps :rolleyes:,

Roboteer






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

0 members, 0 guests, 0 anonymous users