Ардуино как вывести значение в монитор порта

Делитель напряжения

Типы данных в среде Arduino. Считывание
значений. Монитор последовательного порта.
Создание условия.
boolean
char
byte
int
long
short
float
digitalRead
digitalWrite
analogRead
analogWrite
pulseIn
Serial.begin
Serial.print
Serial.println
If
else

2.

Типы данных
1. bool, boolean – может принимать одно из двух
значений: true или false (1 или 0).
Пример: boolean running = false; //running несёт в
себе отрицание, логическое «нет».
2. char — хранит символьное значение. Символы
пишутся в одинарных кавычках, например: ‘A’
(совокупность символов — строки — пишутся
в двойых кавычках: «ABC»).
Пример: char x = «ABCDEF»; //икс содержит в себе
символ «А»

Tinkercad, arduino, 6 урок. Считываем аналоговые значения. Монитор порта (монитор послед. интерфейс)

3.

Типы данных
3. byte , uint8_t – хранит 8-битное беззнаковое
число, от 0 до 255.
Пример: byte x = B10010; /* «B» — префикс
двоичной системы счисления B10010 = 18 в
десятичной системе*/
4. int, short, int16_t – основной тип данных для
хранения целых чисел от -32768 до 32767.
Пример: int x = 10; //x присвоено значение 10

4.

Типы данных
5. unsigned int, word, uint16_t – беззнаковое
целое число, также как и тип int (знаковое)
занимает в памяти 2 байта. Но в отличие от
int, тип unsigned int может хранить только
положительные целые числа в диапазоне от 0
до 65535

5.

Типы данных
6. long , int32_t – может хранить число от -2 147 483
648 до 2 147 483 647.
Пример: long x = 186000; //большое число
7. unsigned long , uint32_t – может хранить число от
0 до 4294967295. //очень большое число
8. float , double – может хранить очень большое
число с плавающей точкой (с точностью до 6-7
знаков)
Пример: float x = 9,81; //дробное число

6.

Тип
Синоним
Байт
Диапазон
bool
boolean
1
false, true
byte
uint8_t
1
0. 255
char
1
-128. 127
unsigned char
1
0. 255
int
short, int16_t
2
-32768. 32767
unsigned int
word, uint16_t
2
0. 65535
long
int32_t
4
-2147483648. 2147483647
unsigned long
uint32_t
4
0. 4294967295
float
double
4
-3.4028235E+38… 3.4028235E+38

7.

Функции digitalWrite() и digitalRead()
• Функция digitalWrite() отправляет на цифровой
вывод значение на заданный вход — HIGH или
LOW. Пример: digitalWrite(13, HIGH); /* подаём
высокий уровень сигнала на 13-й пин Arduino*/

Как работает монитор порта в Arduino?!


• Функция digitalRead() считывает значение с
заданного входа — HIGH или LOW.
val = digitalRead(13); /* считываем значение HIGH
или LOW с входа. Если на 13-м пине окажется
напряжение выше 2,6 В, то val будет иметь
значение HIGH */

8.

Функции analogWrite() и analogRead()
• Функция analogWrite() формирует заданное
аналоговое напряжение от 0 до 5 вольт на
выводе в виде ШИМ-сигнала. Может
использоваться для варьирования яркости
свечения светодиода или управления
скоростью вращения двигателя.
Пример: analogWrite(pin, value)
pin: вывод, на котором будет формироваться напряжение.
value: коэффициент заполнения – лежит в пределах от 0
(всегда выключен) до 255 (всегда включен).

Еще по теме:  Что делать если компьютер не видит второй монитор Windows 10

9.

Пример значений функции
«analogWrite» от 0 до 255

10.

Функции analogWrite() и analogRead()
• Функция analogRead() cчитывает величину
напряжения с указанного аналогового вывода.
Разрешающая способность АЦП* составляет: 5 В
/ 1024 значения или 0.0049 В (4.9 мВ) на одно
значение.
Пример: value = analogRead(pin);
pin: вывод, c которого будет считываться напряжение.
value: целое число int (от 0 до 1023)
Если аналоговый вход ни к чему не подключен, значение, возвращаемое
функцией analogRead(), будет меняться под влиянием нескольких факторов
(таких, как величина напряжения на других аналоговых входах, наводок от
вашей руки вблизи платы и т.д.).
* АЦП (Аналого-цифровой преобразователь) — устройство, преобразующее
входной аналоговый сигнал в дискретный код.

11.

Функция pulseIn()
Считывает длину сигнала на заданном порту (HIGH
или LOW).
Например, если задано считывание HIGH функцией
pulseIn(), функция ожидает пока на заданном порту не
появиться HIGH. Когда HIGH получен, включается
таймер, который будет остановлен когда на порту
вход/выхода будет LOW.
Функция pulseIn() возвращает длину сигнала в
микросекундах. Функция возвращает 0, если в
течение заданного времени (таймаута) не был
зафиксирован сигнал на порту.

12.

Функция pulseIn()
Синтаксис
pulseIn(pin, value)
pulseIn(pin, value, timeout)
Параметры
pin: номер порта вход/выхода, на котором будет ожидаться
сигнал. (int)
value: тип ожидаемого сигнала — HIGH или LOW.
timeout (опционально): время ожидания сигнала (таймаут)
в микросекундах; по умолчанию — одна секунда. (unsigned
long)
Возвращаемое значение
Длина сигнала в микросекундах или 0, если сигнал не
получен до истечения таймаута. (unsigned long)

13.

Пример pulseIn()
int pin = 7;
unsigned long duration;
void setup()
pinMode(pin, INPUT);
>
void loop()
duration = pulseIn(pin, HIGH);
>

14.

Serial
Класс Serial используется для связи платы
Ардуино с компьютером или другими
устройствами. Все платы Arduino имеют
последовательный порт (UART).
Он связан с цифровыми выводами 0 (RX) и 1 (TX),
а также используется для связи с компьютером
через USB.
Во время использования последовательного
порта, выводы 0 и 1 не могут использоваться в
качестве цифровых входов или выходов.

15.

Монитор порта в Arduino
Позволяет установить Arduino двунаправленую
связь с компьютером через виртуальный
последовательный порт.

16.

Класс Serial
• Serial.begin() – объявление начала работы с последовательным
портом указанием скорости в бодах* (baud). Прописывается в
самом начале в void setup()
void() setup Serial.begin(9600); /*начало работы с последовательным портом
на скорости 9600 бод в секунду*/
>

17.

Класс Serial
• Serial.print () – вывод значений в монитор
порта
• Serial.println() – вывод значений в монитор
порта на новую строку
Serial.print(“Hello world”) – на экране монитора
порта мы увидим надпись Hello world (без“”).
Serial.println(x) — на экране монитора порта мы
увидим значение переменной «x» в том
формате, в котором она представляется.

18.

Операторы сравнения
== равенство (a == b)
!= неравенство (a != b)
>= больше или равно (a >= b)
> больше (a > b)
< меньше (a < b)

19.

Оператор If (условие)
Для обозначения условий в Arduino используется такая конструкция:
if (условие)
// В этом блоке список команд, выполняющихся, если условие истино
или имеет значение, отличное от 0
>
else
// В этом блоке список команд, выполняющихся, если условие ложно или
имеет значение, равное 0
>
Можно обойтись и без блока else, если вы хотите делать что-то только при
выполнении условия и не будете ничего делать, если условие не
выполнилось.

Еще по теме:  Блок схема вывод на монитор

20.

Оператор If (условие)
Конструкция else if может быть использована с или без заключительного
else и наоборот. Допускается неограниченное число таких переходов else if.
if (x < 500)
// выполнять действие A
>
else if (x >= 1000)
// выполнять действие B
>
else
// выполнять действие C
>

21.

Практическая работа
1) Собрать схему в
Tinkercad c
фоторезистором и
резистором
постоянного
сопротивления на
1 кОм.

22.

Практическая работа
2) Переписать от руки код без комментариев,
переименновать переменную «x» на любую
другую, сменить аналоговый пин «А0» на
«A1».
Применить все исправления кода к схеме,
затем проверить работоспособность схемы в
эмуляторе: наблюдая в правой нижней части
значения монитора порта, изменить влияние
света на фоторезистор (нажать на него, затем
поперемещать появившийся ползунок)

23.

Код начальной программы

24.

Контрольное задание
• Имея исходный код программы, необходимо
разработать прибор, способный измерять
интенсивность света. Для индикации уровня
света необходимо использовать 5
светодиодов разного цвета. Разница
отображаемой светодиодами интенсивности
света между каждым светодиодом должна
быть около 20%.

Источник: ppt-online.org

Программирование Arduino урок 14 — чтение из последовательного порта

Программирование Arduino урок 14 — чтение из последовательного порта

До недавних пор, мы присваивали значения переменным, которые используются для выполнения различных действий, внутри самой программы. Например, чтобы изменить количество и длительность миганий светодиодов, необходимо «залезть» вовнутрь прошивки и изменить значения переменных ответственных за данные операции.

С одной стороны, нечего посторонним «шариться» по коду, а вот с другой стороны – представьте себе, что вам будут ежедневно приносить десятки контроллеров, в которых нужно поменять одно-два значения. Для решения данной дилемма нужно предоставить пользователю возможность изменять рабочие параметры без вмешательства в основной код. Чтобы сделать это, воспользуемся последовательным портом. Пара «контроллер-оператор» будет обмениваться информацией по последовательному порту.

Практическую часть сегодняшней статьи, мы будет «обкатывать» на всеми любимой схеме с двумя светодиодами.

Программирование Arduino урок 14 — чтение из последовательного порта

Эта схема позволит нам управлять двумя независимыми светодиодами, что подключены к выводам платы Аrduino.

На данный момент, наша программа имеет следующий вид.

Программирование Arduino урок 14 — чтение из последовательного порта

Напоминаю ещё раз, что приведённый код выступаем примером, чтобы было легче восстановить в памяти уже пройденный материал. Чтобы научится писать код – нужно писать код, а не «копипастить» разбросанную по просторам интернета информацию.

Пробежимся по коду:

  • В верхней части программы объявляем переменные и присваиваем им значения (мы пока работаем с переменными типа int и String)
  • В цикле «SETUP» настраиваем последовательный порт и конфигурим два вывода arduino на выход (OUTPUT).
  • В цикле «LOOP» создаём два цикла с фиксированным числом итераций (повторений): в одном мигаем зелёным светодиодом, а в другом — красным. Количество миганий и их длительность задаются в верхней части программы.

Нам нужно, чтобы контроллер спрашивал у пользователя, сколько раз нужно мигнуть зелёным светодиодом, а затем, сколько раз мигнуть красным. Чтобы принять данные от пользователя, нужно выполнить три действия:

  • Отправить запрос пользователю для ввода данных;
  • Подождать, пока пользователь введёт значение;
  • Считать информацию из последовательного порта.
Еще по теме:  Сколько дюймов монитор 1920х1080

Участок кода, который будет отправлять запрос «ввода данных» расположим в цикле «LOOP». То бишь, запрос будет отправляться каждый раз после прогонки двух циклов FOR. Объявляем переменные, присвоив им нулевые значения. С одной стороны присвоение нуля переменным, которые будет вводить пользователь, излишняя предосторожность, но мало ли, какой там сбой может произойти… лучше всегда занулять 🙂

int blinkNumberGreen = 3;

int blinkNumberRed = 3;

Теперь разберемся с кодом самого «запроса».

Serial.println(«Сколько раз Вы хотите, чтобы зелёный светодиод мигал?»);

Первая строка – отправляем сообщение пользователю с информацией о том, что мы от него хотим.

Вторая/третья строка – контроллер переходит в режим ожидания, до тех пор, пока не будут введены нужные данные. Для реализации этого момента воспользуемся циклом WHILE, который будет выполняться до тех пор, пока условия в скобках истинное.

Теперь перейдём непосредственно к условию Serial.available () == 0.

Serial.available () — это функция, которая возвращает «1», если пользователь вводит данные, и «0», если пользователь ничего не вводит. Таким образом, контроллер будет ждать, пока оператор не введёт данные, иными словами, пока Seraial.available () == 0, условие истинное, и программа останется в цикле while.
while(Serial.available()==0)

Обратите внимание, что мы ничего не делаем в цикле while, между двумя фигурными скобками нет команд. Цель этой строки — заставить программу «зациклится» до того момента, пока пользователь не введет данные.
После того, как пользователь введёт данные, Serial.avaialbe () станет «1», и программа перейдет к следующей строке кода.

Строка фактически считывает данные. Serial.parseInt () считывает число, которое вводит пользователь, а затем это значение присваивается переменной numRedBlinks. Для считывания целого число из последовательного порта, используем Serial.parseInt (). Для считывания других типов переменных существуют другие команды.

Например, для числа с плавающей точкой — Serial.parseFloat (), а чтобы считать строку, необходимо использовать Serial.readString (). Важно, использовать правильно команду для данных, которые вы пытаетесь считать.

Размещаем «запросы» в начале цикла LOOP для зелёного и красного светодиода соответственно.

Сохраняем прошивку, загружаем её в контроллер и открываем «монитор порта». Читаем сообщение, вводим значение в маленьком поле, а затем нажимаем отправить или клавишу ввода (энтер).

Программирование Arduino урок 14 — чтение из последовательного порта

П.С. Лично у меня появляется, какой-то дискомфорт от того, что я не вижу введённых мною значений. Будем это исправлять.

Программирование Arduino урок 14 — чтение из последовательного порта

  • Сделайте так, чтобы пользователь сам вводил длительность пребывания светодиода в включенном/выключенном состояниях;
  • Сделайте так, чтобы запрос к пользователю происходил всего один раз, а в дальнейшем программа благополучно обходилась без пользователя.

lesson_14

  • Поделки из дерева своими руками: фото, схемы, для начинающих
  • Как изготовить неньютоновскую жидкость самостоятельно в домашних условиях
  • Как сделать красивые коробки для хранения вещей: из ткани, из картона
  • Поделки из гипса для сада и дома своими руками и советы по уходу
  • Как сделать деревянную лодку своими руками: пошаговое руководство к действию
  • Скачайте бесплатные приложения онлайн-казино и игровые автоматы, почувствуйте волнение азарта
  • Инновации в онлайн казино: использование искусственного интеллекта и виртуальной реальности

Источник: mozgochiny.ru

Оцените статью
Добавить комментарий