Arduino:Примеры/ASCIITable
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.
Содержание
Вывод на Serial Monitor таблицы с ASCII-символами [1]
Демонстрирует продвинутые способы вывода информации на окно Serial Monitor посредством генерации таблицы с символами и их ASCII-значениями в десятичном, шестнадцатеричном, восьмеричном и двоичном видах. Чтобы узнать больше об ASCII, перейдите сюда и сюда.
Необходимое оборудование
- Плата Arduino;
Цепь
Нужно просто подсоединить Arduino к компьютеру.
Код
1 /*
2 Вывод на Serial Monitor таблицы с ASCII-символами
3 Выводит значения байтов во всех возможных форматах:
4 * в «сыром» бинарном виде
5 * ASCII-значения в десятичном, шестнадцатеричном, восьмеричном и бинарном видах
6
7 Для дополнительной информации об ASCII можно обратиться сюда http://www.asciitable.com и сюда http://en.wikipedia.org/wiki/ASCII.
8
9 Цепь: Никакого дополнительного оборудования не требуется.
10
11 Создан в 2006 году Николасом Замбетти (Nicholas Zambetti),
12 модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
13
14 Этот код не защищен авторским правом.
15
16 <http://www.zambetti.com>
17
18 */
19 void setup() {
20 // инициализируем последовательную передачу данных
21 // и ждем, когда откроется порт:
22 Serial.begin(9600);
23 while (!Serial) {
24 ; // ждем, когда подключится последовательный порт (нужно только для Leonardo)
25 }
26
27 // выводим заглавие (в конце – перевод строки):
28 Serial.println("ASCII Table ~ Character Map");
29 }
30
31 // первым числом таблицы будет 33 – оно соответствует ASCII-символу «!»:
32 int thisByte = 33;
33 // кроме того, можно сразу писать ASCII-символы,
34 // но для этого нужно использовать одинарные кавычки.
35 // например, '!' – это то же самое, что и 33, поэтому можно написать так:
36 // int thisByte = '!';
37
38 void loop() {
39 // выводим данные в исходном формате (т.е. бинарную версию байта).
40 // Serial Monitor расшифрует все байты как ASCII,
41 // поэтому 33 (самое первое число) появится как '!'
42 Serial.write(thisByte);
43
44 Serial.print(", dec: ");
45 // выводим данные в десятеричном ASCII-формате.
46 // десятичный формат является «родным» форматом
47 // для функций Serial.print() и Serial.println(),
48 // поэтому модификатор не требуется:
49 Serial.print(thisByte);
50 // но если хотите, модификатор все же можно задать.
51 // для этого просто удалите два слеша у строки ниже:
52
53 // Serial.print(thisByte, DEC);
54
55
56 Serial.print(", hex: ");
57 // выводим данные в шестнадцатеричном виде:
58 Serial.print(thisByte, HEX);
59
60 Serial.print(", oct: ");
61 // выводим данные в восьмеричном виде;
62 Serial.print(thisByte, OCT);
63
64 Serial.print(", bin: ");
65 // выводим данные в бинарном виде (в конце – перевод строки):
66 Serial.println(thisByte, BIN);
67
68 // последний символ – '~' или 126; если вывели и его, то стоп:
69 if(thisByte == 126) { // можно использовать и if(thisByte == '~') {
70 // этот цикл работает вечно и ничего не делает
71 while(true) {
72 continue;
73 }
74 }
75 // переходим к следующему символу
76 thisByte++;
77 }
Результат
1 ASCII Table ~ Character Map
2 !, dec: 33, hex: 21, oct: 41, bin: 100001
3 ", dec: 34, hex: 22, oct: 42, bin: 100010
4 #, dec: 35, hex: 23, oct: 43, bin: 100011
5 $, dec: 36, hex: 24, oct: 44, bin: 100100
6 %, dec: 37, hex: 25, oct: 45, bin: 100101
7 &, dec: 38, hex: 26, oct: 46, bin: 100110
8 ', dec: 39, hex: 27, oct: 47, bin: 100111
9 (, dec: 40, hex: 28, oct: 50, bin: 101000
10 ), dec: 41, hex: 29, oct: 51, bin: 101001
11 *, dec: 42, hex: 2A, oct: 52, bin: 101010
12 +, dec: 43, hex: 2B, oct: 53, bin: 101011
13 ,, dec: 44, hex: 2C, oct: 54, bin: 101100
14 -, dec: 45, hex: 2D, oct: 55, bin: 101101
15 ., dec: 46, hex: 2E, oct: 56, bin: 101110
16 /, dec: 47, hex: 2F, oct: 57, bin: 101111
17 0, dec: 48, hex: 30, oct: 60, bin: 110000
18 1, dec: 49, hex: 31, oct: 61, bin: 110001
19 2, dec: 50, hex: 32, oct: 62, bin: 110010
20 3, dec: 51, hex: 33, oct: 63, bin: 110011
21 4, dec: 52, hex: 34, oct: 64, bin: 110100
22 5, dec: 53, hex: 35, oct: 65, bin: 110101
23 6, dec: 54, hex: 36, oct: 66, bin: 110110
24 7, dec: 55, hex: 37, oct: 67, bin: 110111
25 8, dec: 56, hex: 38, oct: 70, bin: 111000
26 9, dec: 57, hex: 39, oct: 71, bin: 111001
27 :, dec: 58, hex: 3A, oct: 72, bin: 111010
28 ;, dec: 59, hex: 3B, oct: 73, bin: 111011
29 <, dec: 60, hex: 3C, oct: 74, bin: 111100
30 =, dec: 61, hex: 3D, oct: 75, bin: 111101
31 >, dec: 62, hex: 3E, oct: 76, bin: 111110
32 ?, dec: 63, hex: 3F, oct: 77, bin: 111111
33 @, dec: 64, hex: 40, oct: 100, bin: 1000000
34 A, dec: 65, hex: 41, oct: 101, bin: 1000001
35 B, dec: 66, hex: 42, oct: 102, bin: 1000010
36 C, dec: 67, hex: 43, oct: 103, bin: 1000011
37 D, dec: 68, hex: 44, oct: 104, bin: 1000100
38 E, dec: 69, hex: 45, oct: 105, bin: 1000101
См.также
Внешние ссылки