В нашата къща серво мотора отваря и затваря вратите и прозорците.
В това ръководство ще ви покажем как да направите той да отваря и затваря прозорци и врати с гласови команди.
#define IO_USERNAME "твоето_потребителско_име"
#define IO_KEY "твоят_ключ"
#define WIFI_SSID "твоят_ssid"
#define WIFI_PASS "твоята_парола_за_wifi"
#include "AdafruitIO_WiFi.h"
#if defined(USE_AIRLIFT) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL)
#if !defined(SPIWIFI_SS)
#define SPIWIFI SPI
#define SPIWIFI_SS 10
#define NINA_ACK 9
#define NINA_RESETN 6
#define NINA_GPIO0 -1
#endif
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS, SPIWIFI_SS, NINA_ACK, NINA_RESETN, NINA_GPIO0, &SPIWIFI);
#else
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
#endif
// Правим връзка с config.h файла
#include "config.h"
#include Servo.h>
// сложете < на "Servo.h>"
// дефинираме дигитален пин D2,
// с който да контролираме серво мотора
#define SERVO_PIN D2
// Дефинираме servo от servo класа
Servo servo;
// Правим връзка с servo LED
AdafruitIO_Feed *servo_feed = io.feed("servo");
void setup() {
// Започване на серейна комуникация
Serial.begin(115200);
// изчакваме да се отвори серийния монитор
while(! Serial);
// tell the servo class which pin we are using
servo.attach(SERVO_PIN);
// свърваме се с io.adafruit.com
Serial.print("Connecting to Adafruit IO");
io.connect();
// Настройваме функцията handleMessage,
// която ще се извиква всеки път, когато
// получим нова информация от adafruit
servo_feed->onMessage(handleMessage);
// Изчакваме да се свържим с adafruit
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// Свързани сме
Serial.println();
Serial.println(io.statusText());
servo_feed->get();
}
void loop() {
// io.run() е функция, която трябва
// да бъде винаги най-отгоре в loop,
// тя отговаря за обмяната на данни
// с adafruit
io.run();
}
// Тази функция се извиква всеки път когата,
// когата получим информация от adafruit
void handleMessage(AdafruitIO_Data *data) {
int angle = data->toInt();
// застраговаме се, че серво моторя
// няма да се отвори на повечеот
// 180 градуса
if(angle < 0)
angle = 0;
else if(angle > 180)
angle = 180;
servo.write(angle);
}