Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Связь chevron_right ASCII Table — таблица символов через Serial

ASCII Table — таблица символов через Serial

Скетч выводит в Serial Monitor таблицу ASCII-символов с их кодами в десятичной, шестнадцатеричной, восьмеричной и двоичной системах счисления.

Этот пример демонстрирует расширенные возможности вывода через Serial: скетч формирует в Serial Monitor Arduino IDE полную таблицу печатаемых символов ASCII с их числовыми кодами в четырёх системах счисления — десятичной, шестнадцатеричной, восьмеричной и двоичной. Хороший способ разобраться, как Serial.print() работает с разными форматами вывода.

Подробнее о стандарте ASCII: asciitable.com и http://en.wikipedia.org/wiki/ASCII

Необходимое оборудование

Схема подключения

Плата Arduino UNO — никаких внешних компонентов не требуется. Достаточно подключить плату к компьютеру через USB.

Внешних компонентов нет — плата должна быть подключена к компьютеру через последовательный порт или USB порт.

Как это работает

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

  • Serial.print(value, DEC) — десятичное представление
  • Serial.print(value, HEX) — шестнадцатеричное
  • Serial.print(value, OCT) — восьмеричное
  • Serial.print(value, BIN) — двоичное

Если передать символьный тип (char), Serial.print() выведет сам символ, а не его числовой код. Именно это сочетание и используется в скетче: одна переменная, четыре вызова print() с разными форматами.

Код

Скетч ожидает установки соединения в setup(), после чего построчно выводит таблицу ASCII вплоть до последнего печатаемого символа. Когда вывод завершён, программа уходит в бесконечный цикл while — ничего больше не происходит. Чтобы запустить скетч заново, достаточно закрыть и снова открыть окно Serial Monitor в Arduino IDE: это перезагрузит плату.

Вывод в Serial Monitor

ASCII Table ~ Character Map
!, dec: 33, hex: 21, oct: 41, bin: 100001
", dec: 34, hex: 22, oct: 42, bin: 100010
#, dec: 35, hex: 23, oct: 43, bin: 100011
$, dec: 36, hex: 24, oct: 44, bin: 100100
%, dec: 37, hex: 25, oct: 45, bin: 100101
&, dec: 38, hex: 26, oct: 46, bin: 100110
', dec: 39, hex: 27, oct: 47, bin: 100111
(, dec: 40, hex: 28, oct: 50, bin: 101000
), dec: 41, hex: 29, oct: 51, bin: 101001
*, dec: 42, hex: 2A, oct: 52, bin: 101010
+, dec: 43, hex: 2B, oct: 53, bin: 101011
,, dec: 44, hex: 2C, oct: 54, bin: 101100
-, dec: 45, hex: 2D, oct: 55, bin: 101101
., dec: 46, hex: 2E, oct: 56, bin: 101110
/, dec: 47, hex: 2F, oct: 57, bin: 101111
0, dec: 48, hex: 30, oct: 60, bin: 110000
1, dec: 49, hex: 31, oct: 61, bin: 110001
2, dec: 50, hex: 32, oct: 62, bin: 110010
3, dec: 51, hex: 33, oct: 63, bin: 110011
4, dec: 52, hex: 34, oct: 64, bin: 110100
5, dec: 53, hex: 35, oct: 65, bin: 110101
6, dec: 54, hex: 36, oct: 66, bin: 110110
7, dec: 55, hex: 37, oct: 67, bin: 110111
8, dec: 56, hex: 38, oct: 70, bin: 111000
9, dec: 57, hex: 39, oct: 71, bin: 111001
:, dec: 58, hex: 3A, oct: 72, bin: 111010
;, dec: 59, hex: 3B, oct: 73, bin: 111011
<, dec: 60, hex: 3C, oct: 74, bin: 111100
=, dec: 61, hex: 3D, oct: 75, bin: 111101
>, dec: 62, hex: 3E, oct: 76, bin: 111110
?, dec: 63, hex: 3F, oct: 77, bin: 111111
@, dec: 64, hex: 40, oct: 100, bin: 1000000
A, dec: 65, hex: 41, oct: 101, bin: 1000001
B, dec: 66, hex: 42, oct: 102, bin: 1000010
C, dec: 67, hex: 43, oct: 103, bin: 1000011
D, dec: 68, hex: 44, oct: 104, bin: 1000100
E, dec: 69, hex: 45, oct: 105, bin: 1000101
...

Типичные ошибки и советы

Нет вывода в Serial Monitor. Убедитесь, что скорость передачи данных в мониторе совпадает с той, что задана в Serial.begin() в скетче. Обычно это 9600 бод.

Таблица выводится только один раз. Это нормальное поведение: после завершения цикла скетч входит в while(true) и останавливается. Нажмите кнопку Reset на плате или переоткройте Serial Monitor.

Символы отображаются некорректно. Проверьте, что в выпадающем меню Serial Monitor выбрана кодировка, совместимая с ASCII (обычно это UTF-8 или Latin-1 — для стандартной ASCII-таблицы разницы нет).

Узнать больше

Больше базовых примеров можно найти в разделе built-in examples.

Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.

Последнее обновление: 28.07.2015, SM