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

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

Перевод: Максим Кузьмин (Cubewriter) Перевел 364226 статей для сайта.</br>Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Печать данных из последовательного порта[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 }

См.также

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