Arduino:Примеры/RobotPicturebrowser
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Браузер картинокArduino -
Arduino Robot можно запрограммировать таким образом, чтобы он функционировал в качестве просмотрщика картинок. Для этого нужно загрузить на SD-карту несколько изображений и запустить скетч, после чего эти изображения можно будет пролистывать на экране робота при помощи кнопок «Влево» и «Вправо». Более того, если нажать «Вверх» или «Вниз», вы переключите просмотрщик в другой режим, в котором пролистывание картинок будет осуществляться посредством наклона робота в стороны.
Необходимое оборудование
- Arduino Robot;
- SD-карта с несколькими картинками;
Инструкция
- Загрузите скетч. USB можно оставить подключенным (для питания);
- После загрузочной картинки на экране робота появятся инструкции;
- Затем на экране появится картинка из галереи;
- Чтобы пролистывать картинки, нажимайте левую, правую и среднюю кнопки;
- Нажмите «Вверх» или «Вниз», чтобы перейти в другой режим пролистывания картинок. То, какой режим активирован в данный момент, отображается в верхней части экрана;
- В «наклонном» режиме для пролистывания картинок нужно наклонять робота в стороны;
- Если хотите добавить в галерею собственные фотографии, они должны быть 24-битными, расширения «bmp» и с разрешением 128 х 160.
- Скетч поддерживает только 10 картинок – от «Pic0.bmp» до «Pic9.bmp». Хотите увеличить этот лимит? Попробуйте сами! Код скетча в вашем распоряжении;
Пробуем
Пролистывайте картинки при помощи кнопок «Влево» и «Вправо»
Вы можете поменять режим просмотра картинок, нажав на кнопку «Вниз». После этого изображения можно будет пролистывать, просто наклоняя робота в стороны.
Пролистывайте картинки, наклоняя робота
Код
/* Браузер картинок
Arduino Robot может служить в качестве просмотрщика картинок.
Загрузите на SD-карту несколько изображений, запустите скетч,
и они появятся на экране. Чтобы переключиться с одной картинки
на другую, используйте кнопки «Влево» и «Вправо». Впрочем, этот скетч
предусматривает и другой режим просмотра картинок – посредством
наклонов. Для того, чтобы войти в него, нажмите на «Вверх» или «Вниз».
В галерею можно добавлять и свои картинки. Для этого их нужно
загрузить на SD-карту, предварительно переделав в формат «bmp»,
сделав 24-битными и с разрешением 160 х 128. Кроме того, они должны
называться «picN.bmp», где вместо «N» должна стоять цифра от «0» до
«9».
Лимит на количество картинок – 10. Однако этот лимит можно повысить,
определенным образом поменяв код скетча. Как именно? Попробуйте
догадаться сами.
Цепь:
* Arduino Robot
Создан 1 мая 2013 Х. Янгом (X. Yang),
Модифицирован 12 мая 2013 Д. Куартиллье (D. Cuartielles).
Этот код не защищен авторским правом.
*/
#include <ArduinoRobot.h> // подключаем библиотеку робота
#include <Wire.h>
#include <SPI.h>
const int NUM_PICS = 4; // общее количество картинок в галерее
// Даем названия режимам просмотра:
const int CONTROL_MODE_KEY = 0;
const int CONTROL_MODE_COMPASS = 1;
char buffer[] = "pic1.bmp"; // название текущей картинки
int i = 1; // номер текущей картинки в галерее
int mode = 0; // текущий режим
// Текст, который будет отображаться на экране:
char modeNames[][9] = { "keyboard", "tilt " };
void setup() {
// Инициализируем робота, SD-карту и дисплей:
Robot.beginSD();
Robot.beginTFT();
Robot.begin();
// Рисуем на экране логотипы – «lg0.bmp» и «lg1.bmp»:
Robot.displayLogos();
// рисуем на экране картинку «init3.bmp» (с SD-карты):
Robot.drawBMP("init3.bmp", 0, 0);
// Отображаем инструкции:
Robot.stroke(0, 0, 0);
Robot.text("The gallery\n\n has 2 modes, in\n keyboard mode, L/R\n key for switching\n pictures, U/D key\n for changing modes", 5, 5); // "Просмотрщик\n\n умеет работать в двух\n режимах. Для пролистывания\n картинок в клавиатурном\n режиме нажимайте\n «Влево» и «Вправо». \n Режимы переключаются\n кнопками «Вверх» и «Вниз»"
delay(6000);
Robot.clearScreen();
Robot.drawBMP("pb.bmp", 0, 0);
Robot.text("In tilt mode,\n quickly tilt the\n robot to switch\n pictures", 5, 5); // "В «наклонном» режиме\n пролистывание картинок\n осуществляется при помощи\n наклонов робота"
delay(4000);
}
void loop() {
buffer[3] = '0' + i; // меняем имя показываемой картинки
Robot.drawBMP(buffer, 0, 0); // рисуем файл на экране
// Меняем режимы просмотра:
switch (mode) {
case CONTROL_MODE_COMPASS:
compassControl(3);
break;
case CONTROL_MODE_KEY:
keyboardControl();
break;
}
delay(200);
}
void keyboardControl() {
// Используем кнопки для управления галереей:
while (true) {
int keyPressed = Robot.keyboardRead(); // считываем значения кнопок
switch (keyPressed) {
case BUTTON_LEFT: // показываем предыдущую картинку
if (--i < 1) {
i = NUM_PICS;
}
return;
case BUTTON_MIDDLE: // ничего не делаем
case BUTTON_RIGHT: // показываем следующую картинку
if (++i > NUM_PICS) {
i = 1;
}
return;
case BUTTON_UP: // меняем режим
changeMode(-1);
return;
case BUTTON_DOWN: // меняем режим
changeMode(1);
return;
}
}
}
// Функция для управления с помощью компаса (т.е. с помощью наклонов):
void compassControl(int change) {
// Наклоняйте робота, чтобы переключать картинки:
while (true) {
// Считываем значение компаса:
int oldV = Robot.compassRead();
// Получаем информацию о изменении угла:
int diff = Robot.compassRead() - oldV;
if (diff > 180) {
diff -= 360;
} else if (diff < -180) {
diff += 360;
}
if (abs(diff) > change) {
if (++i > NUM_PICS) {
i = 1;
}
return;
}
// если нажата кнопка, меняем режим просмотра:
int keyPressed = Robot.keyboardRead();
switch (keyPressed) {
case BUTTON_UP:
changeMode(-1);
return;
case BUTTON_DOWN:
changeMode(1);
return;
}
delay(10);
}
}
// Меняем режим и отображаем его на экране:
void changeMode(int changeDir) {
// Альтернативные режимы:
mode += changeDir;
if (mode < 0) {
mode = 1;
} else if (mode > 1) {
mode = 0;
}
// Отображаем режим на экране:
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 12);
Robot.stroke(0, 0, 0);
Robot.text("Control:", 2, 2);
Robot.text(modeNames[mode], 52, 2);
delay(1000);
}
См.также
- begin()
- beginTFT()
- beginSD()
- keyboardRead()
- compassRead()
- drawBMP()
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino