2017-01-14 1 views
0

J'ai réalisé un programme Arduino simple qui implique une communication Slave-Master I2C entre 2 UNO Arduino. Le maître Arduino est relié à un servomoteur et l'esclave renvoie une requête de 6 octets en retournant un message de six octets. Je veux que le servomoteur tourne à chaque fois qu'un message avec 6 octets est envoyé, mais je veux qu'il arrête de tourner si un message plus long ou plus court que 6 octets est envoyé. Jusqu'à présent, j'ai écrit ce code pour le maître:Contrôler le servomoteur en fonction des caractères

// Demonstrates use of the Wire library 
// Reads data from an I2C/TWI slave device 

#include <Wire.h> 
#include <Servo.h> 

Servo servo1; 

void setup() { 
Wire.begin();  // join i2c bus (address optional for master) 
Serial.begin(9600); // start serial for output 
servo1.attach(9); 
} 

void loop() { 
Wire.requestFrom(8, 50); // request 6 bytes from slave device #8 

while (Wire.available()) { // slave may send less than requested 
char c = Wire.read(); // receive a byte as character 
Serial.print(c);   // print the character 
if (char c = 150) 
{ 
    servo1.write(180); 
} 
else { 
    servo1.write(90); 
} 
} 

delay(500); 
} 

Maintenant, quand l'esclave envoie le message « bonjour », quelle que soit la longueur de caractère, le moteur tourne à plein régime. Qu'ai-je fait de mal? Merci.

Répondre