- Requisits de programari i maquinari:
- Concepte darrere:
- Esquema de connexions:
- Programa Arduino:
- Treball:
Tot va començar amb un petit joc de l'època fosca anomenat "Mario", des del moment de ser un petit petit saltant sobre els ànecs per salvar la meva princesa fins a ser un príncep guapo i masculí que vagava a Pèrsia (Príncep de Pèrsia) lluitant contra la foscor per salvar el meu món darrere he estat un gran aficionat als videojocs i he crescut jugant-los. Però de vegades s’avorreixen i m’hi sento menys implicat. Avui en dia, les consoles de jocs avançades permeten jugar virtualment i ens ajuden a sentir el joc molt millor del que pot fer un teclat o un ratolí.
Com que era un entusiasta d'Arduino, em vaig cansar de jugar al famós joc anomenat "Angry Birds" amb el teclat i el ratolí i vaig decidir construir el meu propi controlador de jocs mitjançant un sensor flexible i un potenciòmetre. Quan s’extreu el sensor de flexió, també es tirarà l’ocell de la catapulta i podeu utilitzar el potenciòmetre per establir la direcció en què s’hauria de llançar. Després, quan deixeu anar el sensor de flexió, es llançarà l’ocell. M’ha agradat molt fer-ho, així que si esteu preparant alguna cosa molt similar, aquest tutorial us serà útil. Aquest tutorial també serà útil per controlar el cursor del ratolí mitjançant el potenciòmetre.
Requisits de programari i maquinari:
Programari:
- IDE Arduino
- S'està processant l'IDE
- Joc Angry Birds a l'ordinador
Maquinari:
- Arduino (qualsevol versió)
- Potenciòmetre
- Sensor flexible
- Resistència de 47K ohm
- Connexió de cables
- Taula de pa

Concepte darrere:
La placa Arduino llegeix els valors del Potenciómetre i Flex Senor i els transmet al portàtil / PC a través del port USB COM mitjançant la funció Serial.write () normal. A continuació, llegim aquesta informació mitjançant Processament i controlem el cursor del ratolí mitjançant la classe Robot de Java, que és compatible amb el processament de l’IDE. Hem programat l’IDE de processament de manera que quan s’extreu el sensor Flex es faci un clic del ratolí i en funció de la quantitat que s’estiri, el punter del ratolí es mourà en direcció X. A continuació, basant-nos en el valor del potenciòmetre, mourem el cursor del ratolí en direcció Y, d'aquesta manera podem establir la direcció en què s'hauria de llançar l'ocell.

Esquema de connexions:
El circuit per reproduir Angry Bird mitjançant el sensor flex i el potenciòmetre és fàcil.
Hem connectat senzillament un potenciòmetre i un sensor de flexió a les entrades analògiques (A0, A1) de l’Arduino. La sortida del sensor Flex també es tira cap avall mitjançant una resistència de baixada de 47K.
Podeu connectar-lo directament a la taula de pa o soldar-los a una placa Perf i muntar-lo en guants o alguna cosa per fer-lo més creatiu. Simplement he utilitzat una taula de proves per fer les meves connexions, tal com es mostra a continuació:

Programa Arduino:
El codi Arduino complet es dóna al final del tutorial. A continuació s’expliquen poques línies importants.
Inicialitzem el programa perquè funcioni amb una velocitat de 9600 baud i comencem a llegir els valors del sensor Flex i del potenciòmetre. Com sabem, la funció serial.write () només pot enviar un byte de dades alhora. Com que un byte és de 8 bits i 2 ^ 8 = 256. Podrem enviar valors de 0 a 256. Per tant, hem de comprimir els valors de la sortida del sensor Flex i la sortida del potenciómetre en 0 a 256.
Per fer-ho utilitzem la funció map () a Arduino. Tots els valors del sensor de flexió es converteixen de 5 a 100, de manera que quan doblegem el sensor augmentarà de 5 i quan es deixi anar tornarà a 5. Per esmentar els clics del ratolí s’utilitza el valor 1 i 0. Quan s'envia 1, es prem el ratolí i quan s'envia 0 es deixa anar el ratolí.
si (FlexValue> = 65 && FlexValue <= 120) // el meu sensor de flexió varia de 65 a 120, pot ser que sigui diferent {FlexValue = map (FlexValue, 120,65,0,100); // basat en la flexió de convertir a 0 a 100 si (FlexValue> = 5) // 1 i 0 s'utilitzen per fer clic amb el ratolí, així que comenceu des de 5 {Mclick = true; Serial.write (1); // 1 s’envia per fer clic amb el botó esquerre del ratolí a Serial.write (FlexValue); // El valor de flexió és la distància per moure el ratolí en direcció X} else {Mclick = false; Serial.write (0);}}
De la mateixa manera, els valors del potenciòmetre es converteixen de 101 a 200 i canten la funció map () i s’envien al port COM de portàtils demandant la funció Serial.write () tal com es mostra a continuació.
if (potValue <= 200) {potValue = mapa (potValue, 0,200,101,201); // Basat al seu torn, converteix a 101 a 201 Serial.write (potValue); // El valor del pot és la distància per moure el ratolí en direcció Y}
La resta del programa s’explica mitjançant els comentaris.
Codi de processament:
El processament és una aplicació de desenvolupament de codi obert que es pot descarregar i utilitzar fàcilment per desenvolupar projectes interessants mitjançant Arduino o altres microcontroladors. Ja hem fet pocs projectes amb Processament i podeu consultar-los fent clic als enllaços següents.
- Ràdio FM de bricolatge mitjançant processament
- Control de realitat virtual / gestual mitjançant Arduino
- Sala de xat privada amb Arduino.
- Sistema de radar Arduino que utilitza APP de processament i sensor d'ultrasons
- Detecció i seguiment de cares en temps real mitjançant Arduino
- Velocímetre de bricolatge mitjançant Arduino i Processament
- Joc de ping-pong amb l’acceleròmetre Arduino
- Robot bíped amb Arduino
- Càmera per a imatges tèrmiques Arduino de bricolatge
En aquest projecte hem utilitzat l'IDE de processament per llegir els valors del port COM i controlar el punter del ratolí en funció dels valors rebuts a través del port COM. El codi de processament complet d’aquest controlador de jocs Angry Bird es pot descarregar des de l’enllaç següent:
- Codi de processament d'aquest controlador de jocs Angry Bird (feu clic amb el botó dret i "Desa l'enllaç com")
El programa Arduino es troba al final d’aquest tutorial. El codi de processament s'ha modificat perquè s'adapti al nostre propòsit a partir del codi que va donar Yoggy a la seva pàgina de GitHub.
Les dades provinents del port COM s’han de llegir amb la mateixa velocitat de transmissió en baudis en què es van enviar des d’Arduino. Comproveu també quin port COM està connectat el vostre Arduino mitjançant el gestor de dispositius. El meu Arduino es connecta a COM3 i va ser el 0 º port en el meu ordinador i la velocitat de transmissió en Arduino 9600 era de manera que el codi és el següent
port = new Serial (this, Serial.list (), 9600);
Un cop comencem a llegir els valors, el distingim reconeixent-lo en funció del seu valor en la forma en què vam enviar des d’Arduino. Els valors es tornen a mapar de 0 a 100, de manera que podrem controlar el ratolí en funció d’aquest valor.
if (port.available ()> 0) {data = port.read (); println (dades); // Llegiu les dades del port COM i deseu-les a les dades} if (dades> = 101 && dades <= 201) // Si el valor és del 101 al 201, ha de ser del Potenciómetre {Turn = int (map (data, 101.201.0.100)); // Utilitzeu aquest valor per girar el catapullt} if (dades> = 5 && dades <= 100) // Si el valor és de 5 a 100, ha de ser de Flex Sensor {Pull = int (mapa (dades, 5.100, 0,100));} // Utilitzeu aquest valor per treure la catapulta si (dades == 1) feu clic a = true; // Utilitzeu aquest valor per prémer el botó del ratolí si (dades == 0) feu clic a = fals; // Utilitzeu aquest valor per deixar anar el botó del ratolí
Una vegada que classifiquem les dades, podem controlar el ratolí mitjançant la classe Java del robot en procés. L'ordre robot.mouseMove (crntX-Pull, crntY + Turn); es pot utilitzar per moure el ratolí a qualsevol posició desitjada i les línies robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); i robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); es pot utilitzar per prémer o deixar anar el botó del ratolí respectivament.
if (feu clic a == false) // quan no s'extreu Flex Sesnor {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Deixeu anar el botó del ratolí} if (feu clic a == true) // quan s'extreu Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Premeu el botó del ratolí robot.mouseMove (crntX-Pull, crntY + Turn); // Mou el ratolí en funció del valor Flex i POT}}
Quan es llanci l'IDE de processament, també es mostrarà un petit quadre de diàleg on podreu trobar els valors de Pull, Turn i estat del clic del ratolí com es mostra a continuació

Aquest detall es pot utilitzar per depurar el programa o corregir les dades necessàries.
Treball:
Per fer que aquest projecte d'Angry Bird funcioni amb el codi proporcionat, munteu el maquinari segons el diagrama del circuit i pengeu el codi Arduino donat. A continuació, tingueu en compte a quin port COM està connectat el vostre Arduino i feu els canvis necessaris al codi de processament i inicieu l'esbós de processament.
Ara, simplement inicieu el joc dels ocells enutjats i col·loqueu el cursor a prop de la catapulta i estireu el sensor de flexió per treure l’ocell i configureu la direcció mitjançant el potenciòmetre. Un cop configurada la direcció, deixeu anar el sensor Flex
EEEEWWWWEEEEEEEEEE !!!!!!!!!!……………
Vostè ocell serà llançat directament a l'aire i BOOMM !! Als porquets. El funcionament complet es pot trobar al vídeo que es mostra a continuació.

Espero que us hagi agradat el projecte i hàgiu pogut construir alguna cosa similar. Si teniu cap dubte, podeu contactar amb mi a la secció de comentaris o publicar la vostra pregunta al fòrum per a preguntes tècniques.
Ara, és hora de xocar contra aquestes guardioles i recuperar els ous dels nostres ocells !!!!
