Arduino:Примеры/ConsoleASCIITable
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Вывод ASCII-таблицы через Console[1]
Этот пример для Arduino Yun демонстрирует, как при помощи класса Console выводить на компьютер таблицу с ASCII-значениями в десятичном, шестнадцатеричном, восьмеричном и двоичном видах. Более подробно об ASCII можно почитать, например, здесь.
Класс Console основан на библиотеке Bridge и позволяет вам отсылать информацию от Yun на компьютер. То есть он работает практически также, как и Serial, но предназначен для передачи данных беспроводным способом. Console создает безопасное соединение между Yun и вашим компьютером при помощи сетевого протокола SSH.
Когда Yun и компьютер подключатся к одной сети, запустите среду разработки Arduino, а затем откройте пункт меню «Инструменты» > «Порт» – Yun будет находиться именно здесь.
Необходимое оборудование
- Плата Arduino Yun;
- Компьютер и Yun должны находиться в одной сети (проводная или беспроводная – неважно);
Цепь
- Для этого примера цепи строить не нужно.
Код
Подключаем класс Console (он является наследником библиотеки Bridge).
#include <Console.h>
Создаем переменную, где будут храниться данные, выводимые в окне консоли. ASCII-символы до «32» невидимы, поэтому инициализируем переменную значением «33» (оно соответствует символу «!»).
int thisByte = 33;
В секции setup() инициализируем Bridge и Console, а затем ждем открытия порта. Если соединение установилось, выводим небольшое сообщение о том, что произойдет дальше:
void setup() {
Bridge.begin();
Console.begin();
while (!Console) {
; // ждем подключения порта
}
Console.println("ASCII Table ~ Character Map"); // "Таблица ASCII ~ Диаграмма символов"
}
В секции loop() выводим значение в нескольких разных форматах.
Чтобы увидеть ASCII-значение этой переменной, воспользуемся функцией Console.write(). В результате консоль переведет все заданные нами байты в ASCII-символы.
Console.write(thisByte);
Функция Console.print() выведет значение в виде строки «дешифрованных» ASCII-символов. Причем по умолчанию она выводит значения в десятичном виде.
Console.print(thisByte);
Функции Console.print() и Console.println() тоже могут отсылать на окно консоли строки со значениями, соответствующими тому или иному модификатору – шестнадцатеричному (HEX), восьмеричному (OCT) или двоичному (BIN). Кроме того, функция Console.println() добавляет строке символы новой строки и разрыва строки – это создаст в окне консоли перевод строки.
Console.print(thisByte, HEX);
Console.print(thisByte, OCT);
Console.println(thisByte, BIN);
В этом примере выводиться будут только алфавитно-цифровые символы, существующие в американской клавиатурной раскладке, поэтому завершим таблицу байтом со значением «126». Чтобы скетч, перед тем как остановиться, отправил все необходимые данные, воспользуемся функцию Console.flush().
if(thisByte == 126) {
Console.flush();
while(true) {
continue;
}
}
Чтобы при следующем проходе через цикл скетч занялся следующим по списку символом, увеличиваем значение в переменной thisByte на один.
thisByte++;
Весь скетч полностью – ниже:
/*
Вывод ASCII-таблицы через консоль
Выводит на окно консоли байты со значением от 33 до 126 во всех возможных форматах:
* в исходном двоичном значении
* в «дешифрованных» десятичном, шестнадцатеричном, восьмеричном и двоичном значениях
Более подробно об ASCII можно прочесть тут (http://www.asciitable.com) и тут (http://en.wikipedia.org/wiki/ASCII)
Цепь: Никакого внешнего оборудования не требуется.
Создан в 2006 Николасом Замбетти (Nicholas Zambetti),
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe),
еще раз модифицирован 22 мая 2013 Кристианом Мэгли (Cristian Maglie)
Этот код не защищен авторским правом.
<http://www.zambetti.com>
*/
#include <Console.h>
void setup() {
// Инициализируем Console и ждем открытия порта:
Bridge.begin();
Console.begin();
// Раскомментируйте строчку кода ниже, чтобы включить буферизацию, которая:
// - улучшит эффективность и скорость передачи данных
// - потребует вызова Console.flush() для обеспечения того,
// чтобы скетч в любом случае отправил все необходимые данные.
// Console.buffer(64);
while (!Console) {
; // ждем подключения порта Console.
}
// Выводим заголовок с символом перевода строки в конце:
Console.println("ASCII Table ~ Character Map"); // "Таблица ASCII ~ Диаграмма символов"
}
// Первым видимым символом в таблице ASCII является «!», которому соответствует число «33»:
int thisByte = 33;
// Впрочем, вместо чисел можно сразу указать ASCII-символ,
// но делать это нужно в одинарных кавычках.
// Например, '!' – это то же самое, что и «33», поэтому в скетче можно написать и так:
// int thisByte = '!';
void loop() {
// Сначала выводим значение в его неизменном виде, т.е. исходную бинарную версию байта.
// Консоль переведет все байты в ASCII-символы,
// т.е. самый первый номер, «33», будет показан как «!»:
Console.write(thisByte);
Console.print(", dec: ");
// Выводим в виде строки «дешифрованное» десятичное значение.
// Для функций Console.print() и Console.prinIn() десятичный формат является форматом по умолчанию,
// поэтому модификатор не требуется:
Console.print(thisByte);
// Впрочем, если хотите, то модификатор для десятичного формата все же можно продекларировать,
// поэтому нижеуказанная строчка кода, если ее раскомментировать, тоже будет работать:
// Console.print(thisByte, DEC);
Console.print(", hex: ");
// Выводим в виде строки «дешифрованное» шестнадцатеричное значение:
Console.print(thisByte, HEX);
Console.print(", oct: ");
// Выводим в виде строки «дешифрованное» восьмеричное значение:
Console.print(thisByte, OCT);
Console.print(", bin: ");
// Выводим в виде строки «дешифрованное» двоичное значение,
// а в конце ставим символ перевода строки:
Console.println(thisByte, BIN);
// Если добрались до последнего видимого символа,
// т.е. до «~» (он же «126»), останавливаемся:
if(thisByte == 126) { // но можно написать и if (thisByte == '~') {
// Ставим, чтобы обеспечить отправку всех данных до единого:
Console.flush();
// Этот цикл длится бесконечно и ничего не делает:
while(true) {
continue;
}
}
// Переходим к следующему символу:
thisByte++;
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino