Я делаю простую программу Arduino, которая включает в себя связь I2C для Slave-Master между 2 подразделениями Arduino. Мастер Arduino имеет сервомотор, прикрепленный к нему, и подчиненный возвращает запрос на 6 байтов, возвращая сообщение с шестью байтами. Я хочу, чтобы сервомотор включался всякий раз, когда отправляется сообщение с 6 байтами, но я хочу, чтобы он переставал поворачиваться, если отправлено сообщение длиннее или короче 6 байт. До сих пор, я написал этот код для мастера:Управление сервомотором на основе символов
// 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);
}
Теперь, когда подчиненное устройство посылает сообщение «привет», независимо от длины символа, двигатель работает на полной скорости. Что я сделал не так? Благодарю.