Агуулгын хүснэгт:

Гар хэмнэл: 6 алхам
Гар хэмнэл: 6 алхам

Видео: Гар хэмнэл: 6 алхам

Видео: Гар хэмнэл: 6 алхам
Видео: Ahuna - Hair Garigiin Ohin (Official Music Video) 2024, Долдугаар сарын
Anonim
Гар хэмнэл
Гар хэмнэл

Энэхүү cyberglove бол зөв алхамыг зөв цагт хийх тухай юм.

Гэрэл нь таны гарнаас (тохой) гар руу шилжиж байгаа бөгөөд гэрэл таны гарт ирэхэд та мини фотоэлемент дээр хуруугаа дарах хэрэгтэй болно.

Хэрэв та мини фотоэлемент дээр зөв гараа дарвал ледүүд ногоон болж хувирна. Үгүй бол ледүүд улаан болж хувирдаг.

Алхам 1: Материал цуглуулах

  • Бээлий
  • Бээлийг урт болгох даавуу
  • WS2812B LED зурвас
  • Утас
  • Ардуино
  • Мини гэрэл борлуулагч

Алхам 2: Хэлхээ хийх

Хэлхээ хийх
Хэлхээ хийх
Хэлхээ хийх
Хэлхээ хийх

Эхлээд LED зурвасыг arduino руу холбоно уу. Та үүнийг +5v -ийг arduino дээрх 5v -т холбосноор хийж болно. Din нь arduino дээр A0, GND нь arduino дээр GND -тэй холбогдсон байх ёстой.

Та мөн мини фотоэлементийг arduino руу 5в утас руу залгаж, зурвасаас PIN 6 руу залгах эх үүсвэрээс холбох хэрэгтэй. Мини фотоэлементийн нөгөө талыг GND утастай LED туузнаас холбох ёстой

Алхам 3: Бээлий зохион бүтээх

Бээлий зохион бүтээх
Бээлий зохион бүтээх

Бээлий нь удирдсан туузанд тохирох хэмжээтэй байх ёстой. Харахад илүү тааламжтай байхын тулд ледүүдийг хооронд нь тааруулах ёстой.

Энэ тоглоомонд та гараа ашиглах хэрэгтэй бөгөөд чөлөөтэй хөдөлж чадна. Үүнийг arduino -г бээлий дээр хийснээр ойлгож болно. Би arduino -г бээлий дээр наалдуулахын тулд бэхэлгээ болгон velcro ашигласан. Илүү тогтвортой байдлыг хангахын тулд та бээлий, ардуиногийн эргэн тойронд олс хийж болно.

Мини фотоэлементийг бээлий дотор оёсон тул байрандаа үлдэх болно.

Эцэст нь утсыг илүү сайн харагдуулахын тулд нуух хэрэгтэй. Үүнийг утсан дээр оёх даавуугаар хийж болно.

Алхам 4: Гагнах

Гагнах
Гагнах

Одоо та хэлхээнээс холбох утсыг гагнах замаар найдвартай болгож чадна.

Алхам 5: Кодлох

Кодлох
Кодлох
Кодлох
Кодлох
Кодлох
Кодлох

// NeoPixel -ийн өдөр тутмын үндсэн тест програм.

// Хамгийн найдвартай ажиллагааг хангах NEOPIXEL ШИЛДЭГ ДАДАЛ: // - NeoPixel зурвасын + ба - холболтуудын хооронд 1000 uF CAPACITOR нэмнэ. // - Микроконтроллерийн самбар ба эхний пикселийн хоорондох утаснуудын уртыг багасгах. //-NeoPixel зурвасын DATA-IN нь 300-500 OHM резистороор дамжих ёстой. // - NeoPixels -ийг LIVE CIRCUIT дээр холбохоос зайлсхий. Хэрэв танд хэрэгтэй бол, үргэлж GROUND (-), дараа нь +, дараа нь өгөгдлийг холбоно уу. //-5V хүчдэлтэй NeoPixel тууз бүхий 3.3V микроконтроллерыг ашиглахдаа // өгөгдлийн шугам дээрх ЛОГИК ТҮВШИН ХӨРГӨГЧИЙГ ЗӨВЛӨМЖЛӨГӨӨР зөвлөж байна. // (Эдгээрийг алгасах нь таны ажлын ширээн дээр сайн ажиллах боловч талбарт амжилтгүй болох магадлалтай)

#include #ifdef _AVR_ #include // 16 MHz Adafruit Trinket #endif -д шаардлагатай.

// Arduino дээрх аль зүү нь NeoPixels -тэй холбогдсон бэ? // Trinket эсвэл Gemma дээр бид үүнийг 1 болгож өөрчлөхийг санал болгож байна: LED_PIN 6 -г тодорхойлох

// Arduino -д хэдэн NeoPixel хавсаргасан бэ? LED_COUNT 60 -ийг тодорхойлох

// Манай NeoPixel зурвасын объектыг зарлах: Adafruit_NeoPixel зурвас (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t өнгө = зурвас Өнгө (127, 127, 127); // Цагаан өнгө, анхдагч bool дээр дарагдсан болCoriously = false; // Аргумент 1 = NeoPixel зурвас дахь пикселийн тоо // Аргумент 2 = Arduino зүү дугаар (ихэнх нь хүчин төгөлдөр) // Аргумент 3 = Пиксел маягийн тугуудыг шаардлагатай бол нэмж оруулаарай: // NEO_KHZ800 800 KHz битийн урсгал (ихэнх NeoPixel бүтээгдэхүүнүүд/ WS2812 LED) // NEO_KHZ400 400 KHz (сонгодог 'v1' (v2 биш) FLORA пикселүүд, WS2811 драйверууд) // NEO_GRB Пикселүүд нь GRB битийн урсгалд холбогддог (ихэнх NeoPixel бүтээгдэхүүнүүд) // NEO_RGB Пикселүүд нь RGB bitstream (v1 FLORA пиксел), v2 биш) // NEO_RGBW пикселүүд нь RGBW bitstream -д зориулагдсан (NeoPixel RGBW бүтээгдэхүүн)

// setup () функц-эхлүүлэх үед нэг удаа ажилладаг --------------------------------

void setup () {// Эдгээр мөрүүд нь Adafruit Trinket 5V 16 MHz -ийг дэмжих зориулалттай. // Өөр ямар ч самбар, та энэ хэсгийг устгаж болно (гэхдээ үүнийг орхиход ямар ч хор хөнөөл учруулахгүй): #if тодорхойлогдсон бол (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); Tracket-ийн тусгай кодын #endif // END.

pinMode (A0, INPUT); strip.begin (); // NeoPixel зурвасын объектыг INITIALIZE (REQUIRED) strip.show (); // Бүх пикселийг аль болох хурдан унтраах strip.setBrightness (10); // BRIGHTNESS -ийг ойролцоогоор 1/5 болгож тохируулна уу (хамгийн ихдээ = 255)}

// loop () функц-самбарыг асаалттай байхад дахин дахин ажиллуулна ---------------

void loop () {clickedCorrectly = TheaterChaseOne (өнгө); if (clickedClaimly) {color = strip. Color (0, 255, 0); } өөр {color = strip. Color (255, 0, 0); }}

// Хөдөлгөөнт эффект бүтээх бидний зарим функцууд -----------------

// Театрын маркийн маягийн гэрэл хөөж байна. Өнгө (32 битийн утга, // a ла зурвас. Өнгө (r, g, b) дээр дурдсанчлан), мөн хүрээ хоорондын хоцролтын хугацааг (мс-ээр) // дамжуулна уу. bool театрChaseOne (uint32_t өнгө) {bool зөв = худал; bool clickedWrong = худал; for (int index = 0; index 800) {// value light sensor if (index <16) {// 2 төгсгөлөөс өмнө LED байвал та color = strip. Color (255, 0, 0); // улаан өнгө leds clickedWrong = үнэн; // буруу дарсан бол leds улаан болно} else if if (! clickedWrong) {// not not буруу color = strip. Color (0, 255, 0); // ногоон өнгө leds зөв = үнэн; // зөв дарсан бол leds ногоон өнгөтэй болно}} strip.clear (); strip.setPixelColor (17 - индекс, өнгө); // эхний эгнээний LED гэрэл зурвас.setPixelColor (18 + индекс, өнгө); // хоёр дахь эгнээний LED гэрэл зурвас.setPixelColor (53 - индекс, өнгө); // гурав дахь эгнээний LED гэрэл зурвас.show (); саатал (300); } зөв буцаах; }

Алхам 6: Өөрчлөлтүүд

Өөрчлөлтүүд
Өөрчлөлтүүд
Өөрчлөлтүүд
Өөрчлөлтүүд
Өөрчлөлтүүд
Өөрчлөлтүүд

Би зарим өөрчлөлтийг хийсэн. Нэгдүгээрт, би arduino -г нуусан тул "Rythm hand" ашиглах нь илүү тохь тухтай байх болно, хоёрдугаарт кодоо бага зэрэг өөрчилсөн. Би кодыг өөрчилсөн бөгөөд ингэснээр та зөв товчлуурыг дарахад өнгө нь ногоон болж, LED нь илүү хурдан хөдөлдөг. Ингэснээр LED Swill нь өмнөхөөсөө 10% илүү хурдан болно. Энэ нь тоглоомыг илүү сонирхолтой болгодог

Код одоо иймэрхүү байна:

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

Зөвлөмж болгож буй: