Mundarija:
- 1 -qadam: materiallarni yig'ish
- 2 -qadam: sxemalarni yaratish
- 3 -qadam: Qo'lqopni loyihalash
- 4 -qadam: Lehimlash
- 5 -qadam: kodlash
- 6 -qadam: O'zgarishlar
Video: Qo'l ritmi: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Bu cyberglove to'g'ri vaqtda to'g'ri harakat qilish haqida.
Chiroqlar sizning qo'lingizdan (tirsagingizdan) qo'lingizga o'tadi va chiroqlar sizning qo'lingizga tushganda, mini fotoelementga barmoqlaringizni bosishingiz kerak bo'ladi.
Agar siz o'z vaqtida qo'lingizni mini fotoselga bossangiz, LEDlar yashil rangga aylanadi. Agar yo'q bo'lsa, LEDlar qizil rangga aylanadi.
1 -qadam: materiallarni yig'ish
- Qo'lqop
- Qo'lqopni uzunroq qilish uchun mato
- WS2812B LED tasmasi
- Simlar
- Arduino
- Mini foto sotish
2 -qadam: sxemalarni yaratish
Avval LED chizig'ini arduino -ga ulang. Buni +5v ni arduino -dagi 5v -ga ulash orqali qilishingiz mumkin. Din arduino -da A0 ga, GND esa arduino -da GND -ga ulangan bo'lishi kerak.
Bundan tashqari, mini -fotoselni arduino -ga 5v simli svetodiodli tarmoqdan ulash va arduino -dagi PIN 6 -ga sim bilan ulanish orqali ulash kerak. Mini fotoselning boshqa tomoni GND simiga ulangan bo'lishi kerak
3 -qadam: Qo'lqopni loyihalash
Qo'lqop etakchi chiziqlarga to'g'ri keladigan darajada bo'lishi kerak. Ko'rinishni yanada yoqimli qilish uchun LEDlarni bir -biriga moslashtirish kerak.
Bu o'yin uchun siz qo'lingizni ishlatishingiz va erkin harakatlanishni xohlaysiz. Buni arduino qo'lqopga qo'yish orqali amalga oshirish mumkin. Men arduinoni qo'lqopga yopishtirish uchun mahkamlagich sifatida velkro ishlatardim. Keyinchalik barqarorlikni o'rnatish uchun siz qo'lqop va arduino atrofiga arqon qo'yishingiz mumkin.
Mini fotosel qo'lqop ichiga tikilgan, shuning uchun u joyida qoladi.
Nihoyat, simlarni yaxshiroq yashirish uchun ularni yashirish kerak. Buni simlar ustiga tikilgan mato yordamida qilish mumkin.
4 -qadam: Lehimlash
Endi siz ulanish simlarini sxemadan lehim bilan xavfsiz qilishingiz mumkin.
5 -qadam: kodlash
// NeoPixel -ning har kungi asosiy test dasturi.
// Ishonchli ishlash uchun NEOPIXEL ENG YAXSHI AMALI: // - NeoPixel tasmasi + va - ulanishlari orasiga 1000 uF CAPACITOR qo'shing. // - mikrokontroller taxtasi va birinchi piksel orasidagi sim uzunligini minimallashtirish. //-NeoPixel tasmasi DATA-IN 300-500 OHM Rezistoridan o'tishi kerak. // - NeoPixellarni LIVE CIRCUITda ulashdan saqlaning. Agar kerak bo'lsa, har doim GROUND (-), keyin +, keyin ma'lumotlarni ulang. //-5V quvvatli NeoPixel tasmasi bo'lgan 3.3V mikrokontrolerdan foydalanganda, // ma'lumotlar liniyasidagi LOGIC-LEVEL CONVERTER qat'iy tavsiya etiladi. // (Bularni o'tkazib yuborish dastgohingizda yaxshi ishlashi mumkin, lekin maydonda muvaffaqiyatsiz bo'lishi mumkin)
#include #ifdef _AVR_ #include // 16 MGtsli Adafruit Trinket uchun zarur #endif
// Arduino -dagi qaysi pin NeoPixel -ga ulangan? // Trinket yoki Gemma -da biz buni 1 ga o'zgartirishni taklif qilamiz: #define LED_PIN 6
// Arduino -ga nechta NeoPixel biriktirilgan? #LED_COUNTni aniqlang 60
// NeoPixel tasma ob'ektini e'lon qiling: Adafruit_NeoPixel tasmasi (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Oq rang, standart bool uchun clickedCorrectly = false; // 1 -argument = NeoPixel chizig'idagi piksellar soni // 2 -argument = Arduino pin raqami (ko'pchiligi to'g'ri) // Argument 3 = Pikselli turdagi bayroqlar, kerak bo'lganda qo'shing: // NEO_KHZ800 800 KHz bitstream (NeoPixel mahsulotlarining ko'pchiligi/ WS2812 LEDlari) // NEO_KHZ400 400 KHz (klassik 'v1' (v2 emas) FLORA piksellari, WS2811 drayverlari) // NEO_GRB piksellari GRB bitstream uchun ulanadi (ko'pchilik NeoPixel mahsulotlari) // NEO_RGB piksellari RGB bitstream (v1 FLORA piksellari uchun), v2 emas) // NEO_RGBW piksellari RGBW oqimi uchun simli (NeoPixel RGBW mahsulotlari)
// setup () funktsiyasi-ishga tushganda bir marta ishlaydi --------------------------------
void setup () {// Bu satrlar Adafruit Trinket 5V 16 MGts ni qo'llab -quvvatlash uchun mo'ljallangan. // Boshqa istalgan taxta, siz bu qismni olib tashlashingiz mumkin (lekin undan hech qanday zarar bo'lmaydi): #if belgilangan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinket-ga xos kodning oxiri.
pinMode (A0, INPUT); strip.begin (); // NeoPixel strip ob'ektini INITIALIZE (REQUIRED) strip.show (); // ASAP strip.setBrightness (10) tezlik bilan barcha piksellarni o'chiring; // BRIGHTNESS ni 1/5 ga o'rnating (maksimal = 255)}
// loop () funktsiyasi-taxta yonib turguncha qayta-qayta ishlaydi ---------------
void loop () {clickedC Corlyly = teatrChaseOne (rang); if (clickedCausely) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}
// Animatsiya effektlarini yaratish uchun o'zimizning ba'zi funktsiyalarimiz -----------------
// Teatr-marquee uslubidagi chiroqlar. Rangni (32-bitli qiymat, // a la strip. Rang (r, g, b) yuqorida aytib o'tilganidek) va ramkalar orasidagi kechikish vaqtini (msda) o'tkazing. bool teatrChaseOne (uint32_t rang) {bool to'g'ri = noto'g'ri; bool clickedWrong = noto'g'ri; for (int index = 0; index 800) {// qiymat sensori, agar (indeks <16) {// 2 tugashidan oldin bo'lsa, siz color = strip. Color (255, 0, 0) tugmasini bosishingiz mumkin; // qizil rangli LEDlar clickedWrong = rost; // noto'g'ri bosilsa, LEDlar qizil rangga aylanadi} else if if (! clickedWrong) {// noto'g'ri bo'lsa color = strip. Color (0, 255, 0); // yashil rangli LEDlar to'g'ri = to'g'ri; // tugma to'g'ri bosilgan bo'lsa, LEDlar yashil rangga aylanadi}} strip.clear (); strip.setPixelColor (17 - indeks, rang); // birinchi qatorli yorug'lik chiroqlari strip.setPixelColor (18 + indeks, rang); // ikkinchi qatorli yorug'lik chiroqlari strip.setPixelColor (53 - indeks, rang); // uchinchi qatorli yorug'lik chiroqlari strip.show (); kechikish (300); } to'g'ri qaytarish; }
6 -qadam: O'zgarishlar
Men ba'zi o'zgarishlar qildim. Birinchidan, men arduino -ni yashirdim, shuning uchun "Ritm qo'lini" ishlatish qulayroq bo'lardi, ikkinchidan, kodni biroz o'zgartirdim. Men kodni o'zgartirdim, shunda siz kerakli vaqtda bosganingizda rang yashil bo'ladi va LEDlar tezroq harakat qiladi. Shunday qilib, LED Swill avvalgidan 10% tezroq bo'ladi. Bu o'yinni yanada qiziqarli qiladi
Kod hozir shunday:
// NeoPixel -ning har kungi asosiy test dasturi. // Ishonchli ishlash uchun NEOPIXEL ENG ZO'R AMALI: // - NeoPixel tasmasi + va - ulanishlari orasiga 1000 uF CAPACITOR qo'shing. // - mikrokontroller taxtasi va birinchi piksel orasidagi sim uzunligini minimallashtirish. //-NeoPixel tasmasi DATA-IN 300-500 OHM Rezistoridan o'tishi kerak. // - NeoPixellarni LIVE CIRCUITda ulashdan saqlaning. Agar kerak bo'lsa, har doim GROUND (-), keyin +, keyin ma'lumotlarni ulang. //-5V quvvatga ega NeoPixel tasmasi bo'lgan 3.3V mikrokontrolerdan foydalanganda, // ma'lumotlar liniyasidagi LOGIC-LEVEL CONVERTER qat'iy tavsiya etiladi. // (Bularni o'tkazib yuborish dastgohingizda yaxshi ishlashi mumkin, lekin maydonda muvaffaqiyatsiz bo'lishi mumkin) #include #ifdef _AVR_ #include // 16 MGtsli Adafruit Trinket #endif uchun talab qilinadi // Arduino -dagi qaysi pin NeoPixel -ga ulangan? // Trinket yoki Gemma -da biz buni 1 ga o'zgartirishni taklif qilamiz: #define LED_PIN 6 // Arduino -ga nechta NeoPixel biriktirilgan? #define LED_COUNT 60 // NeoPixel tasmasi ob'ektini e'lon qiling: Adafruit_NeoPixel tasmasi (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Oq rang, standart bool uchun clickedCausely = false; int indeksi = 0; int oralig'i = 300; int natijasi = 0; imzosiz uzoq oldingiMs = millis (); // 1 -argument = NeoPixel chizig'idagi piksellar soni // 2 -argument = Arduino pin raqami (ko'pchiligi to'g'ri) // Argument 3 = Pikselli turdagi bayroqlar, kerak bo'lganda qo'shing: // NEO_KHZ800 800 KHz bitstream (NeoPixel mahsulotlarining ko'pchiligi/ WS2812 LEDlari) // NEO_KHZ400 400 KHz (klassik 'v1' (v2 emas) FLORA piksellari, WS2811 drayverlari) // NEO_GRB piksellari GRB bitstream uchun ulanadi (ko'pchilik NeoPixel mahsulotlari) // NEO_RGB piksellari RGB bitstream (v1 FLORA piksellari uchun), v2 emas) // NEO_RGBW piksellari RGBW bit oqimi uchun ulanadi (NeoPixel RGBW mahsulotlari) // setup () funktsiyasi-ishga tushganda bir marta ishlaydi -------------------- ------------ void setup () {// Bu satrlar Adafruit Trinket 5V 16 MGts ni qo'llab-quvvatlash uchun mo'ljallangan. // Boshqa istalgan taxta, siz bu qismni olib tashlashingiz mumkin (lekin undan hech qanday zarar bo'lmaydi): #if belgilangan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinket-ga xos kodning oxiri. Serial.begin (9600); while (! Seriyali) {; // ketma -ket port ulanishini kuting. Faqat mahalliy USB port uchun kerak} pinMode (A0, INPUT); strip.begin (); // NeoPixel strip ob'ektini INITIALIZE (REQUIRED) strip.show (); // Barcha piksellarni ASAP strip.setBrightnessni o'chiring (10); // BRIGHTNESS-ni taxminan 1/5 ga o'rnating (max = 255)} // loop () funktsiyasi-taxta yoniq bo'lguncha qayta-qayta ishlaydi --------------- void loop () {imzosiz uzoq joriyMs = millis (); // Joriy vaqtni olish int qiymati = analogRead (A0); // Hozirgi yorug'lik sensori o'qiladi, agar (qiymati> 900 && natija == 0) {// Agar sensor bosilsa va hali hech qanday natija qayd etilmagan bo'lsa, natijani yozishni tetiklang, agar (indeks = interval) {// Oqim mavjudligini tekshiring pastadir oldingiMs = joriyMs oralig'idan oshib ketadi; // Yangi intervalni joriy vaqtga belgilang + interval indeksi + = 1; // Ledlarni loopda bir qadam oldinga siljiting, agar (indeks> 17) {// Loop bilan ishlashning oxiri indeksi = 0; if (natija == 2) {// To'g'ri natija oralig'ida = (int) max ((interval * 0,95), 50); // 50ms oralig'iga qadar 10%tezlik/ color = strip. Color (0, 255, 0); // LEDlarni yashil rangga o'rnating} else if if (result == 1) {// Noto'g'ri natija oralig'ida = 300; // Interval rangini o'zgartiring = strip. Color (255, 0, 0); // LEDlarni qizil rangga o'rnating} else {// Hech qanday natijaga erishilmadi color = strip. Color (255, 0, 0); // LEDlarni qizil rangga o'rnating} result = 0; // Keyingi tsikl uchun natijani qaytaring} teatrChaseOne (rang, indeks); // Ko'rsatish uchun chiroqlarni yoqing. }} // Animatsiyali effektlarni yaratish uchun o'zimizning ba'zi funktsiyalarimiz ---------------- // Teatr-marquee uslubidagi chiroqlarni quvish. Rangni (32-bitli qiymat, // a la strip. Rang (r, g, b) yuqorida aytib o'tilganidek) va ramkalar orasidagi kechikish vaqtini (msda) o'tkazing. void teatrChaseOne (uint32_t rang, int indeksi) {strip.clear (); strip.setPixelColor (17 - indeks, rang); // birinchi qatorli yorug'lik chiroqlari strip.setPixelColor (18 + indeks, rang); // ikkinchi qatorli yorug'lik chiroqlari strip.setPixelColor (53 - indeks, rang); // uchinchi qatorli yorug'lik chiroqlari strip.show (); }
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Musiqa ritmi LED chirog'i: 9 qadam (rasmlar bilan)
Musiqa ritmi LED chirog'i: Bu loyihada biz mikrofon va BC547 yordamida non paneli va tenglikni yordamida musiqiy ritmli LED chirog'li chiroqni yaratamiz, u erda LED chiziqli chiroqlar musiqa ritmi bilan miltillaydi. Mikrofon musiqa ritmini sezadi va elektr pul