Съдържание:

Ритъмна ръка: 6 стъпки
Ритъмна ръка: 6 стъпки

Видео: Ритъмна ръка: 6 стъпки

Видео: Ритъмна ръка: 6 стъпки
Видео: 11 животных, о которых ученые узнали совсем недавно 2024, Ноември
Anonim
Ритъмна ръка
Ритъмна ръка

Тази кибер ръкавица е за правилното движение в точния момент.

Светлините преминават от ръката (лакътя) към ръката ви и когато светлините пристигнат в ръката ви, трябва да натиснете пръстите си върху мини фотоклетката.

Ако натиснете ръката си върху мини фотоклетката в подходящия момент, светодиодите стават зелени. Ако не, светодиодите стават червени.

Стъпка 1: Съберете материали

  • Ръкавица
  • Плат за удължаване на ръкавицата
  • WS2812B LED лента
  • Проводници
  • Arduino
  • Мини фотопродажба

Стъпка 2: Създаване на вериги

Изработка на вериги
Изработка на вериги
Изработка на вериги
Изработка на вериги

Първо свържете LED лентата към arduino. Можете да направите това, като свържете +5v към 5v на arduino. Din трябва да бъде свързан към A0 на arduino и GND трябва да бъде свързан към GND на arduino.

Също така трябва да свържете мини фотоклетката към arduino чрез свързване към 5v проводника от LED лентата и от същия източник, свързващ се с проводник към PIN 6 на arduino. Другата страна на мини фотоклетката трябва да бъде свързана към проводника GND от светодиодната лента

Стъпка 3: Проектиране на ръкавицата

Проектиране на ръкавицата
Проектиране на ръкавицата

Ръкавицата трябва да има правилния размер, за да пасне на светодиодните ленти. Светодиодите трябва да бъдат подравнени, за да изглеждат по -приятни.

За тази игра трябва да използвате ръката си и искате да можете да се движите свободно. Това може да се осъществи, като поставите arduino върху ръкавицата. Използвах велкро като закопчалка, за да залепя arduino към ръкавицата. След това за установяване на по -голяма стабилност можете да поставите въже около ръкавицата и около arduino.

Мини фотоклетката е зашита вътре в ръкавицата, така че ще остане на мястото си.

И накрая, трябва да скриете проводниците, за да изглежда по -добре. Това може да се направи с плат, който ще бъде пришит върху проводниците.

Стъпка 4: Запояване

Запояване
Запояване

Сега можете да направите защитните свързващи проводници от веригата чрез запояване.

Стъпка 5: Кодиране

Кодиране
Кодиране
Кодиране
Кодиране
Кодиране
Кодиране

// Основна ежедневна програма за тест на NeoPixel strip.

// NEOPIXEL НАЙ -ДОБРИТЕ ПРАКТИКИ за най -надеждна работа: // - Добавете 1000 uF CAPACITOR между + и - връзките на NeoPixel лентата. // - Минимизирайте дължината на кабелите между платката на микроконтролера и първия пиксел. //-DATA-IN на NeoPixel лентата трябва да премине през 300-500 OHM RESISTOR. // - ИЗБЯГВАЙТЕ свързването на NeoPixels на ЖИВА КРЪГ. Ако трябва, ВИНАГИ // първо свържете GROUND (-), след това +, след това данни. //-Когато използвате 3.3V микроконтролер с 5V задвижвана NeoPixel лента, // СИЛНО СЕ ПРЕПОРЪЧВА КОНВЕРТОР НА ЛОГИЧЕСКО НИВО на линията за данни. // (Пропускането им може да работи добре на работната ви маса, но може да се провали в полето)

#include #ifdef _AVR_ #include // Изисква се за 16 MHz Adafruit Trinket #endif

// Кой щифт на Arduino е свързан с NeoPixels? // На дрънкулка или Gemma предлагаме да промените това на 1: #define LED_PIN 6

// Колко NeoPixels са свързани към Arduino? #дефинирайте LED_COUNT 60

// Декларираме нашия обект на лента NeoPixel: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Бял цвят, по подразбиране bool clickedCorrect = false; // Аргумент 1 = Брой пиксели в NeoPixel лента // Аргумент 2 = Номерът на пина на Arduino (повечето са валидни) // Аргумент 3 = Знамена за тип пиксел, добавете заедно, ако е необходимо: // NEO_KHZ800 800 KHz битов поток (повечето NeoPixel продукти w/ WS2812 LED) // NEO_KHZ400 400 KHz (класически „v1“(не v2) FLORA пиксели, драйвери WS2811) // NEO_GRB Пикселите са свързани за GRB битстрийм (повечето продукти NeoPixel) // NEO_RGB Пикселите са свързани за RGB битови потоци (v1 FLORA пиксели, не v2) // NEO_RGBW Пикселите са свързани към RGBW битстрийм (NeoPixel RGBW продукти)

// функция setup ()-стартира веднъж при стартиране --------------------------------

void setup () {// Тези линии са специално за поддръжка на Adafruit Trinket 5V 16 MHz. // Всяка друга дъска, можете да премахнете тази част (но няма вреда да я оставите): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // КРАЙ на специфичния за Trinket код.

pinMode (A0, INPUT); strip.begin (); // ИНИЦИАЛИЗИРАЙ обект на лента NeoPixel (ЗАДЪЛЖИТЕЛНО) strip.show (); // Изключете всички пиксели ASAP strip.setBrightness (10); // Задайте BRIGHTNESS на около 1/5 (макс = 255)}

// функция loop ()-работи многократно, докато платката е включена ---------------

void loop () {clickedCorrect = TheaterChaseOne (цвят); if (щракнатоКоректно) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Някои наши функции за създаване на анимирани ефекти -----------------

// Преследващи светлини в стил театър-шатра. Предайте цвят (32-битова стойност, // a la strip. Цвят (r, g, b), както е споменато по-горе), и време на забавяне (в ms) // между кадрите. bool theatreChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; for (int index = 0; index 800) {// стойностен сензор за светлина if (index <16) {// 2 светодиода преди края, тогава можете да щракнете върху color = strip. Color (255, 0, 0); // светодиоди в червен цвят clickedWrong = true; // щракнали неправилно, след това светодиодите стават червени} else if (! clickedWrong) {// ако не е грешно color = strip. Color (0, 255, 0); // зелен цвят светодиоди правилно = вярно; // щракнете правилно, след което светодиодите стават зелени}} strip.clear (); strip.setPixelColor (17 - индекс, цвят); // първи ред LED светлини strip.setPixelColor (18 + индекс, цвят); // втори ред LED светлини strip.setPixelColor (53 - индекс, цвят); // трети ред LED светлини strip.show (); забавяне (300); } връщане правилно; }

Стъпка 6: Промени

Промени
Промени
Промени
Промени
Промени
Промени

Направих някои промени. Първо скрих arduino, за да бъде по -удобно да използвам „ръката на Rythm“и второ промених малко кода. Промених кода, така че когато натиснете в подходящия момент, цветът става зелен и светодиодите се движат по -бързо. По този начин LED Swill ще стане с 10% по -бърз от преди. Това прави играта по -интересна

Ето кода сега:

// Основна ежедневна програма за тест на NeoPixel strip. // NEOPIXEL НАЙ -ДОБРИТЕ ПРАКТИКИ за най -надеждна работа: // - Добавете 1000 uF CAPACITOR между + и - връзките на NeoPixel лентата. // - Минимизирайте дължината на проводниците между платката на микроконтролера и първия пиксел. //-DATA-IN на NeoPixel лентата трябва да премине през 300-500 OHM RESISTOR. // - ИЗБЯГВАЙТЕ свързването на NeoPixels на ЖИВА КРЪГ. Ако трябва, ВИНАГИ // първо свържете GROUND (-), след това +, след това данни. //-Когато използвате 3.3V микроконтролер с 5V задвижвана NeoPixel лента, // СИЛНО СЕ ПРЕПОРЪЧВА КОНВЕРТОР НА ЛИГИЧЕСКО НИВО на линията за данни. // (Пропускането им може да работи добре на работната ви маса, но може да се провали в полето) #include #ifdef _AVR_ #include // Изисква се за 16 MHz Adafruit Trinket #endif // Кой щифт на Arduino е свързан към NeoPixels? // На дрънкулка или Gemma предлагаме да промените това на 1: #define LED_PIN 6 // Колко NeoPixels са свързани към Arduino? #define LED_COUNT 60 // Декларирайте нашия обект на лента NeoPixel: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Бял цвят, по подразбиране bool clickedCorrect = false; int индекс = 0; int интервал = 300; int резултат = 0; без подпис дълги предходниMs = millis (); // Аргумент 1 = Брой пиксели в NeoPixel лента // Аргумент 2 = Номерът на пина на Arduino (повечето са валидни) // Аргумент 3 = Знамена за тип пиксел, добавете заедно, ако е необходимо: // NEO_KHZ800 800 KHz битов поток (повечето NeoPixel продукти w/ WS2812 LED) // NEO_KHZ400 400 KHz (класически 'v1' (не v2) FLORA пиксели, драйвери WS2811) // NEO_GRB Пикселите са свързани за GRB битстрийм (повечето продукти NeoPixel) // NEO_RGB Пикселите са свързани за RGB битови потоци (v1 FLORA пиксели, не v2) // NEO_RGBW Пикселите са свързани за битов поток RGBW (NeoPixel RGBW продукти) // функцията setup ()-стартира веднъж при стартиране -------------------- ------------ void setup () {// Тези линии са специално за поддръжка на Adafruit Trinket 5V 16 MHz. // Всяка друга дъска, можете да премахнете тази част (но няма вреда да я оставите): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // КРАЙ на специфичния за Trinket код. Serial.begin (9600); while (! Сериен) {; // изчакайте свързването на серийния порт. Необходимо е само за родния USB порт} pinMode (A0, INPUT); strip.begin (); // ИНИЦИАЛИЗИРАЙ обект на лента NeoPixel (ЗАДЪЛЖИТЕЛНО) strip.show (); // Изключете всички пиксели ASAP strip.setBrightness (10); // Задайте BRIGHTNESS на около 1/5 (max = 255)} // функция loop ()-работи многократно, докато платката е на --------------- void loop () {unsigned long currentMs = millis (); // Получаване на текущото време int value = analogRead (A0); // Четене на текущия светлинен сензор if (стойност> 900 && резултат == 0) {// Ако сензорът е натиснат и все още няма записан резултат, задействайте улавянето на резултата if (индекс = интервал) {// Проверете дали токът цикъл надвишава интервала previousMs = currentMs; // Задайте новия интервал на текущото време + индекс на интервала + = 1; // Задайте светодиодите една стъпка по -нататък в цикъла if (index> 17) {// Задействайте края на цикъла за обработка на индекса = 0; if (резултат == 2) {// На правилен интервал от резултати = (int) max ((интервал * 0.95), 50); // Ускоряване с 10%, до интервал от 50ms/ color = strip. Color (0, 255, 0); // Задайте светодиодите на зелено} else if (result == 1) {// На неправилен интервал на резултата = 300; // Нулиране на цвета на интервала = strip. Color (255, 0, 0); // Задайте светодиодите на червено} else {// При липса на резултат улавен color = strip. Color (255, 0, 0); // Задайте светодиодите на червено} result = 0; // Нулиране на резултата за следващия цикъл} TheaterChaseOne (цвят, индекс); // Осветявайте светодиодите за показване. }} // Някои наши функции за създаване на анимирани ефекти ----------------- // Преследващи светлини в стил театър-маркер. Предайте цвят (32-битова стойност, // a la strip. Цвят (r, g, b), както е споменато по-горе), и време на забавяне (в ms) // между кадрите. void theatreChaseOne (uint32_t цвят, int индекс) {strip.clear (); strip.setPixelColor (17 - индекс, цвят); // светодиоди за първи ред strip.setPixelColor (18 + индекс, цвят); // втори ред LED светлини strip.setPixelColor (53 - индекс, цвят); // трети ред LED светлини strip.show (); }

Препоръчано: