Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/ASCIITable

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Вывод на Serial Monitor таблицы с ASCII-символами [1]

Демонстрирует продвинутые способы вывода информации на окно Serial Monitor посредством генерации таблицы с символами и их ASCII-значениями в десятичном, шестнадцатеричном, восьмеричном и двоичном видах. Чтобы узнать больше об ASCII, перейдите сюда и сюда.

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

  • Плата Arduino;

Цепь

Arduino bb.png

Нужно просто подсоединить 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

См.также

  1. ++ (инкремент)
  2. while
  3. Serial
  4. Serial Call and Response ASCII

Внешние ссылки

  1. Arduino - ASCII Table