Курс 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

Потенциометр или переменный резистор – это делитель из двух резисторов в одном корпусе. Сопротивление меняется поворотом ручки.

Мы соберем схему, которая будет в зависимости от поворота потенциометра отправлять в 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 и потенциометр. Опираясь на знания, полученные в этом уроке можно придумать и другие способы отправки команд на контроллер. Чем мы и займемся, но  немного позже.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Плата Arduino Arduino Uno 1
Светодиод АЛ102Б 1
Резистор 220 Ом 1
Переменный резистор 10 кОм 1
Соединительные провода "Папа-Папа" 1
Макетная плата Breadboard-half 1