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

Arduino:Примеры/LedDisplay scroll serial

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

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

Контакты:

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


Печать данных из последовательного порта[1]

Этот скетч демонстрирует, как при помощи библиотеки LedDisplay и платы Arduino печатать на LED-дисплее данные, пришедшие через последовательный порт.

Код

  1.  
  2. /*
  3.  
  4.  Библиотека LedDisplay
  5.  Язык: Arduino/Wiring
  6.  
  7.  Показывает на дисплее Avago HCMS-297x текстовую строку,
  8.  а также двигает ее. Кроме того, все, что вы передадите
  9.  через монитор порта, будет показано и на дисплее, но после того,
  10.  как Arduino получит символ новой строки или возврата каретки.
  11.  
  12.  Библиотека String наследует у библиотеки Wiring String:  
  13.  http://wiring.org.co/learning/reference/String.html
  14.  
  15.  Создан 12 июня 2008 года,
  16.  модифицирован 11 марта 2010 года Томом Иго (Tom Igoe).
  17.  
  18. */
  19.  
  20. #include <WString.h>
  21. #include <LedDisplay.h>
  22.  
  23. #define maxStringLength 180  // максимальная длина строки
  24.  
  25. // задаем контакты для LED-дисплея; их можно поменять,
  26. // но нужно переподключить контакты на самой плате:  
  27. #define dataPin 2              // для контакта DATA на дисплее
  28. #define registerSelect 3       // для контакта DATA на дисплее
  29. #define clockPin 4             // для контакта CLOCK на дисплее
  30. #define enable 5               // для контакта ENABLE на дисплее
  31. #define reset 6                // для контакта RESET на дисплее
  32.  
  33. #define displayLength 8        // количество символов на дисплее
  34.  
  35. // создаем экземпляр класса LedDisplay:
  36. LedDisplay myDisplay = LedDisplay(dataPin, registerSelect, clockPin,
  37. enable, reset, displayLength);
  38.  
  39. int brightness = 15;        // яркость экрана
  40. int myDirection = 1;        // направление движения (-1 = влево, 1 = вправо)
  41. String displayString;        // строка, показываемая в данный момент
  42. String bufferString;         // буфер для хранения входящих символов
  43.  
  44. void setup() {
  45.   Serial.begin(9600);
  46.   // задаем первую строку, которая будет показана на дисплее:
  47.   displayString = "Hello World!";  //  "Привет, мир!"
  48.  
  49.   // инициализируем библиотеку:
  50.   myDisplay.begin();
  51.   // печатаем первую строку и задаем яркость дисплея:
  52.   myDisplay.setString(displayString);
  53.   myDisplay.setBrightness(brightness);
  54. }
  55.  
  56. void loop() {
  57.   // считываем данные, идущие через последовательный порт:
  58.   while (Serial.available()>0) {
  59.     getSerial();
  60.   }В
  61.  
  62.   // двигаем строку влево и вправо:
  63.   if ((myDisplay.getCursor() > 8) ||
  64.     (myDisplay.getCursor() <= -(myDisplay.stringLength()))) {
  65.     myDirection = -myDirection;
  66.     delay(1000);
  67.   }
  68.   myDisplay.scroll(myDirection);
  69.   delay(100);
  70.  
  71. }
  72.  
  73. void getSerial() {
  74.   // считываем новый байт, пришедший через последовательный порт:
  75.   int inByte = Serial.read();
  76.   switch (inByte) {
  77.   case '\n':
  78. :
  79.     // если получили символ новой строки,
  80.     // копируем буфер в displayString:
  81.     displayString = bufferString;
  82.     // печатаем на дисплее новую строку:
  83.     myDisplay.setString(displayString);
  84.     // очищаем буфер:
  85.     bufferString = "";
  86.     break;
  87.   default:
  88.     // если получили буквенно-цифровое значение формата ASCII
  89.     // (т.е. что-либо больше пробела), добавляем его в буфер:
  90.     if (inByte >= ' ') {
  91.       bufferString.append(char(inByte));
  92.     }
  93.     break;
  94.   }
  95. }

См.также

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

  1. pjrc.com - LedDisplay.zip