Для составления документации необходимо сделать структурную схему(блок-схему) работы программного кода. Из требований: правильное и компактное оформление схемы. Желательно в кратчайшие сроки
Оплата по договорённости
Код программы:
#include <Servo.h>
#include <LiquidCrystal.h>
#define PIR_PIN 2
#define SERVO_PIN 11
#define RS_PIN A0
#define E_PIN A1
#define DB4_PIN A2
#define DB5_PIN A3
#define DB6_PIN A4
#define DB7_PIN A5
// Создаем экземпляр класса для управления сервоприводом
Servo myservo;
// Создаем экземпляр класса для управления жидкокристаллическим экраном
LiquidCrystal lcd(RS_PIN, E_PIN, DB4_PIN, DB5_PIN, DB6_PIN, DB7_PIN);
void setup() {
// Инициализируем жидкокристаллический экран
lcd.begin(16, 2);
// Инициализируем сервопривод
myservo.attach(SERVO_PIN);
// Устанавливаем начальное положение сервопривода
myservo.write(90);
// Настраиваем пин датчика движения как вход
pinMode(PIR_PIN, INPUT);
}
void loop() {
// Считываем состояние датчика движения
int motion = digitalRead(PIR_PIN);
if (motion == HIGH) { // Обнаружено движение
// Выводим сообщение на экран
lcd.setCursor(0, 0); // Перемещаем курсор на первую строку
lcd.print("Motion detected");
lcd.setCursor(0, 1); // Перемещаем курсор на вторую строку
lcd.print(" ");
// Поворачиваем сервопривод быстро
while(true) {
myservo.writeMicroseconds(545); // минимальный угол поворота
delay(1000);
myservo.writeMicroseconds(2400); // максимальный угол поворота
delay(1000);
}
} else { // Движения не обнаружено
// Выводим сообщение на экран
lcd.setCursor(0, 0); // Перемещаем курсор на первую строку
lcd.print("All quiet ");
lcd.setCursor(0, 1); // Перемещаем курсор на вторую строку
lcd.print(" ");
// Поворачиваем сервопривод медленно
myservo.write(45);
}
// Задержка для стабильной работы программы
delay(100);
}