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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

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


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

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

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

  • Arduino Robot;

Инструкция

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

Пробуем

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

Код

/* «Привет, пользователь!»

Привет, юзер! Первый раз запустив Arduino Robot, вы увидите именно
этот скетч. Сначала робот сердечно вас поприветствует, затем покажет
пару своих умений и, наконец, запустит процесс, благодаря которому вы
будете считать, что это именно ваш робот и ничей другой. 

Цепь:
* Arduino Robot

Создан 1 мая 2013 Х. Янгом (X. Yang),
модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).

Этот код не защищен авторским правом.
*/

#include <ArduinoRobot.h> // подключаем библиотеку робота
#include <Wire.h>
#include <SPI.h>

// Подключаем функцию-утилиту для этого скетча (подробнее – ниже):
#include <utility/RobotTextManager.h>

char buffer[20];// здесь будем хранить имя пользователя

void setup() {
  // Инициализация необходимых «модулей»:
  Robot.begin();
  Robot.beginTFT();
  Robot.beginSD();

  // Показываем логотипы (с SD-карты):
  Robot.displayLogos();

  // Очищаем экран:
  Robot.clearScreen();

  // Далее показываем ряд слайдов с текстом/картинками.
  // Так называемые «скрипты» – это строки текста,
  // хранящиеся в памяти робота. 

  // То, как работают все эти функции, объясняется внизу, под кодом.

  // Скрипт 6:
  textManager.writeScript(5, 4, 0);
  textManager.writeScript(9, 10, 0);
  Robot.waitContinue();
  delay(500);
  Robot.clearScreen();

  // Скрипт 7:
  textManager.writeScript(6, 4, 0);
  textManager.writeScript(9, 10, 0);
  Robot.waitContinue();
  delay(500);
  Robot.clearScreen();

  // Скрипт 8. 
  // Эта функция одновременно включает звук и картинки:
  textManager.showPicture("init2.bmp", 0, 0);

  textManager.writeScript(7, 2, 0);
  textManager.writeScript(9, 7, 0);
  Robot.waitContinue();
  delay(500);
  Robot.clearScreen();

  // Скрипт 9:
  textManager.showPicture("init3.bmp", 0, 0);
  textManager.writeScript(8, 2, 0);
  textManager.writeScript(9, 7, 0);
  Robot.waitContinue();
  delay(500);
  Robot.clearScreen();

  // Скрипт 11:
  textManager.writeScript(10, 4, 0);
  textManager.writeScript(9, 10, 0);
  Robot.waitContinue();
  delay(500);
  Robot.clearScreen();

  // Экран ввода информации:
  textManager.writeScript(0, 1, 1);
  textManager.input(3, 1, USERNAME);

  textManager.writeScript(1, 5, 1);
  textManager.input(7, 1, ROBOTNAME);

  delay(1000);
  Robot.clearScreen();

  // Финальный экран:
  textManager.showPicture("init4.bmp", 0, 0);
  textManager.writeText(1, 2, "Hello");
  Robot.userNameRead(buffer);
  textManager.writeText(3, 2, buffer);

  textManager.writeScript(4, 10, 0);

  Robot.waitContinue(BUTTON_LEFT);
  Robot.waitContinue(BUTTON_RIGHT);
  textManager.showPicture("kt1.bmp", 0, 0);
}

void loop() {
  // здесь ничего не делаем
}


/**
Утилита textManager в большинстве своем содержит вспомогательные
функции для примеров «Калибровка колес» и «Привет, пользователь!»

В этом примере используются следующие:
 
*	textManager.setMargin(margin_left, margin_top)    

  Задает отступы от левого и верхнего краев экрана.
  Нужна для отображения текста – используется для функции
  textManager.writeText().

  Параметры: margin_left, margin_top – значения для отступа от
  верхней и левой части экрана.

  Возвращаемые результаты: нет. 


*	textManager.writeScript(script_number,line,column)

  Показывает скрипт из примера «Привет, пользователь!»

  Параметры: script_number – int-значение, означающее
  номер показываемого скрипта; line и column – в каком ряду и
  столбце будет показан скрипт, т.е. то же самое, что и в writeText().

  Возвращаемые результаты: нет. 

*	textManager.input(line,column,codename)	

  Печатает индикатор ввода («>») в ряду/столбце, отображает
  и получает данные, идущие от виртуальной клавиатуры, а также
  сохраняет их в определенном сегменте памяти EEPROM (сегмент
  определяется в зависимости от codename).

  Параметры: line и column – int-значения, указывающие, откуда будет
  начинаться ввод данных, т.е. то же самое, что и в writeText();
  codename – либо USERMANE, либо ROBOTNAME, либо CITYNAME, либо
  COUNTRYNAME, причем в дальнейшем эти значения можно будет вызвать с
  помощью функций Robot.userNameRead(), robotNameRead(),
  cityNameRead() и countryNameRead().

  Возвращаемые значения: нет. 

*	textManager.writeText(line,column,text)

  Показывает текст в указанных ряду и столбце. Она отличается от
  Robot.text(), т.к. последняя для размещения текста использует
  пиксели.

  Параметры: line – в каком ряду будет отображаться текст (высота
  каждого ряда – 10 пикселей); column – в каком столбце будет
  отображаться текст (ширина каждого столбца – 8 пикселей); text – 
  char-массив (строка) показываемого текста.

  Возвращаемые значения: нет.

*	textManager.showPicture(filename, x, y)

  У этой функции тот же функционал, что и у Robot.drawPicture(),
  но она вместе с тем устраняет конфликт между drawPicture() и 
  проигрыванием музыки (т.к. если одновременно с рисованием при помощи
  функции Robot.drawPicture() проигрывать музыку, то музыка будет
  подглючивать). Данная функция при рисовании останавливает
  музыку и тем самым предотвращает проблему.
  
  Параметры: filename – строка, название bmp-файла на SD-карте;
  x и y – int-значения, позиция картинки. 

  Возвращаемые значения: нет. 
*/

См.также

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

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