Arduino:Примеры/RobotHello User

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

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


«Привет, пользователь!» [1]

Когда вы в первый раз запустите робота, то увидите именно этот скетч. Сначала робот сердечно вас поприветствует, потом продемонстрирует пару своих выдающихся умений, а затем даст ввести информацию для персонализации.

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

  • Arduino Robot;

Инструкция

  1. Загрузите скетч. USB можно оставить включенным
  2. После загрузочных картинок робот покажет серию слайдов, в которых объяснит, как работает этот скетч
  3. Когда дело дойдет до введения данных, в нижней половине экрана появится виртуальная клавиатура
  4. Для ввода информации используйте потенциометр (на верхней плате) и кнопки. Потенциометр позволяет выбрать нужную клавишу. Средняя кнопка вводит выбранную клавишу. Кнопки «Влево» и «Вправо» перемещают курсор. Закончив, нажмите «Enter» на виртуальной клавиатуре. Если нужно удалить символ, передвиньте курсор на нужную позицию, а затем, чтобы этот символ исчез, введите пробел
  5. А еще в этом скетче спрятан секрет. Попробуйте его найти!

Пробуем

LottieLemon hello user 780.png

Слушайте проигрываемую роботом музыку, а попутно вводите имена – свое и робота

Код

  1 /* «Привет, пользователь!»
  2 
  3 Привет, юзер! Первый раз запустив Arduino Robot, вы увидите именно
  4 этот скетч. Сначала робот сердечно вас поприветствует, затем покажет
  5 пару своих умений и, наконец, запустит процесс, благодаря которому вы
  6 будете считать, что это именно ваш робот и ничей другой. 
  7 
  8 Цепь:
  9 * Arduino Robot
 10 
 11 Создан 1 мая 2013 Х. Янгом (X. Yang),
 12 модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
 13 
 14 Этот код не защищен авторским правом.
 15 */
 16 
 17 #include <ArduinoRobot.h> // подключаем библиотеку робота
 18 #include <Wire.h>
 19 #include <SPI.h>
 20 
 21 // Подключаем функцию-утилиту для этого скетча (подробнее – ниже):
 22 #include <utility/RobotTextManager.h>
 23 
 24 char buffer[20];// здесь будем хранить имя пользователя
 25 
 26 void setup() {
 27   // Инициализация необходимых «модулей»:
 28   Robot.begin();
 29   Robot.beginTFT();
 30   Robot.beginSD();
 31 
 32   // Показываем логотипы (с SD-карты):
 33   Robot.displayLogos();
 34 
 35   // Очищаем экран:
 36   Robot.clearScreen();
 37 
 38   // Далее показываем ряд слайдов с текстом/картинками.
 39   // Так называемые «скрипты» – это строки текста,
 40   // хранящиеся в памяти робота. 
 41 
 42   // То, как работают все эти функции, объясняется внизу, под кодом.
 43 
 44   // Скрипт 6:
 45   textManager.writeScript(5, 4, 0);
 46   textManager.writeScript(9, 10, 0);
 47   Robot.waitContinue();
 48   delay(500);
 49   Robot.clearScreen();
 50 
 51   // Скрипт 7:
 52   textManager.writeScript(6, 4, 0);
 53   textManager.writeScript(9, 10, 0);
 54   Robot.waitContinue();
 55   delay(500);
 56   Robot.clearScreen();
 57 
 58   // Скрипт 8. 
 59   // Эта функция одновременно включает звук и картинки:
 60   textManager.showPicture("init2.bmp", 0, 0);
 61 
 62   textManager.writeScript(7, 2, 0);
 63   textManager.writeScript(9, 7, 0);
 64   Robot.waitContinue();
 65   delay(500);
 66   Robot.clearScreen();
 67 
 68   // Скрипт 9:
 69   textManager.showPicture("init3.bmp", 0, 0);
 70   textManager.writeScript(8, 2, 0);
 71   textManager.writeScript(9, 7, 0);
 72   Robot.waitContinue();
 73   delay(500);
 74   Robot.clearScreen();
 75 
 76   // Скрипт 11:
 77   textManager.writeScript(10, 4, 0);
 78   textManager.writeScript(9, 10, 0);
 79   Robot.waitContinue();
 80   delay(500);
 81   Robot.clearScreen();
 82 
 83   // Экран ввода информации:
 84   textManager.writeScript(0, 1, 1);
 85   textManager.input(3, 1, USERNAME);
 86 
 87   textManager.writeScript(1, 5, 1);
 88   textManager.input(7, 1, ROBOTNAME);
 89 
 90   delay(1000);
 91   Robot.clearScreen();
 92 
 93   // Финальный экран:
 94   textManager.showPicture("init4.bmp", 0, 0);
 95   textManager.writeText(1, 2, "Hello");
 96   Robot.userNameRead(buffer);
 97   textManager.writeText(3, 2, buffer);
 98 
 99   textManager.writeScript(4, 10, 0);
100 
101   Robot.waitContinue(BUTTON_LEFT);
102   Robot.waitContinue(BUTTON_RIGHT);
103   textManager.showPicture("kt1.bmp", 0, 0);
104 }
105 
106 void loop() {
107   // здесь ничего не делаем
108 }
109 
110 
111 /**
112 Утилита textManager в большинстве своем содержит вспомогательные
113 функции для примеров «Калибровка колес» и «Привет, пользователь!»
114 
115 В этом примере используются следующие:
116  
117 *	textManager.setMargin(margin_left, margin_top)    
118 
119   Задает отступы от левого и верхнего краев экрана.
120   Нужна для отображения текста – используется для функции
121   textManager.writeText().
122 
123   Параметры: margin_left, margin_top – значения для отступа от
124   верхней и левой части экрана.
125 
126   Возвращаемые результаты: нет. 
127 
128 
129 *	textManager.writeScript(script_number,line,column)
130 
131   Показывает скрипт из примера «Привет, пользователь!»
132 
133   Параметры: script_number – int-значение, означающее
134   номер показываемого скрипта; line и column – в каком ряду и
135   столбце будет показан скрипт, т.е. то же самое, что и в writeText().
136 
137   Возвращаемые результаты: нет. 
138 
139 *	textManager.input(line,column,codename)	
140 
141   Печатает индикатор ввода («>») в ряду/столбце, отображает
142   и получает данные, идущие от виртуальной клавиатуры, а также
143   сохраняет их в определенном сегменте памяти EEPROM (сегмент
144   определяется в зависимости от codename).
145 
146   Параметры: line и column – int-значения, указывающие, откуда будет
147   начинаться ввод данных, т.е. то же самое, что и в writeText();
148   codename – либо USERMANE, либо ROBOTNAME, либо CITYNAME, либо
149   COUNTRYNAME, причем в дальнейшем эти значения можно будет вызвать с
150   помощью функций Robot.userNameRead(), robotNameRead(),
151   cityNameRead() и countryNameRead().
152 
153   Возвращаемые значения: нет. 
154 
155 *	textManager.writeText(line,column,text)
156 
157   Показывает текст в указанных ряду и столбце. Она отличается от
158   Robot.text(), т.к. последняя для размещения текста использует
159   пиксели.
160 
161   Параметры: line – в каком ряду будет отображаться текст (высота
162   каждого ряда – 10 пикселей); column – в каком столбце будет
163   отображаться текст (ширина каждого столбца – 8 пикселей); text – 
164   char-массив (строка) показываемого текста.
165 
166   Возвращаемые значения: нет.
167 
168 *	textManager.showPicture(filename, x, y)
169 
170   У этой функции тот же функционал, что и у Robot.drawPicture(),
171   но она вместе с тем устраняет конфликт между drawPicture() и 
172   проигрыванием музыки (т.к. если одновременно с рисованием при помощи
173   функции Robot.drawPicture() проигрывать музыку, то музыка будет
174   подглючивать). Данная функция при рисовании останавливает
175   музыку и тем самым предотвращает проблему.
176   
177   Параметры: filename – строка, название bmp-файла на SD-карте;
178   x и y – int-значения, позиция картинки. 
179 
180   Возвращаемые значения: нет. 
181 */

См.также

  1. begin()
  2. beginTFT()
  3. beginSD()
  4. beginSpeaker()
  5. knobRead()
  6. keyboardRead()
  7. drawBMP()
  8. playFile()

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