Как управлять устройством?
В этом уроке мы научимся давать указания нашим устройствам. Сразу к делу.
Что нам нужно
- Светодиод
- Резистор 220 Ом
- Потенциометр
- Соединительные провода «Папа – Папа»
Serial monitor
Для начала попробуем управлять режимами работы светодиода с помощью Serial monitor.
Соберем простенькую схему:
Код к схеме
#define LED 13
void setup() {
Serial.begin(9600); //Установим соединение с компьютером.
//Выведем в Serial два сообщения
//Кстати, на русском сообщение будет отображаться некорректно.
Serial.println(«Write: on — for turn led on, off — for turn led off, blink — for blink»);
Serial.println(«Wait for commands»);
pinMode(LED, OUTPUT);
}
void loop() {
if(Serial.available() > 0) //Проверяем, пришла ли команда.
{
char cmd = Serial.read(); //Объявим переменную, в которую будем запоминать команду.
//Команду можно ввести и капсом.
//Для этого опишем возможные варианты пришедших команд.
if (cmd == ‘o’ || cmd == ‘O’) //Если пришла команда ON
{
digitalWrite(LED, HIGH); //Включаем светодиод
}
if (cmd == ‘f’ || cmd == ‘F’) //Если пришла команда OFF
{
digitalWrite(LED, LOW); //Выключаем светодиод
}
if( cmd == ‘b’ || cmd == ‘B’) //Если пришла команда Blink
{
for( int i = 0; i < 10; i++) //Мигаем светодиодом
{
digitalWrite(LED, HIGH);
delay(600);
digitalWrite(LED, LOW);
delay(600);
}
}
}
}
Пояснения
Serial.print С помощью этой команды мы можем выводить сообщения или какие-либо значения в Serial monitor.Ещё есть команда Serial.println. Она так же выводит сообщение, но с новой строки.
Сообщение должно выводиться в виде: Serial.println(“Текст сообщения”);
На русском так просто текст не вывести. Если написать текст на русском, в Serial monitor вы увидите странные символы. Как это исправить сегодня мы рассматривать не будем.
Serial.available() > 0 В этом куске кода мы проверяем, есть ли какие-то команды, а если есть, приступаем к определению, что за команда пришла и выполняем эту команду.
Char Переменная типа char может хранить один алфавитно-цифровой символ (литеру). При объявление литеры используются одиночные кавычки: ‘O’
Serial.read Эта команда считывает команды, вводимые в Serial monitor.
Потенциометр и Serial monitor
Потенциометр или переменный резистор – это делитель из 2-х резисторов в одном корпусе. Сопротивление меняется поворотом ручки.
Мы соберем схему, которая будет в зависимости от поворота потенциометра отправлять в Serial monitor тестовые сообщения. Можно на основе скетча, вместо тестовых сообщений, выполнять нужные нам действия.
Код
#define POT A0
void setup()
{
pinMode(POT, INPUT);
Serial.begin(9600); //Установим связь с компьютером.
Serial.println(«Enter command V.»); //Это сообщение просит ввести команду.
}
void loop()
{
int pot = analogRead(POT);
int val = analogRead(POT);
val = map(val, 0, 1023, 0, 3);
// 250 градусов возможного поворота потенциометра разобьем на 4 части.
// По запросу, будем выводить на экран значение, считываемое с потенциометра.
if(Serial.available() > 0)
{
char cmd = Serial.read();
if( cmd == ‘v’ || cmd == ‘V’)
{
Serial.println(» Potentiometr’s value: «);
Serial.println(pot);
delay(1000);
}
//Здесь, вместо выведения сообщений в сериал может быть любой код.
//Получается, что поворачивая потенциометр мы меняем исполняемую в данный
//момент команду.
if(val == 0)
{
Serial.println(«Command 0»);
}
else if(val == 1)
{
Serial.println(«Command 1»);
}
else if(val == 2)
{
Serial.println(«Command 2»);
}
else if(val == 3)
{
Serial.println(«Command 3»);
}
}
}
Пояснения
Map — пропорционально переносит значение из текущего диапазона значений в новый диапазон, заданный параметрами.
В общем виде map можно записать так : map(значение, изМеньш, изБольш, вМеньш, вБольш);
Значение — это значение, которое мы переносим.
изМеньш ,изБольш – это крайние значения текущего диапазона значений
вМеньш, вБольш – это крайние значения нового диапазона значений.
Вывод
На этом наш урок заканчивается. Можно переходить к следующему. Теперь ты можешь давать указания своему устройству через Serial monitor и потенциометр. Опираясь на знания, полученные в этом уроке можно придумать и другие способы отправки команд на контроллер. Чем мы и займемся, но немного позже.
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
Плата ArduinoArduino Uno1
СветодиодАЛ102Б1
Резистор220 Ом1
Переменный резистор10 кОм1
Соединительные провода"Папа-Папа"1
Макетная платаBreadboard-half1
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- command.ino (1 Кб)
- potentiometr.ino (1 Кб)