Amateur Radio Station R9AL

Arduino IDE

      Контроллер Arduino обменивается данными с компьютером использую USB-порт. На самом деле связь осуществляется по последовательному порту (Serial port, COM-порт), для этого на компьютере, при установке драйвера для работы с платой Arduino создается виртуальный COM-порт. На плате Arduino стоит конвертер USB-COM (именно для работы этого конвертера и нужен драйвер), позволяющий микроконтроллеру общаться с компьютером по последовательному интерфейсу. Для того чтобы принимать или передавать данные через к COM-порт к нему необходимо подключиться при помощи программ-терминалов порта.

В контроллере, на котором работает плата Arduino, поддержка последовательного порта встроена в сам контролер, выводы которого, пины D0 и D1 и являются входом и выходом этого порта. Именно поэтому пины D0 и D1 нельзя занимать датчиками в момент прошивки, так как если эти пины будут заняты, микроконтроллер не сможет получать данные, а программа Arduino IDE выдаст ошибку загрузки. Если к этим пинам все-таки нужно что-то все-таки подключить (например bluetooth-модуль), то следует сначала загрузить скетч, а уже потом подключаться к этим пинам.

Кстати, к этим пинам можно подключаться при помощи программатора, чтобы загрузить прошивку, ну или просто пообщаться с платой.

Интегрированная среда разработки Arduino IDE является программной частью Платформы Arduino. Использование терминала является частью работы с Arduino, поэтому разработчики решили включить последовательный терминал в программное обеспечение. В среде Arduino это называется Монитор порта.



Создание соединения

Монитор порта есть в любой версией Arduino IDE. Чтобы открыть его, просто щелкните значок "Монитор порта".



Выбор порта, который нужно открыть в мониторе, аналогичен выбору порта, для загрузки кода Arduino. Перейдите в "Инструменты" -> "Порт" и выберите тот же COM-порт, который вы используете в диспетчере устройств.



После открытия вы должны увидеть что-то вроде этого:





Настройки

Монитор порта имеет ограниченные настройки, но их достаточно для обработки большинства ваших коммуникационных потребностей. Первая настройка, которую вы можете изменить, это скорость передачи. Нажмите в раскрывающемся меню скорости передачи. (по умолчанию 9600 бод)



Можно установить терминал на автопрокрутку, установив флажок в нижнем левом углу.



Tinkercad circuit



В программе Tinkercad circuit тоже есть монитор порта, называется он "монитор последовательного интерфейса". Чтобы открыть окно монитора необходимо нажать кнопку "Код", внизу, после окна с текстом программы, будет кнопка для открытия монитора:



Функции millis() и micros()



Работу монитора порта рассмотрим на примеру функций millis() и micros()

millis() - функция, которая возвращает количество миллисекунд, которое прошло с момента начала выполнения программы. Это значение не может увеличиваться бесконечно и сбрасывается в ноль, в следствии переполнения примерно через 50 дней.

Разберем следующий код:

void setup()

{
Serial.begin(9600);
}

void loop()
{
   Serial.print("Time: ");
   Serial.println(millis());
   delay (1000);
}
После запуска программы кнопкой "Начать моделирования", в мониторе порта будут появляться следующие строки:



Итак, в блоке void setup() всего одна строка: Serial.begin(9600); Объект Serial - это набор функций для связи платы Arduino с компьютером или другими устройствами, поддерживающими последовательный интерфейс обмена данными. В данной строке, функция begin() инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод), в данном примере эта скорость 9600 бод. Для обмена данными с компьютером используются следующие значения: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200. При соединение через пины D0 и D1 могут быть использованы и другие значения скорости, требуемые устройством с которым будет осуществляться обмен данными.

Итак, в блоке void loop() две строки, с объектом Serial: Serial.print("Time: "); и Serial.println(millis());, и уже знакомая нам функция delay (1000);, которая просто останавливает выполнение программы на время 1000 миллисекунд (1 секунда).

Функция print() передает данные через последовательный порт. В данном примере, Serial.print("Time: "); выдаст в монитор порта Time:

Функция println() также передает данные через последовательный порт, но добавляет за переданными данными символ переноса строки, поэтому следующий вывод данных начнется с новой строки. В данном примере, Serial.println(millis()); выдаст в монитор порта количество миллисекунд, которое прошло с начала запуска программы, об этом позаботится функция millis()

В результате работы программы, на экране монитора каждую секунду появляется новая строка, содержащая количество миллисекунд, которое прошло с момента запуска программы.



miсros() - функция, которая возвращает количество микросекунд, которое прошло с момента начала выполнения программы. Это значение не может увеличиваться бесконечно и сбрасывается в ноль, в следствии переполнения примерно через 70 минут.

Изменим предыдущий код:

void setup()

{
Serial.begin(9600);
}

void loop()
{
   Serial.print("Time: ");
   Serial.println(micros());
   delay (1000);
}
После запуска программы, в мониторе порта будут появляться следующие строки:



Отличие от предыдущей программы лишь в одной строке: Serial.println(millis()); - эта функция выдаст в монитор порта количество микросекунд, которое прошло с начала запуска программы, об этом позаботится функция micros()

В результате работы программы, на экране монитора каждую секунду появляется новая строка, содержащая количество микросекунд, которое прошло с момента запуска программы.

Hello, world!



Обычно, этой фразой начинают знакомство с языком программирования. Мы же ею закончим знакомство с монитором порта:

void setup()

{
Serial.begin(9600);
}

void loop()
{
   Serial.print("Hello, world!");
   Serial.end();

}
Здесь для нас новой будет последняя строка: Serial.end(); - это функция, которая закрывает последовательное соединение. Если бы этой строки не было, то фраза "Hello, world!" передавалась бы в монитор непрерывно (попробуйте!), а так мы просто увидим:











Copyright © R9AL 2021 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования