2016-08-04 3 views
1

J'ai besoin de communiquer avec le raspberry pi avec l'arduino sur la communication série. Et pour communiquer, j'utilise même des vitesses de transmission dans les deux côtés mais je suis incapable de faire cette chose ..Raspberry pi - arduino Serial Communication

ceci est mon code Arduino

int ledPinSpeedOne = 11; 
int ledPinSpeedTwo = 12; 
int ledPinSpeedThree = 13; 

char inbyte; 

void setup() { 

    Serial.begin(9600); 

    pinMode(ledPinSpeedOne, OUTPUT); 
    pinMode(ledPinSpeedTwo, OUTPUT); 
    pinMode(ledPinSpeedThree, OUTPUT); 

    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, LOW); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

void loop() 
{ 

    if (Serial.available() > 0) { 
    delay(100); 
    inbyte=Serial.read(); 
    if (inbyte == '3') functionSpeedTwo(); 
    } 
} 

//functionSpeedTwo 
void functionSpeedTwo() { 
    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, HIGH); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

Et voici ce que j'ai framboise pi côté,

#!/usr/bin/python 
import serial 
ser = serial.Serial('/dev/ttyACM0',9600) 
ser.write('3') 

cette chose ne fonctionne pas pour parfois mais parfois cela a fonctionné. Quelqu'un peut m'aider à résoudre ce problème.

+0

Voir si l'arduino se réinitialise lors de l'exécution du script python. Si oui, définissez l'état de la ligne de contrôle avant d'ouvrir le port avec pyserial – handle

+0

que voulez-vous dire par "état de ligne de contrôle" ??? –

+0

Votre Arduino est-il réinitialisé lorsque vous exécutez le script? – handle

Répondre

0

J'ai résolu mon problème.Il y avait un intervalle de temps pour accéder à la valeur, je devais juste ajouter une boucle while afin d'obtenir la valeur. Dans mon code arduino, j'ai ajouté un délai à la ligne n ° 24.