Arduino:Примеры/LedDisplay scroll serial
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин (Cubewriter) Контакты:</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 }
См.также
Внешние ссылки