Pages: [1]   Go Down
Author Topic: liaison arduino --> pc  (Read 535 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


i need help !

En utilisant le "moniteur série" de l'environnement de développement Aduino (ou un autre émulateur de terminal), Vous établirez une communication entre le PC et la carte qui sera programmée pour respecter le cahier des charges suivants :

  -  Si le PC envoie la chaine de caractères "<ESC>AN0", Arduino retourne la valeur de la voie analogique AN0 sur 1, 2, 3 ou 4 chiffres codés en ASCII (de "0" à "1023"), suivis du caractère <ETB>
   
- Idem pour la voie AN1

quelqu'un peut il m'expliquer comment faire le programme svp smiley
Logged

France
Offline Offline
Sr. Member
****
Karma: 2
Posts: 380
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En gros :

Quand tu as créer ton soft et que tu l'a uploader dans l'arduino, celui s'execute.

Avec le même soft qui t'a servi à réaliser ton programme et l'uploader, tu peux aussi ouvrir une fenetre qui va permettre de 'communiquer' avec l'arduino par le biais du port série de l'arduino. Cette comunication se fait grace au chipset fttdi et passe par l'usb.

Pour ouvrir cette fenetre, il faut cliquer en haut à droite de l'ide sur l'icone qui représente une loupe.

Le reste c'est à toi de le faire. Lis les tutos de l'arduino.
Logged

France
Offline Offline
Edison Member
*
Karma: 38
Posts: 1012
Scientia potentia est.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quelque chose comme ça..

Code:
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  delay(100);
  
  char input[8];
  uint8_t i = 0;
  
  while ( Serial.available() > 0 && i < 7 )
    input[i++] = Serial.read();
  
  input[i] = '\0';
  
  char c;
  uint8_t d;
  
  if ( sscanf( input, "%cAN%d", &c, &d ) == 2 )
  {
    if ( c == 0x1B && d >= 0 && d <= 15 )
    {
      char output[8];
      sprintf( output, "%d%c", analogRead( d ), 0x17 );
      Serial.println( output );
    }
  }
}

En plus ça lis n'importe quelle entrée analogique de 0 à 15, pas seulement 0 ou 1 smiley

Je n'ai pas mis de commentaires exprès, comme ça tu dois chercher un peu pour comprendre le code smiley
« Last Edit: November 22, 2012, 05:44:51 am by guix » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

merci smiley
Logged

France
Offline Offline
Edison Member
*
Karma: 38
Posts: 1012
Scientia potentia est.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De rien, je ne suis pas sûr pour le "<ESC>", est-ce le caractère ESC ou vraiment la chaine de caractère "<ESC>", auquel cas tu dois changer ces parties du code comme suit:
Code:
  char input[12];
  ...
  while ( Serial.available() > 0 && i < 11 )
  ...
  char c; // supprime cette variable inutile
  ...
  if ( sscanf( input, "<ESC>AN%d", &d ) == 1 )
  {
    if ( d >= 0 && d <= 15 )
    {

Voilà bonne chance smiley
Logged

Pages: [1]   Go Up
Jump to: