Cuprins:
- Pasul 1: Colectați materiale
- Pasul 2: Realizarea circuitelor
- Pasul 3: Proiectarea mănușii
- Pasul 4: lipire
- Pasul 5: Codificare
- Pasul 6: Modificări
Video: Mâna ritmului: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Această cârmă cibernetică este despre a face mișcarea corectă la momentul potrivit.
Luminile merg de la braț (cot) la mână și când luminile ajung la mâna dvs., trebuie să apăsați degetele pe mini fotocelula.
Dacă apăsați mâna pe mini fotocelula în momentul potrivit ledurile devin verzi. Dacă nu, ledurile devin roșii.
Pasul 1: Colectați materiale
- O mănușă
- Tesatura pentru a face manusa mai lunga
- Benzi LED WS2812B
- Fire
- Arduino
- Mini vanzare foto
Pasul 2: Realizarea circuitelor
Mai întâi conectați banda led la arduino. Puteți face acest lucru conectând + 5v la 5v pe arduino. Din trebuie să fie conectat la A0 pe arduino și GND trebuie să fie conectat la GND pe arduino.
De asemenea, trebuie să conectați mini fotocelula la arduino prin conectarea la firul de 5v din banda led și de la aceeași sursă conectându-se cu un fir la PIN 6 pe arduino. Cealaltă parte a mini-fotocelulei trebuie să fie conectată la firul GND din banda led
Pasul 3: Proiectarea mănușii
Mănușa trebuie să aibă dimensiunea potrivită pentru a se potrivi benzilor led. Ledurile trebuie să fie aliniate pentru a face mai plăcute să le privim.
Pentru acest joc trebuie să vă folosiți brațul și doriți să vă puteți mișca liber. Acest lucru se poate realiza punând arduino pe mănușă. Am folosit velcro ca element de fixare pentru a lipi arduino de mănușă. Apoi, pentru a stabili mai multă stabilitate, puteți pune o frânghie în jurul mănușii și în jurul arduino-ului.
Mini-fotocelula a fost cusută în interiorul mănușii, astfel încât să rămână la locul său.
În cele din urmă trebuie să ascundeți firele pentru a face să arate mai bine. Acest lucru se poate face cu țesături care vor fi cusute deasupra firelor.
Pasul 4: lipire
Acum puteți face firele de conectare din circuit securizate prin lipire.
Pasul 5: Codificare
// Un program de bază zilnic de testare a benzii NeoPixel.
// CELE MAI BUNE PRACTICI NEOPIXEL pentru cea mai fiabilă operare: // - Adăugați 1000 uF CAPACITOR între conexiunile + și - ale benzii NeoPixel. // - MINIMIZAȚI Lungimea cablului între placa microcontrolerului și primul pixel. // - DATA-IN a benzii NeoPixel ar trebui să treacă printr-un RESISTOR 300-500 OHM. // - EVITA conectarea NeoPixels pe un CIRCUIT LIVE. Dacă trebuie, ÎNTOTDEAUNA // conectați întâi GROUND (-), apoi +, apoi date. // - Atunci când utilizați un microcontroler de 3,3 V cu o bandă NeoPixel alimentată cu 5 V, // un CONVERTITOR DE NIVEL LOGIC pe linia de date este RECOMANDAT PUTERNIC. // (Omiterea acestora poate funcționa OK pe bancul dvs. de lucru, dar poate eșua pe teren)
#include #ifdef _AVR_ #include // Necesar pentru 16 MHz Adafruit Trinket #endif
// Care pin de pe Arduino este conectat la NeoPixels? // Pe un Trinket sau Gemma, vă sugerăm să schimbați acest lucru în 1: #define LED_PIN 6
// Câți NeoPixeli sunt atașați la Arduino? #define LED_COUNT 60
// Declarați obiectul nostru de bandă NeoPixel: banda Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Culoare albă, pentru bool implicit clicatCorect = fals; // Argumentul 1 = Numărul de pixeli din banda NeoPixel // Argumentul 2 = numărul pinului Arduino (majoritatea sunt valide) // Argumentul 3 = semnalizatoarele de tip Pixel, adăugați după cum este necesar: // NEO_KHZ800 800 KHz bitstream (majoritatea produselor NeoPixel cu / LED-uri WS2812) // NEO_KHZ400 400 KHz (clasic 'v1' (nu v2) pixeli FLORA, drivere WS2811) // NEO_GRB Pixelii sunt conectați pentru fluxul de biți GRB (majoritatea produselor NeoPixel) // NEO_RGB Pixelii sunt conectați pentru fluxul de biți RGB (v1 pixeli FLORA, nu v2) // NEO_RGBW Pixelii sunt conectați la fluxul de biți RGBW (produse NeoPixel RGBW)
// funcția setup () - rulează o dată la pornire --------------------------------
void setup () {// Aceste linii sunt special pentru a sprijini Adafruit Trinket 5V 16 MHz. // Orice altă placă, puteți elimina această parte (dar nu o va lăsa rău): #if definit (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END al codului specific Trinket.
pinMode (A0, INPUT); strip.begin (); // INITIALIZAȚI obiectul de bandă NeoPixel (NECESAR) strip.show (); // Dezactivați toți pixelii ASAP strip.setBrightness (10); // Setați BRIGHTNESS la aproximativ 1/5 (max = 255)}
funcția // loop () - rulează în mod repetat, atâta timp cât placa este activată ---------------
bucla void () {clickedCorrectly = theaterChaseOne (culoare); if (clickedCorrect) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}
// Unele funcții proprii pentru crearea de efecte animate -----------------
// Lumini de urmărire în stil teatru. Treceți într-o culoare (valoare pe 32 de biți, // a la strip. Culoare (r, g, b) așa cum s-a menționat mai sus) și un timp de întârziere (în ms) // între cadre. bool theatreChaseOne (uint32_t color) {bool corect = fals; bool clickedWrong = false; for (int index = 0; index 800) {// valoare senzor de lumină if (index <16) {// 2 leduri înainte de sfârșit, atunci puteți face clic pe color = strip. Color (255, 0, 0); // leduri de culoare roșie clickedWrong = true; // a făcut clic greșit, apoi ledurile devin roșii} else if (! clickedWrong) {// if not greșit color = strip. Color (0, 255, 0); // leduri de culoare verde corect = adevărat; // a făcut clic corect, apoi ledurile devin verzi}} strip.clear (); strip.setPixelColor (17 - index, culoare); // lumini cu led de pe primul rând strip.setPixelColor (18 + index, culoare); // luminile cu ledul al doilea rând strip.setPixelColor (53 - index, culoare); // a treia linie cu leduri strip.show (); întârziere (300); } returnează corect; }
Pasul 6: Modificări
Am făcut câteva schimbări. În primul rând am ascuns arduino-ul, așa că ar fi mai confortabil să folosesc „mâna Rythm” și, în al doilea rând, am schimbat puțin codul. Am schimbat codul astfel încât, atunci când apăsați la momentul potrivit, culoarea să devină verde și LED-urile să se miște mai repede. Procedând astfel, LED-ul Swill devine cu 10% mai rapid decât înainte. Acest lucru face jocul mai interesant
Iată cum este acum codul:
// Un program de bază zilnic pentru testarea benzilor NeoPixel. // CELE MAI BUNE PRACTICI NEOPIXEL pentru cea mai fiabilă operare: // - Adăugați 1000 uF CAPACITOR între conexiunile + și - ale benzii NeoPixel. // - MINIMIZAȚI Lungimea cablului între placa microcontrolerului și primul pixel. // - DATA-IN a benzii NeoPixel ar trebui să treacă printr-un RESISTOR 300-500 OHM. // - EVITA conectarea NeoPixels pe un CIRCUIT LIVE. Dacă trebuie, ÎNTOTDEAUNA // conectați întâi GROUND (-), apoi +, apoi date. // - Atunci când utilizați un microcontroler de 3,3 V cu o bandă NeoPixel alimentată cu 5 V, // un CONVERTITOR DE NIVEL LOGIC pe linia de date este RECOMANDAT PUTERNIC. // (Omiterea acestora poate funcționa OK pe bancul dvs. de lucru, dar poate eșua în câmp) #include #ifdef _AVR_ #include // Necesar pentru 16 MHz Adafruit Trinket #endif // Care pin de pe Arduino este conectat la NeoPixels? // Pe un Trinket sau Gemma vă sugerăm să schimbați acest lucru în 1: #define LED_PIN 6 // Câți NeoPixeli sunt atașați la Arduino? #define LED_COUNT 60 // Declarați obiectul nostru de bandă NeoPixel: banda Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Culoare albă, pentru bool implicit clicatCorect = fals; int index = 0; intervalul int = 300; int result = 0; unsigned long previousMs = millis (); // Argumentul 1 = Numărul de pixeli din banda NeoPixel // Argumentul 2 = numărul pinului Arduino (majoritatea sunt valide) // Argumentul 3 = semnalizatoarele de tip Pixel, adăugați după cum este necesar: // NEO_KHZ800 800 KHz bitstream (majoritatea produselor NeoPixel cu / LED-uri WS2812) // NEO_KHZ400 400 KHz (clasic 'v1' (nu v2) pixeli FLORA, drivere WS2811) // NEO_GRB Pixelii sunt conectați pentru fluxul de biți GRB (majoritatea produselor NeoPixel) // NEO_RGB Pixelii sunt conectați pentru fluxul de biți RGB (v1 pixeli FLORA, nu v2) // NEO_RGBW Pixelii sunt conectați la fluxul de biți RGBW (produse NeoPixel RGBW) // funcția setup () - rulează o dată la pornire -------------------- ------------ void setup () {// Aceste linii sunt special pentru a sprijini Adafruit Trinket 5V 16 MHz. // Orice altă placă, puteți elimina această parte (dar nu o va lăsa rău): #if definit (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END al codului specific Trinket. Serial.begin (9600); while (! Serial) {; // așteptați conectarea portului serial. Este necesar doar pentru portul USB nativ} pinMode (A0, INPUT); strip.begin (); // INITIALIZAȚI obiectul de bandă NeoPixel (NECESAR) strip.show (); // Dezactivați toți pixelii ASAP strip.setBrightness (10); // Setați BRIGHTNESS la aproximativ 1/5 (max = 255)} // funcția loop () - rulează în mod repetat atâta timp cât placa este pe --------------- bucla nulă () {unsigned long currentMs = millis (); // Obținerea valorii int a timpului actual = analogRead (A0); // Citirea senzorului de lumină curent dacă (valoare> 900 && rezultat == 0) {// Dacă senzorul este apăsat și nu a fost înregistrat încă niciun rezultat, declanșați captura rezultatului dacă (index = interval) {// Verificați dacă curentul bucla depășește intervalul anteriorMs = currentMs; // Setați noul interval la ora curentă + indicele intervalului = = 1; // Setați ledurile cu un pas mai departe în buclă if (index> 17) {// Trigger end of loop handling index = 0; if (result == 2) {// Pe un interval de rezultat corect = (int) max ((interval * 0,95), 50); // Accelerați cu 10%, până la 50ms interval / culoare = strip. Color (0, 255, 0); // Setați ledurile la verde} else if (result == 1) {// Pe un interval de rezultat incorect = 300; // Resetați intervalul de culoare = strip. Color (255, 0, 0); // Setați ledurile pe roșu} else {// Pe niciun rezultat capturat culoare = strip. Color (255, 0, 0); // Setați ledurile pe roșu} rezultat = 0; // Resetați rezultatul pentru următoarea buclă} theaterChaseOne (culoare, index); // Aprindeți ledurile pentru afișare. }} // Câteva funcții proprii pentru crearea efectelor animate ----------------- // Lumini de urmărire în stil teatru-cadru. Treceți într-o culoare (valoare pe 32 de biți, // a la strip. Culoare (r, g, b) așa cum s-a menționat mai sus) și un timp de întârziere (în ms) // între cadre. void theatreChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - index, culoare); // lumini cu led de pe primul rând strip.setPixelColor (18 + index, culoare); // luminile cu ledul al doilea rând strip.setPixelColor (53 - index, culoare); // a treia linie cu leduri strip.show (); }
Recomandat:
Mână protetică tipărită 3D în 4 pași !: 4 pași
Mână protetică tipărită 3D în 4 pași !: Acest proiect este o mână protetică care a fost tipărită de mine, căutând să explorez mai multe cunoștințe despre proteză și imprimare 3D. Deși nu este cel mai bun proiect, este o modalitate excelentă de a avea experiență și de a învăța cum să creezi
Măsurarea ritmului cardiac este la vârful degetului: abordare fotofletismografică pentru determinarea ritmului cardiac: 7 pași
Măsurarea ritmului cardiac este la vârful degetului: Fotopletismografie Abordare pentru determinarea ritmului cardiac: Un fotopletismograf (PPG) este o tehnică optică simplă și ieftină, care este adesea utilizată pentru a detecta modificările volumului de sânge într-un pat microvascular de țesut. Este folosit în cea mai mare parte neinvaziv pentru a face măsurători la suprafața pielii, de obicei
Ceas de monitorizare a zonei ritmului cardiac de antrenament: 19 pași (cu imagini)
Antrenament Monitorizarea zonei ritmului cardiac: Colegiul este un moment agitat și haotic în viața celor de aceea este foarte important să vă mențineți nivelul de stres scăzut. O modalitate prin care ne place să facem acest lucru este să ne antrenăm, vă ajută să vă mențineți mintea limpede și corpul să se simtă sănătos. De aceea am creat un portabil
Înregistrarea semnalelor bioelectrice: ECG și monitorul ritmului cardiac: 7 pași
Înregistrarea semnalelor bioelectrice: ECG și monitorul ritmului cardiac: AVIZ: Acesta nu este un dispozitiv medical. Aceasta este în scopuri educaționale numai folosind semnale simulate. Dacă utilizați acest circuit pentru măsurători reale ECG, vă rugăm să vă asigurați că circuitul și conexiunile circuit-instrument utilizează o izolare adecvată
Insignă portabilă a ritmului cardiac: 7 pași (cu imagini)
Insignie pentru ritmul cardiac portabil: Această insignă pentru ritmul cardiac a fost creată folosind produsele Adafruit și Bitalino. A fost conceput nu numai pentru a monitoriza inima utilizatorului, ci și pentru a oferi feedback în timp real prin utilizarea unor LED-uri colorate diferite pentru diferite game de inimă