Taula de continguts:

Mà del ritme: 6 passos
Mà del ritme: 6 passos

Vídeo: Mà del ritme: 6 passos

Vídeo: Mà del ritme: 6 passos
Vídeo: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juliol
Anonim
Mà de ritme
Mà de ritme

Aquest ciberglant tracta de fer el moviment adequat en el moment adequat.

Els llums van des del braç (colze) fins a la mà i, quan arribin a la mà, haureu de prémer els dits sobre la mini fotocèl·lula.

Si premeu la mà sobre la mini fotocèl·lula en el moment adequat, els leds es tornen verds. Si no, els leds es tornen vermells.

Pas 1: recolliu materials

  • Un guant
  • Teixit per allargar el guant
  • Tira LED WS2812B
  • Filferros
  • Arduino
  • Mini fotosell

Pas 2: Creació de circuits

Realització de circuits
Realització de circuits
Realització de circuits
Realització de circuits

En primer lloc, connecteu la tira LED a l’arduino. Podeu fer-ho connectant el + 5v al 5v de l’arduino. El Din ha d’estar connectat a A0 a l’arduino i el GND ha de connectar-se al GND a l’arduino.

També heu de connectar la mini fotocèl·lula a l’arduino mitjançant la connexió al cable de 5v des de la tira de leds i des de la mateixa font connectant-se amb un cable al PIN 6 de l’arduino. L'altra cara de la mini fotocèl·lula s'ha de connectar al cable GND des de la tira LED

Pas 3: Dissenyar el guant

Dissenyant el guant
Dissenyant el guant

El guant ha de tenir la mida adequada per adaptar-se a les tires led. Els leds han d’estar alineats perquè siguin més agradables de mirar.

Per a aquest joc has d’utilitzar el braç i vols poder moure’t lliurement. Això es pot aconseguir posant l'arduino al guant. Vaig fer servir velcro com a fixador per enganxar l’arduino al guant. A continuació, per establir més estabilitat, podeu posar una corda al voltant del guant i al voltant de l’arduino.

La mini fotocèl·lula s’ha cosit a l’interior del guant perquè es mantingui al seu lloc.

Per últim, heu d’amagar els cables perquè quedi millor. Això es pot fer amb tela que es cosirà a sobre dels cables.

Pas 4: soldar

Soldadura
Soldadura

Ara podeu assegurar els cables de connexió del circuit mitjançant la soldadura.

Pas 5: Codificació

Codificació
Codificació
Codificació
Codificació
Codificació
Codificació

// Un programa bàsic de proves de tires NeoPixel diàries.

// MILLORS PRÀCTIQUES DE NEOPIXEL per a una operació més fiable: // - Afegiu 1000 uF CAPACITOR entre les connexions + i - de la tira NeoPixel. // - MINIMITZAR LA LONGITUD DE CABLEATGE entre la placa del microcontrolador i el primer píxel. // - La DATA-IN de la tira NeoPixel hauria de passar per un RESISTOR de 300-500 OHM. // - EVITEU la connexió de NeoPixels en un CIRCUIT EN DIRECTE. Si ho heu de fer, SEMPRE // connecteu GROUND (-) primer, després + i després dades. // - Quan s’utilitza un microcontrolador de 3,3 V amb una tira NeoPixel alimentada amb 5 V, // es recomana ENCÀRRIC un convertidor de nivell lògic a la línia de dades. // (Ometre'ls pot funcionar bé al vostre banc de treball, però pot fallar al camp)

#include #ifdef _AVR_ #include // Obligatori per a Adafruit Trinket de 16 MHz #endif

// Quin pin de l'Arduino està connectat als NeoPixels? // En un Trinket o Gemma, us suggerim canviar-lo per 1: #define LED_PIN 6

// Quants NeoPixels estan connectats a l'Arduino? #define LED_COUNT 60

// Declareu el nostre objecte de tira NeoPixel: tira Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Color blanc, per defecte bool clicedCorrectly = false; // Argument 1 = Nombre de píxels a la tira de NeoPixel // Argument 2 = Número de pin Arduino (la majoria són vàlids) // Argument 3 = Indicadors de tipus de píxel, afegiu-los segons sigui necessari: // NEO_KHZ800 800 KHz bitstream (la majoria de productes NeoPixel amb / LEDs WS2812) // NEO_KHZ400 400 KHz (clàssics 'v1' (no v2) píxels FLORA, controladors WS2811) // Els píxels NEO_GRB estan connectats per a flux de bits GRB (la majoria de productes NeoPixel) // Els píxels NEO_RGB estan connectats per a flux de bits RGB (v1 píxels FLORA, no v2) // NEO_RGBW Els píxels estan connectats per a flux de bits RGBW (productes NeoPixel RGBW)

// funció setup (): s'executa una vegada a l'inici --------------------------------

void setup () {// Aquestes línies són específiques per admetre l'Adafruit Trinket 5V 16 MHz. // Qualsevol altre tauler, podeu eliminar aquesta part (però no en deixeu cap dany): #if definit (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FIN del codi específic de Trinket.

pinMode (A0, INPUT); strip.begin (); // INICIALITZAR NeoPixel strip object (OBLIGATORI) strip.show (); // Desactiveu tots els píxels ASAP strip.setBrightness (10); // Estableix BRIGHTNESS a 1/5 aproximadament (màxim = 255)}

// funció loop (): s'executa repetidament sempre que el tauler estigui activat ---------------

bucle buit () {clickedCorrectly = theaterChaseOne (color); if (clicatCorrecte) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Algunes funcions pròpies per crear efectes animats -----------------

// Llums de persecució a l’estil de teatre. Passa un color (valor de 32 bits, // a la strip. Color (r, g, b) tal com s’ha esmentat anteriorment) i un temps de retard (en ms) // entre fotogrames. bool theatreChaseOne (uint32_t color) {bool correcte = fals; bool clicedWrong = false; for (int index = 0; index 800) {// valor del sensor de llum si (índex <16) {// 2 leds abans de finalitzar, podeu fer clic a color = strip. Color (255, 0, 0); // leds de color vermell clicat Malament = cert; // ha fet clic malament, els leds es tornen vermells} else if (! clickedWrong) {// if not wrong color = strip. Color (0, 255, 0); // leds de color verd correctes = cert; // ha fet clic correcte i els leds es tornen verds}} strip.clear (); strip.setPixelColor (17 - índex, color); // llums led de primera fila strip.setPixelColor (18 + índex, color); // llums led de segona fila strip.setPixelColor (53 - índex, color); // llums led de tercera fila strip.show (); retard (300); } tornar correcte; }

Pas 6: Canvis

Canvis
Canvis
Canvis
Canvis
Canvis
Canvis

Vaig fer alguns canvis. En primer lloc, vaig amagar l'arduino, de manera que seria més còmode utilitzar la "mà Rythm" i, en segon lloc, vaig canviar una mica el codi. He canviat el codi perquè, quan premeu en el moment adequat, el color es converteixi en verd i els LEDS es moguin més ràpidament. En fer-ho, el LED Swill serà un 10% més ràpid que abans. Això fa que el joc sigui més interessant

Així és ara el codi:

// Un programa bàsic de proves de tires NeoPixel diàries. // MILLORS PRÀCTIQUES DE NEOPIXEL per a una operació més fiable: // - Afegiu 1000 uF CAPACITOR entre les connexions + i - de la tira NeoPixel. // - MINIMITZAR LA LONGITUD DE CABLEATGE entre la placa del microcontrolador i el primer píxel. // - La DATA-IN de la tira NeoPixel hauria de passar per un RESISTOR de 300-500 OHM. // - EVITEU la connexió de NeoPixels en un CIRCUIT EN DIRECTE. Si ho heu de fer, SEMPRE // connecteu GROUND (-) primer, després + i després dades. // - Quan s’utilitza un microcontrolador de 3,3 V amb una tira de NeoPixel alimentada amb 5 V, // es recomana fortament un CONVERTIDOR DE NIVELL LOGGIC a la línia de dades. // (Saltar-los pot funcionar bé al vostre banc de treball, però pot fallar al camp) #include #ifdef _AVR_ #include // Required for 16 MHz Adafruit Trinket #endif // Quin pin de l'Arduino està connectat als NeoPixels? // En un Trinket o Gemma us suggerim canviar-lo per 1: #define LED_PIN 6 // Quants NeoPixels estan connectats a l'Arduino? #define LED_COUNT 60 // Declareu el nostre objecte de tira NeoPixel: tira Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Color blanc, per defecte bool clicedCorrectly = false; int índex = 0; int interval = 300; int result = 0; unsigned long previousMs = millis (); // Argument 1 = Nombre de píxels a la tira de NeoPixel // Argument 2 = Número de pin Arduino (la majoria són vàlids) // Argument 3 = Indicadors de tipus de píxel, afegiu-los segons sigui necessari: // NEO_KHZ800 800 KHz bitstream (la majoria de productes NeoPixel amb / LEDs WS2812) // NEO_KHZ400 400 KHz (clàssics 'v1' (no v2) píxels FLORA, controladors WS2811) // Els píxels NEO_GRB estan connectats per a flux de bits GRB (la majoria de productes NeoPixel) // Els píxels NEO_RGB estan connectats per a flux de bits RGB (v1 píxels FLORA, no v2) // NEO_RGBW Els píxels estan connectats per a flux de bits RGBW (productes NeoPixel RGBW) // funció setup (): s'executa una vegada a l'inici -------------------- ------------ void setup () {// Aquestes línies són específiques per admetre l'Adafruit Trinket 5V 16 MHz. // Qualsevol altre tauler, podeu eliminar aquesta part (però no en deixeu cap dany): #if definit (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FIN del codi específic de Trinket. Serial.begin (9600); while (! Serial) {; // espera que es connecti el port sèrie. Necessari només per al port USB natiu} pinMode (A0, INPUT); strip.begin (); // INICIALITZAR NeoPixel strip object (OBLIGATORI) strip.show (); // Desactiveu tots els píxels ASAP strip.setBrightness (10); // Estableix BRIGHTNESS a 1/5 aproximadament (màxim = 255)} // funció loop (): s'executa repetidament sempre que el tauler estigui en --------------- bucle buit () {unsms long currentMs = millis (); // Obtenció del valor int de l'hora actual = analogRead (A0); // Lectura del sensor de llum actual si (valor> 900 && resultat == 0) {// Si es prem el sensor i encara no s'ha registrat cap resultat, activi la captura del resultat si (índex = interval) {// Comproveu si bucle supera l'interval anteriorMs = actualMs; // Estableix el nou interval al temps actual + índex d’interval + = 1; // Estableix els leds un pas més al bucle si (índex> 17) {// Activador de l'índex de gestió del bucle = 0; if (result == 2) {// En un interval de resultats correcte = (int) max ((interval * 0,95), 50); // Accelera un 10%, fins a 50 ms d’interval / color = strip. Color (0, 255, 0); // Estableix els leds en verd} else if (result == 1) {// En un interval de resultats incorrecte = 300; // Restableix l'interval color = strip. Color (255, 0, 0); // Estableix els leds en vermell} else {// No hi ha cap resultat capturat color = strip. Color (255, 0, 0); // Estableix els leds en vermell} result = 0; // Restableix el resultat per al següent bucle} theaterChaseOne (color, índex); // Enceneu els leds per mostrar-los. }} // Algunes funcions pròpies per crear efectes animats ----------------- // Llums de persecució a l'estil de teatre-marquesina. Passa un color (valor de 32 bits, // a la strip. Color (r, g, b) com s’ha esmentat anteriorment) i un temps de retard (en ms) // entre fotogrames. void theatreChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - índex, color); // llums led de primera fila strip.setPixelColor (18 + índex, color); // llums led de segona fila strip.setPixelColor (53 - índex, color); // llums led de tercera fila strip.show (); }

Recomanat: