Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Последняя версия Следующая версия справа и слева
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(1312); //Создание объекта дисплея. (CLK, DIO)+Adafruit_NeoPixel pixels(8PIN_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(1312); //Создание объекта дисплея. (CLK, DIO)+Adafruit_NeoPixel pixels(8PIN_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"​); ​ //​Вывести надпись 
   }   }
 } }