Управляемая с помощью Raspberry Pi видеокамера безопасности. Часть 4

Теперь загрузите следующий код в Arduino. Он будет прослушивать входящие последовательные данные (последовательно, как и в Universal Serial Bus USB). RPi будет отправлять эти данные через USB к Arduino, указывая ему, куда двигаться сервоприводам.

Кстати, если вам нужен срочный ремонт смартфонов http://smartbit-service.ru/ в СПб по низкой цене — смело переходите по ссылке ранее.

#include <Servo.h> // Import the library

Servo servoPan, servoTilt; // Create servo object
String data = ""; // Store incoming commands (buffer)

void setup() {
// Setup servos on PWM capable pins
servoPan.attach(9);
servoTilt.attach(10);

Serial.begin(9600); // Start serial at 9600 bps (speed)
}

void loop() {
while (Serial.available() > 0)
{
// If there is data
char singleChar = Serial.read(); // Read each character

if (singleChar == ‘P’) {
// Move servo pan
servoPan.write(data.toInt());
data = ""; // Clear buffer
}
else if (singleChar == ‘T’) {
// Move tilt servo
servoTilt.write(data.toInt());
data = ""; // Clear buffer
}
else {
data += singleChar; // Append new data
}
}
}
Вы можете проверить данный код, открыв монитор последовательного порта (правый верхний угол > Serial Monitor) и отправить некоторые тестовые данные:
• 90P
• 0P
• 20T
• 100T

Обратите внимание на формат команды — значения, а потом буква. Значение — положение сервопривода, а буква (большими буквами) определяет панорамирование или наклон сервопривода. Поскольку эти данные передаются с RPi последовательно, то каждый один символ приходит за один раз. Arduino должен «хранить» их, пока не будет передана вся команда. Последняя буква не только определяет сервопривод, она также позволяет Arduino знать, что больше нет данных в этой команде.

Читайте также: