#include <Arduino.h>
#include "LED.h" // Подключаем заголовочный файл для управления светодиодом
// Обозначения
#define BAUD_RATE 9600 // Определение скорости передачи данных для последовательной связи
#define MAX_STRING_LENGTH 10 // Максимальная длина строки для пользовательского ввода
// Функции для работы с последовательной передачей данных
void customPutChar(char ch, FILE *f)
{
Serial.write(ch);
}
// Функции для работы с последовательным считыванием данных
char customGetChar(FILE *f)
{
while (!Serial.available()); // Ожидание, пока не будет доступен символ
return Serial.read(); // Чтение символа из последовательного порта
}
// Функция для перевода строки в нижний регистр
void toLowerCase(char *str)
{
for (int i = 0; str[i]; i++)
{
str[i] = tolower(str[i]);
}
}
// Настройки инициализации
void setup()
{
// Инициализация последовательной связи для терминала
Serial.begin(BAUD_RATE);
// Инициализация светодиода
initLed();
// Вывод приветственного сообщения в терминал
// Создаем поток ввода-вывода для работы с последовательным портом
FILE *myStream = fdevopen(customPutChar, customGetChar);
// Привязываем стандартные потоки ввода (stdin) и вывода (stdout) к нашему пользовательскому
// потоку myStream, чтобы можно было использовать printf и scanf для работы с последовательной связью
stdin = stdout = myStream;
printf("Система готова. Введите 'led on' для включения или 'led off' для выключения светодиода.\n");
}
// Основная программа
void loop()
{
char myString[MAX_STRING_LENGTH];
scanf("%[^\n]%*c", myString); // Чтение строки до символа новой строки
// Преобразуем введенную строку в нижний регистр
toLowerCase(myString);
// Проверяем, есть ли данные от терминала
if (strcmp(myString, "") != 0)
{
// Сравниваем введенную команду и выполняем соответствующее действие
if (strcmp(myString, "led on") == 0)
{
turnLedOn(); // Включаем светодиод
printf("Светодиод включен.\n");
}
else if (strcmp(myString, "led off") == 0)
{
turnLedOff(); // Выключаем светодиод
printf("Светодиод выключен.\n");
}
else
{
// Сообщение об ошибке, если команда не распознана
printf("Команда не распознана. Введите 'led on' или 'led off'.\n");
return;
}
}
}