Чтобы отобразить переменную x на мониторе порта, напишите

Обновлено: 21.11.2024

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

Отображение/запись задач

Синтаксис

И $display, и $write отображают аргументы в том порядке, в котором они появляются в списке аргументов.

$write не добавляет символ новой строки в конец своей строки, в то время как $display делает это, и это видно из примера, показанного ниже.

Пример

Стробы Verilog

$strobe выводит окончательные значения переменных в конце текущего дельта-шага по времени и имеет такой же формат, как $display .

Обратите внимание, что $strobe показывает окончательное обновленное значение переменной b в момент времени 10 нс, т. е. 0x2E, а $display показывает это только в следующей дельте симуляции в 11 нс.

Непрерывные мониторы Verilog

$monitor помогает автоматически распечатывать значения переменных или выражений всякий раз, когда изменяется переменная или выражение в списке аргументов. Аналогичный эффект достигается при вызове $display после каждого обновления любого из его аргументов.

Обратите внимание, что $monitor подобен задаче, созданной для запуска в фоновом режиме основного потока, который отслеживает и отображает изменения значений своих переменных-аргументов. Новая задача $monitor может запускаться любое количество раз во время моделирования.

Спецификаторы формата Verilog

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

Аргумент Описание
%h, %H Отображать в шестнадцатеричном формате
%d, %D Отображать в десятичном формате
%b, %B Отображать в двоичном формате
%m, %M Отображать иерархическое имя
%s, %S Отображать в виде строки
%t, %T Отображать в формате времени
%f, %F Отображать «действительное» в десятичном формате
%e, %E Отображение «реального» в экспоненциальном формате

Escape-последовательности Verilog

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

Во многих случаях при использовании Arduino вы захотите увидеть данные, генерируемые Arduino. Одним из распространенных способов сделать это является использование функции Serial.print() из библиотеки Serial для отображения информации на мониторе вашего компьютера.

В выпуске этой недели мы поговорим о тонкостях функции Serial.print().

Это первая часть из двух статей о функции Serial.print(). Вот конкретные темы, которые мы рассмотрим в этом уроке:

  • Зачем использовать функцию Serial.print()?
  • Краткий обзор библиотеки Serial
  • Основное использование функции Serial.print()

Почему вы хотите использовать функцию Serial.print()?

Возможно, вы знаете, что функция — это инструмент программирования, который выполняет за вас определенную задачу. Задача функции Serial.print() — отправить информацию с Arduino на ваш компьютер, чтобы вы могли видеть значение, отображаемое на мониторе вашего компьютера.

Существует бесконечное количество причин, по которым вы можете захотеть отправить информацию с Arduino на дисплей компьютера, но мне особенно запомнились две причины:

Первой причиной является возможность видеть информацию, которую вы генерируете с помощью Arduino.

Например, если у вас есть датчик температуры, подключенный к Arduino, и вы хотите увидеть значение, которое записывает датчик температуры, вы можете использовать функцию Serial.print() для отправки данных на монитор компьютера. через USB-кабель. Если вы откроете окно монитора последовательного порта (Инструменты > Монитор последовательного порта), вы увидите значения, поступающие из Arduino.

Еще одна важная причина для отправки информации на дисплей компьютера с помощью функции Serial.print() — это разработка и отладка скетчей Arduino.

Очень часто, когда вы разрабатываете скетч для Arduino, то, что вы в конечном итоге кодируете, делает что-то не так, как вы ожидали. Возможно, у вас есть переменная, которая время от времени увеличивается и мигает светодиодом, когда достигает порогового значения.Когда вы загружаете код в Arduino, вы замечаете, что светодиод мигает чаще, чем должен.

Вы можете смотреть на код до тех пор, пока ваши глаза не покроются кровью, но на самом деле визуализация увеличения переменной [через функцию Serial.print()], чтобы видеть ее значения каждый раз через цикл(), может очень помочь объяснить, что происходит. быстро.

Краткий обзор библиотеки сериалов

Мы не можем говорить о функции Serial.print(), не упомянув вкратце о библиотеке Serial.

Функция print() является частью библиотеки Serial. Мы говорим не о хлопьях, таких как Cheerios или Captain Crunch, а о последовательном, как в «одно за другим».

Последовательная библиотека позволяет нам подключать Arduino к другому оборудованию, например к компьютеру.

Чтобы мы могли использовать функции библиотеки Serial, мы должны инициировать последовательную связь — для этого мы используем функцию Serial.begin(). Serial.begin() должен войти в setup().

Теперь по причинам, выходящим за рамки этого обсуждения, удобно использовать число 9600 в функции Serial.begin(). Значение 9600 определяет скорость передачи данных. Скорость передачи — это скорость, с которой информация будет передаваться от Arduino к компьютеру или в другом направлении.

Основное использование функции Serial.print()

Давайте поговорим о том, как использовать функцию Serial.print().

Скажем, у нас есть эскиз. В этом скетче есть переменная с именем coolFactor.

Я хочу иметь возможность отслеживать значение переменной coolFactor, то есть я хочу, чтобы оно отображалось на экране моего компьютера. Идеальное использование функции Serial.print()!

Первое, что мы должны сделать в скетче Arduino, — начать последовательную связь. Как мы только что сказали, мы используем функцию Serial.begin() и помещаем ее в setup() скетча.

Теперь в цикле(), если я хочу отобразить значение coolFactor с помощью функции print(), я просто набираю Serial.print() и в скобках ввожу имя переменной.< /p>

Если мы загрузим этот скетч в Arduino, значение coolFactor будет каждый раз отправляться на последовательный порт через loop(). В Arduino IDE, если вы откроете окно монитора последовательного порта [Инструменты > Монитор последовательного порта], вы увидите поток значений.

Если вам понравился этот урок, я приглашаю вас присоединиться к 1000 студентов, которым понравился наш бесплатный ускоренный курс по Arduino — это серия обучающих видеороликов из 19 частей по использованию Arduino (вы можете зарегистрироваться ниже).

После входа в систему вы будете перенаправлены обратно к этому руководству и сможете подписаться на него.

Как и следовало ожидать, эскиз основан на эскизе, использованном в уроке 4. Поэтому здесь мы рассмотрим только новые элементы. Вам будет полезно обратиться к полному скетчу в Arduino IDE.

Во-первых, в функции "настройка" есть три новые строки в конце:

Во-первых, у нас есть команда 'Serial.begin(9600)'. Это запускает последовательную связь, так что Arduino может отправлять команды через USB-соединение. Значение 9600 называется «скоростью передачи» соединения. Это то, как быстро данные должны быть отправлены. Вы можете изменить это значение на более высокое, но вам также придется изменить монитор Arduio Serial на то же значение. Мы обсудим это позже, а пока оставьте значение 9600.

Строка, начинающаяся с «пока», гарантирует, что на другом конце USB-соединения есть что-то, с чем Arduino может связаться, прежде чем он начнет отправлять сообщения. В противном случае сообщение может быть отправлено, но не отображено. Эта строка необходима только в том случае, если вы используете Arduino Leonardo, потому что Arduino Uno автоматически сбрасывает плату Arduino, когда вы открываете Serial Monitor, тогда как с Leonardo этого не происходит.

Последняя из новых строк в «setup» отправляет сообщение, которое мы видим в верхней части последовательного монитора.

Функция «цикл» — это место, где происходит все действие:

Все, что происходит внутри цикла, содержится в операторе if. Поэтому, если вызов встроенной функции Arduino «Serial.available()» не является «истинным», ничего другого не произойдет.

Serial.available() вернет «true», если данные были отправлены в Arduino и готовы к обработке. Входящие сообщения хранятся в так называемом буфере, и Serial. available() возвращает true, если этот буфер не пуст.

Если сообщение получено, то оно переходит к следующей строке кода:

Это читает следующий символ из буфера и удаляет его из буфера. Он также присваивает его переменной 'ch'. Переменная «ch» имеет тип «char», что означает «символ» и, как следует из названия, содержит один символ.
Если вы следовали инструкциям в подсказке в верхней части Serial Monitor, то этот символ будет либо однозначной цифрой от 0 до 7, либо буквой «x».

Выражение 'if' в следующей строке проверяет, является ли это одной цифрой, определяя, является ли 'ch' больше или равным символу '0' и меньше или равным символу '7'. Такое сравнение символов выглядит немного странно, но вполне приемлемо.

Каждый символ представлен уникальным числом, называемым его значением ASCII. Это означает, что когда мы сравниваем символы, используя =, на самом деле сравниваются значения ASCII.

Если тест пройден, то переходим на следующую строку:

Теперь мы выполняем арифметические действия с символами! Мы вычитаем цифру «0» из любой введенной цифры. Таким образом, если вы набрали «0», то «0» — «0» будет равно 0. Если вы набрали «7», то «7» — «0» будет равно числу 7, потому что на самом деле используются значения ASCII. в вычитании.

Поскольку мы знаем номер светодиода, который мы хотим включить, нам просто нужно установить этот бит в переменной "светодиоды" и обновить сдвиговый регистр.

В первой строке используется Serial.print, а не Serial.println. Разница между ними заключается в том, что Serial.print не начинает новую строку после печати того, что находится в его параметре. Мы используем это в первой строке, потому что мы печатаем сообщение в двух частях. Сначала общий бит: «Включен светодиод», а затем номер светодиода.

Номер светодиода хранится в переменной 'int', а не в виде текстовой строки. Serial.print может принимать либо текстовую строку, заключенную в двойные кавычки, либо целое число, либо переменную практически любого типа.

После оператора if, обрабатывающего регистр, когда обрабатывается одна цифра, следует второй оператор if, который проверяет, является ли буква ch буквой x.

Впервые это руководство было опубликовано 4 декабря 2012 года. Последнее обновление: 4 декабря 2012 года.

11 июля 2019 г., Нилеш Чаурасия

Приложение функции последовательной печати Arduino

Функция Serial.write() отправляет данные в коде ASCII. Это означает, что если вы хотите отправить значение целочисленной переменной с помощью функции записи, вам необходимо преобразовать значение в формат ASCII.

Например, предположим, что переменная x имеет значение 87 x = 87; и мы хотим отправить 87 в последовательный монитор. Мы должны отправить два символа ASCII из 8 (0x38) и ASCII из 7 (0x37).

Разница в функциях последовательной печати и println

Серийный номер.write(x); функция отправляет x как ASCII, а Serial.print(x) преобразует x в цифры, а затем отправляет ASCII этих цифр.

функция записи используется для отправки переменной x типа int.

инт х = 87;
Serial.write(x);// это отправит «W» в последовательный монитор.

Примечание. Десятичное число 87 — это код ASCII для буквы «W».

функция печати используется для отправки переменной x типа int.

инт х = 87;
Serial.print(x);// это отправит «87» на монитор.

Примечание. Первая функция печати преобразует целое число в строку ( 87 ) и отправляет «87».

Как использовать функцию последовательной печати Arduino для отправки целочисленной переменной

Очень сложно отправить значение целочисленной переменной с помощью функции Serial.write(), в примере ниже показано использование функции печати для той же задачи.

Пример 1. Синтаксис функции Serial.print для отправки целого числа через последовательный порт.

Приведенный выше код представляет собой простой тест функции печати. Через каждую секунду вызывается функция печати и записи и отправляются данные из целочисленной переменной x ( 87 ).

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

Рис. 1. Различие функций последовательной печати Arduino и записи для отправки целочисленной переменной.

На рис. 1 показаны символы, полученные в программе монитора «W» и умноженные на 87, потому что 87 — это десятичный эквивалент «W».

Как использовать функцию последовательной печати Arduino для отправки строковой переменной или текста

Функция печати также может использоваться для отправки строки или текстовой переменной через последовательный порт. В приведенном ниже примере показан код для того же самого.

Пример 2. Синтаксис функции Serial.print для отправки строки через последовательный порт.

Приведенный выше код представляет собой простой тест функции печати для отправки строки.

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

Рис. 2 – Функция последовательной печати для отправки текстового вывода

На рис. 2 показана строка, полученная в последовательном мониторе.

Функция серийной печати Arduino

