Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | Последняя версия Следующая версия справа и слева | ||
main:upgkits:soundrobo [2020/05/26 20:18] smartadmin |
main:upgkits:soundrobo [2020/05/26 20:28] smartadmin |
||
---|---|---|---|
Строка 20: | Строка 20: | ||
===== Библиотеки ===== | ===== Библиотеки ===== | ||
* [[http://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE (для робота)]] | * [[http://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE (для робота)]] | ||
+ | * [[http://files.smartelements.ru/know_libs/Adafruit_NeoPixel.zip|Библиотека Adafruit_NeoPixel (для модуля светодиодов)]] | ||
===== Порядок действий ===== | ===== Порядок действий ===== | ||
==== Шаг 1. Пересоберите робота ==== | ==== Шаг 1. Пересоберите робота ==== | ||
Строка 46: | Строка 47: | ||
Проверить как робот будет определять количество хлопков можно с помощью скетча: | Проверить как робот будет определять количество хлопков можно с помощью скетча: | ||
<file Arduino> | <file Arduino> | ||
- | #include <SevenSegmentTM1637.h> //Подключение библиотеки для работы с дисплеем. | + | #include <Adafruit_NeoPixel.h> //Библиотека для работы со светодиодами |
- | const int PIN_SOUND = A2; //Вывод для подключения датчика звука | + | const int PIN_SOUND = A3; //Вывод для подключения датчика звука |
+ | const int PIN_LED = 11; //Вывод подключения адресных светодиодов | ||
int clap_q = 0; //Переменная, хранящая количество хлопков | int clap_q = 0; //Переменная, хранящая количество хлопков | ||
unsigned long time_long = 1000; //Время ожидания следующего хлопка | unsigned long time_long = 1000; //Время ожидания следующего хлопка | ||
- | SevenSegmentTM1637 display(13, 12); //Создание объекта дисплея. (CLK, DIO) | + | Adafruit_NeoPixel pixels(8, PIN_LED); //создание объекта адр. светодиодов |
//Определение количества хлопков | //Определение количества хлопков | ||
Строка 68: | Строка 70: | ||
claps_quantity(); //снова зайти в эту функцию | claps_quantity(); //снова зайти в эту функцию | ||
} | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //зажечь столько светодиодов, сколько определено хлопков | ||
+ | void light() | ||
+ | { | ||
+ | if (clap_q > 0) | ||
+ | { | ||
+ | for (int i = 0; i < clap_q; i++) | ||
+ | { | ||
+ | pixels.setPixelColor(i, pixels.Color(0, 255, 0)); //установка цвета свечения для очередного светодиода | ||
+ | pixels.show(); //показать цвет светодиода | ||
+ | delay(100); | ||
+ | } | ||
+ | |||
+ | delay(400); | ||
+ | pixels.clear(); | ||
+ | pixels.show(); | ||
} | } | ||
} | } | ||
Строка 73: | Строка 93: | ||
void setup() | void setup() | ||
{ | { | ||
- | display.begin(); //Инициализация дисплея. | + | pixels.begin(); //инициализация светодиодов |
- | display.setBacklight(100); //Установка яркости 100%. | + | |
- | display.print("INIT"); //Вывод надписи INIT на дисплей. | + | |
- | delay(1000); //Задержка величиной 1 с. | + | |
- | display.clear(); //Очистка дисплея. | + | |
} | } | ||
void loop() | void loop() | ||
{ | { | ||
- | clap_q = 0; //Сброс количества хлопков | + | clap_q = 0; //Сброс количества хлопков |
- | claps_quantity(); //Подсчёт количества хлопков | + | claps_quantity(); //Подсчёт количества хлопков |
- | if (clap_q > 0) { //Если их больше 0 | + | light(); //вывод количества хлопков |
- | display.clear(); //Очистить индикатор | + | |
- | display.print(clap_q); //Вывести количество хлопков | + | |
- | display.blink(); //Помигать | + | |
- | } | + | |
} | } | ||
- | |||
</file> | </file> | ||
- | После того как скетч будет загружен на контроллер, хлопайте в ладоши и смотрите как на индикаторе выводится количество распознанных хлопков. Каждый следующий хлопок считается только если он произведён не позднее чем в течении 1 секунды после предыдущего. | + | После того как скетч будет загружен на контроллер, хлопайте в ладоши и смотрите как с помощью светодиодов загорается количество распознанных хлопков. Каждый следующий хлопок считается только если он произведён не позднее чем в течении 1 секунды после предыдущего. |
==== Шаг 3. Установите библиотеки ==== | ==== Шаг 3. Установите библиотеки ==== | ||
- | Установите в Arduino IDE библиотеку, которая представлена по ссылке выше. О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий [[main:info:libs|раздел Базы Знаний]]. | + | Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше (в подпункте «Библиотеки»). О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий [[main:info:libs|раздел Базы Знаний]]. |
Строка 106: | Строка 116: | ||
<file Arduino> | <file Arduino> | ||
#include <robotSE.h> //Подключение библиотеки для работы с платформой. | #include <robotSE.h> //Подключение библиотеки для работы с платформой. | ||
- | #include <SevenSegmentTM1637.h> //Подключение библиотеки для работы с дисплеем. | + | #include <Adafruit_NeoPixel.h> //Библиотека для работы со светодиодами |
- | const int PIN_SOUND = A2; //Вывод для подключения датчика звука | + | const int PIN_SOUND = A3; //Вывод для подключения датчика звука |
+ | const int PIN_LED = 11; //Вывод подключения адресных светодиодов | ||
int clap_q = 0; //Переменная, хранящая количество хлопков | int clap_q = 0; //Переменная, хранящая количество хлопков | ||
Строка 115: | Строка 126: | ||
robotSE robot; //Создание объекта робота | robotSE robot; //Создание объекта робота | ||
- | SevenSegmentTM1637 display(13, 12); //Создание объекта дисплея. (CLK, DIO) | + | Adafruit_NeoPixel pixels(8, PIN_LED); //создание объекта адр. светодиодов |
//Определение количества хлопков | //Определение количества хлопков | ||
Строка 130: | Строка 141: | ||
claps_quantity(); //снова зайти в эту функцию | claps_quantity(); //снова зайти в эту функцию | ||
} | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //зажечь столько светодиодов, сколько определено хлопков | ||
+ | void light() | ||
+ | { | ||
+ | if (clap_q > 0) | ||
+ | { | ||
+ | for (int i = 0; i < clap_q; i++) | ||
+ | { | ||
+ | pixels.setPixelColor(i, pixels.Color(0, 255, 0)); //установка цвета свечения для очередного светодиода | ||
+ | pixels.show(); //показать цвет светодиода | ||
+ | delay(100); | ||
+ | } | ||
+ | |||
+ | delay(400); | ||
+ | pixels.clear(); | ||
+ | pixels.show(); | ||
} | } | ||
} | } | ||
Строка 135: | Строка 164: | ||
void setup() | void setup() | ||
{ | { | ||
- | display.begin(); //Инициализация дисплея. | + | pixels.begin(); //инициализация светодиодов |
- | display.setBacklight(100); //Установка яркости 100%. | + | |
- | display.print("INIT"); //Вывод надписи INIT на дисплей. | + | |
- | delay(1000); //Задержка величиной 1 с. | + | |
- | display.clear(); //Очистка дисплея. | + | |
} | } | ||
Строка 147: | Строка 172: | ||
claps_quantity(); //Подсчёт количества хлопков | claps_quantity(); //Подсчёт количества хлопков | ||
- | if (clap_q > 0) { //Если их больше 0 | + | light(); //Вывод количества хлопков |
- | display.clear(); //Очистить индикатор | + | |
- | display.print(clap_q); //Вывести количество хлопков | + | |
- | display.blink(); //Помигать | + | |
- | } | + | |
if (clap_q == 1) { //Если был один хлопок | if (clap_q == 1) { //Если был один хлопок | ||
robot.move_stop(); //Остановка робота | robot.move_stop(); //Остановка робота | ||
- | display.print("STOP"); //Вывести надпись | ||
} else if (clap_q == 2) { //Если было два хлопка | } else if (clap_q == 2) { //Если было два хлопка | ||
robot.move_forward(); //Двигаться вперёд | robot.move_forward(); //Двигаться вперёд | ||
- | display.print("FOWD"); //Вывести надпись | ||
} else if (clap_q == 3) { //Если было три хлопка | } else if (clap_q == 3) { //Если было три хлопка | ||
robot.move_back(); //Двигаться назад | robot.move_back(); //Двигаться назад | ||
- | display.print("BACK"); //Вывести надпись | ||
} else if (clap_q == 4) { //Если было четыре хлопка | } else if (clap_q == 4) { //Если было четыре хлопка | ||
robot.move_right(); //Двигаться вправо | robot.move_right(); //Двигаться вправо | ||
- | display.print("RIGH"); //Вывести надпись | ||
} else if (clap_q == 5) { //Если было пять хлопков | } else if (clap_q == 5) { //Если было пять хлопков | ||
robot.move_left(); //Двигаться влево | robot.move_left(); //Двигаться влево | ||
- | display.print("LEFT"); //Вывести надпись | ||
} | } | ||
} | } |