Курс Arduino — Serial Monitor

Как управлять устройством?

В этом уроке мы научимся давать указания нашим устройствам. Сразу к делу.

Что нам нужно

  • Светодиод
  • Резистор 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)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.