Функция println Arduino Serial делает то же самое, что и print, кроме того, println также отправляет символ новой строки ( \n ) в конце.

Это означает, что после отправки целого числа или строки println отправляет еще одну вещь, то есть новую строку. В последовательном мониторе символ новой строки не виден, но следующая полученная информация отображается на новой строке.

В приведенном ниже примере показан десятичный код ASCII алфавита от «a» до «z».

Пример 3. Синтаксис функции Serial.println для отправки таблицы ASCII через последовательный порт.

Приведенный выше код является простой проверкой функции println, используемой в последней для завершения строки после отправки десятичного значения символа.

Рис.3. Функция Serial Println для генерации десятичного значения ASCII из символа от a до z Программный вывод

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

Размещено в Arduino Теги: Интерфейс Arduino

4 ответа на «Последовательная печать Arduino и функция Println для отправки целочисленной переменной и текстового программного кода»

Отличное сочинение в поддержку всех онлайн-посетителей. я уверен, что они получат от этого выгоду.|

Когда кто-то пишет абзац, он/она сохраняет образ пользователя в своем уме так, как пользователь может его понять. Вот почему эта статья является выдающейся. Спасибо!|

Привет, я так рад, что нашел ваш блог, я действительно нашел вас по ошибке, когда искал на Aol что-то еще, несмотря ни на что, я сейчас здесь и просто хотел бы поблагодарить за потрясающий пост и всестороннее интересный блог (мне также нравится тема / дизайн), у меня нет времени просматривать его все в минуту, но я сохранил его, а также добавил ваши RSS-каналы, поэтому, когда у меня будет время, я вернусь, чтобы прочитать больше, Пожалуйста, продолжайте в том же духе.|

Приятно зайти на этот сайт и прочитать мнения всех друзей об этом посте,
хотя мне тоже не терпится познакомиться.

У вас есть плата Arduino, и вы не знаете, как начать работу с серийным монитором Arduino? Если это так, вы находитесь в правильном месте! В сегодняшнем учебном пособии по последовательному монитору я расскажу вам, как легко начать работу!

Введение в последовательный монитор Arduino

Изображение предоставлено: Arduino Create

Прежде чем мы начнем с руководства, вот краткое введение в Arduino Serial Monitor для тех, кто не уверен!

Мы все знаем об Arduino IDE; среда разработки Arduino с функцией, которая помогает пользователям отлаживать скетчи и управлять вашим устройством с клавиатуры компьютера. Но для работы этой функции требуется The Serial Monitor, отдельное всплывающее окно, которое получает и отправляет последовательные данные для связи.

Короче говоря, монитор последовательного порта Arduino предназначен для того, чтобы помочь таким пользователям, как вы, отлаживать программные скетчи Arduino или просматривать данные, отправленные рабочим скетчем.

Пошаговое руководство по последовательному монитору Arduino

Шаг 1. Подготовка необходимого

*Другие платы Arduino также работают

Подключите плату Arduino с помощью USB-кабеля для активации Serial Monitor

Шаг 2. Скопируйте и вставьте эскиз в последовательный монитор

Поскольку Arduino и скетч сбрасываются при каждом запуске Arduino Serial Monitor, вам понадобится пример скетча последовательной связи для копирования и вставки

Шаг 3. Знакомство с интерфейсом последовательного монитора

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

Изображения предоставлены: YourDuino

Что вы видите на последовательном мониторе Что это такое и для чего оно нужно
Маленькое верхнее поле Для ввода символов (нажмите или нажмите «отправить»)
Большая область (можно увеличить, перетащив угол) Отображение символов, отправленных из Arduino
Вытягивание конца строки Устанавливает «конец строки», который будет отправлен в Arduino, когда вы или нажмете «Отправить»
Понижение скорости передачи данных Устанавливает скорость передачи данных для связи
Если скорость передачи данных не соответствует значению, установленному в настройках скетча, символы будут нечитаемы

Шаг 4. Отладка с помощью Serial Monitor

Когда вы тестируете новый скетч, вам нужно знать, что происходит в процессе тестирования. Вы можете сделать это, используя Serial Monitor и добавив в свой эскиз коды для отправки символов.

Этап настройки:

Во время настройки вам необходимо установить последовательную связь и установить скорость передачи данных. Код выглядит так:

Цикл:

Вы можете распечатать полезную информацию в Serial Monitor со следующими примерами:

Шаг 4. Вход в командный режим

Модуль WiFly RN-171 в WiFi шилде может работать в двух режимах: данных и команд.

  • В режиме передачи данных: Shield может принимать и инициировать подключения.
  • В командном режиме: мы можем настроить модуль с помощью команд, перечисленных в техническом описании.

Мы войдем в командный режим, выполнив следующие действия:

  1. Откройте последовательный монитор Arduino
  2. Установите для монитора последовательного порта значение «Без окончания строки», скорость передачи данных 9600 бод.
  3. Введите «$$$» в серийный монитор Arduino и нажмите клавишу ввода.
  4. Модуль ответит буквами «CMD», указывая на то, что он перешел в командный режим.

Давайте проверим некоторые команды следующим образом:

  1. В окне последовательного монитора Arduino выберите «Возврат каретки» и скорость передачи 9600 бод.
  2. Теперь введите каждую из команд в таблице ниже в серийный монитор Arduino и нажмите клавишу ввода.
  3. Модуль будет выводить ответ, как описано в таблице, для каждой команды.

Полный список команд настройки см. в Справочном руководстве по RN-171, начиная со стр. 11

Использование серийного монитора Arduino в веб-редакторе Arduino

Кредиты

Вместо обычного последовательного монитора Arduino вы можете получить доступ к веб-версии на Arduino Create Editor, онлайн-платформе, которая не только предоставляет те же возможности, но и не ограничена расстоянием, поскольку к ней можно получить доступ через Интернет!< /p>

Вы можете найти полное руководство в Arduino Project Hub!

Альтернативы последовательного монитора Arduino

Последовательный монитор Arduino поддерживает только базовую последовательную связь, но ему не хватает возможностей, которые предлагают другие последовательные мониторы:

Монитор последовательного порта от Eltima (SPM)

Изображения предоставлены

Этот монитор последовательного порта — отличный способ сравнить и проанализировать информацию, отправленную с Arduino. С помощью этого приложения вы можете:

COM-порты активного монитора

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

Одновременный мониторинг нескольких портов

С помощью SPM вы также можете отслеживать активность нескольких COM-портов одновременно, при этом сбор данных осуществляется по принципу "первым пришел - первым обслужен"

Фильтрация данных и доступ к режимам визуализации

Данные можно фильтровать и упрощать, что позволяет выбрать наиболее важные. Более того, данные могут отображаться в разных представлениях; строка, таблица, дамп и терминал.

PuTTY от Саймона Татема: серийный монитор для Windows

Изображения предоставлены

Другой альтернативой последовательному монитору Arduino является PuTTY, бесплатный клиент SSH и Telnet.

PuTTY — это не только хороший вариант последовательного терминала, но и работа с telnet, ssh и множеством других вещей!

Если вы используете Windows, это хорошая альтернатива!

Примечание. Использование PuTTY строго запрещено в странах, где шифрование запрещено законом. Убедитесь, что вы проживаете в стране, которая разрешает его использование. Здесь вы можете найти полезную информацию об удобстве использования.

Экран: Serial Monitor для Mac, Linux

Изображения предоставлены Baldengineer

Screen — это полноэкранный эмулятор VT100, работающий из командной строки. Это позволяет создать терминальный клиент с возможностью «отсоединения» от текущего терминала для работы в фоновом режиме. Перейдите к терминалу и запустите экран!

Что лучше; Screen уже есть на Mac и Linux, скачивать не нужно!

Ресурсы и дальнейшее развитие

Последовательный монитор Arduino не работает?

Попробуйте последовательный монитор со светодиодной подсветкой:

Ресурсы по защите WiFi

Сводка

Это все, что касается руководства по последовательному монитору Arduino.Если вы хотите не только включить в Arduino возможности WiFi, но и опробовать широкий спектр возможностей последовательного монитора Arduino, приобретите WiFi Shield V2.0!

Читайте также: