Go Down

Topic: Arduino serial emission et reception (Read 417 times) previous topic - next topic

bypbop

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)

En gros j'arrive à envoyer du pc vers l'arduino et de l'arduino vers le pc mais pas les deux en mm tps.

Par exemple si j'envois une simple variable qui s'incremente vers mon programme je n'arrive plus a guider ma base roulante correctement temps de reaction trés long ...

Code: [Select]

// 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;
     
      }   

 
}
     
}



Avez vous des idées ? je pense que je devrais utiliser une fonction pour envoyer et recevoir sur mon arduino mais mes compétences s'arretent la ...
Est ce que qq'un as deja fait ceci ?

Cordialement,
bypbop

Go Up