Det hele startede med et lille spil fra de mørke tider kaldet “Mario” lige fra det tidspunkt, hvor han var en lille fyr, der hoppede på ænder for at redde min prinsesse, indtil han var en maskulin smuk prins, der strejfede i Persien (Prinsen af Persien), der kæmpede mod mørket for at redde min verden bagved har jeg været en stor fan af at spille videospil, og jeg voksede op med at spille dem. Men de keder sig nogle gange, og jeg føler mig mindre involveret i det. I dag muliggør de avancerede spilkonsoller virtuel spil og hjælper os med at føle spillet meget bedre end et tastatur eller en mus kan gøre.
At være en Arduino-entusiast var jeg træt af at spille det berømte spil kaldet “Angry Birds” ved hjælp af tastatur og mus og besluttede at bygge min egen spilcontroller ved hjælp af en Flex-sensor og et potentiometer. Når flex-sensoren trækkes, trækkes fuglen på katapulten også, og du kan bruge potentiometeret til at indstille den retning, den skal startes i. Så når du slipper flex-sensoren, startes fuglen. Jeg nød stort set at gøre det, så hvis du er ved at opbygge noget meget ens, så vil denne tutorial være en hjælp. Denne vejledning vil også være nyttig i styring af musemarkør ved hjælp af potentiometer.
Krav til software og hardware:
Software:
- Arduino IDE
- Behandler IDE
- Angry Birds Game på computeren
Hardware:
- Arduino (enhver version)
- Potentiometer
- Flex-sensor
- 47K ohm modstand
- Tilslutning af ledninger
- Brødbræt
Koncept bag:
Den Arduino Board læser værdierne fra potentiometer og Flex Senor og sender dem til Laptop / PC via USB COM-port via normal Serial.write () funktion. Vi læser derefter disse oplysninger ved hjælp af Processing og styrer musemarkøren ved hjælp af Robot-klassen i Java, som understøttes ved behandling af IDE. Vi har programmeret behandlingen af IDE på en sådan måde, at når der trækkes i Flex-sensoren, laves et museklik, og baseret på hvor meget den trækkes, bevæger musemarkøren sig i X-retning. Derefter vil vi, baseret på værdien fra potentiometeret, flytte musemarkøren i Y-retning, på denne måde kan vi indstille den retning, som fuglen skal startes i.
Kredsløbsdiagram:
Kredsløbet til at spille Angry Bird ved hjælp af Flex Sensor og Potentiometer er let.
Vi har enkelt tilsluttet et potentiometer og en flex-sensor til de analoge indgange (A0, A1) på Arduino. Outputtet fra Flex-sensoren trækkes også ned ved hjælp af en 47K pull down-modstand.
Du kan forbinde det direkte på brødbrættet eller lodde dem til et Perf-bræt og samle det på handsker eller noget for at gøre det mere kreativt. Jeg har simpelthen brugt et brødbræt til at lave mine forbindelser som vist nedenfor:
Arduino-program:
Den komplette Arduino-kode gives i slutningen af vejledningen. Få vigtige linjer forklares nedenfor.
Vi initialiserer programmet til at arbejde med 9600 baudrate og begynder at læse værdierne fra Flex-sensor og Potentiometer. Som vi ved, kan funktionen serial.write () kun sende en byte data ad gangen. Da en byte er 8 bits og 2 ^ 8 = 256. Vi vil være i stand til at sende værdier fra 0 til 256. Så vi er nødt til at komprimere værdierne af Flex-sensoroutput og Potentiometer-output til 0 til 256.
For at gøre det bruger vi map () -funktionen i Arduino. Alle værdier fra flex-sensoren konverteres fra 5 til 100, så når vi bøjer sensoren, øges den fra 5, og når den frigives, går den tilbage til 5. For at nævne museklik bruges værdien 1 og 0. Når 1 sendes, trykkes musen, og når 0 sendes, frigives musen.
hvis (FlexValue> = 65 && FlexValue <= 120) // min flex-sensor varierer fra 65 til 120, kan din være anderledes {FlexValue = map (FlexValue, 120,65,0,100); // baseret på bøjning konverteres til 0 til 100, hvis (FlexValue> = 5) // 1 og 0 bruges til museklik, så start fra 5 {Mclick = true; Serial.write (1); // 1 sendes for at gøre musen venstreklik på Serial.write (FlexValue); // Flex-værdi er afstanden for at flytte musen i X-retning} ellers {Mclick = false; Serial.write (0);}}
Tilsvarende udgør værdierne, at potentiometeret konverteres fra 101 til 200, synger kortfunktionen () og sendes til COM-porten til bærbare computere, der sagsøger Serial.write () -funktionen som vist nedenfor.
hvis (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Baseret konverteres igen til 101 til 201 Serial.write (potValue); // Potværdi er afstanden til at flytte musen i Y-retning}
Resten af programmet forklares ved hjælp af kommentarerne.
Behandlingskode:
Processing er en Open Source-udviklingsapplikation og kan let downloades og bruges til at udvikle interessante projekter ved hjælp af Arduino eller andre mikrokontrollere. Vi har allerede udført få projekter ved hjælp af Processing, og du kan tjekke dem ud ved at klikke på nedenstående links.
- DIY FM-radio ved hjælp af behandling
- Virtual Reality / Gesture-kontrol ved hjælp af Arduino
- Privat chatrum ved hjælp af Arduino.
- Arduino Radar System ved hjælp af Processing APP og Ultralydssensor
- Realtids ansigtsregistrering og sporing ved hjælp af Arduino
- DIY Speedometer ved hjælp af Arduino og Processing
- Ping Pong-spil ved hjælp af Arduino Accelerometer
- Bipet robot ved hjælp af Arduino
- DIY Arduino termisk billedkamera
I dette projekt har vi brugt behandlingen af IDE til at læse COM-portværdierne og kontrollere musemarkøren baseret på de værdier, der modtages via COM-porten. Den komplette behandlingskode til denne Angry Bird Game Controller kan downloades fra nedenstående link:
- Behandlingskode til denne Angry Bird Game Controller (højreklik og 'Gem link som')
Arduino-programmet kan findes i slutningen af denne vejledning. Behandlingskoden blev ændret til at passe til vores formål fra den kode, der blev givet af yoggy på hans GitHub-side.
Dataene, der kommer fra COM-porten, skal læses i samme baudhastighed, som de blev sendt fra Arduino. Kontroller også, hvilken COM-port din Arduino er tilsluttet ved hjælp af enhedsadministratoren. Min Arduino blev tilsluttet COM3 og det var den 0 th Port i min computer og baudrate i Arduino var 9600 så koden er som følger
port = ny Serial (denne, Serial.list (), 9600);
Når vi først har læst værdierne, skelner vi det ved at genkende det baseret på dets værdi på, hvordan vi sendte fra Arduino. Værdierne kortlægges igen fra 0 til 100, så vi vil være i stand til at kontrollere musen baseret på denne værdi.
hvis (port.available ()> 0) {data = port.read (); println (data); // Læs dataene fra COM-porten og gem dem i data} hvis (data> = 101 && data <= 201) // Hvis værdien, hvis den er fra 101 til 201, skal den være fra Potentiometer {Turn = int (map (data, 101,201,0,100)); // Brug denne værdi til at dreje catapullt} hvis (data> = 5 && data <= 100) // Hvis værdien er fra 5 til 100, skal den være fra Flex Sensor {Pull = int (kort (data, 5.100, 0,100));} // Brug denne værdi til at trække katapulten, hvis (data == 1) klik = sandt; // Brug denne værdi til at trykke på museknappen, hvis (data == 0) klik = falsk; // Brug denne værdi til at frigøre museknappen
Når vi først har kategoriseret dataene, kan vi derefter kontrollere musen ved hjælp af Robot Java-klassen i behandling. Kommandobotten.mouseMove (crntX-Pull, crntY + Turn); kan bruges til at flytte musen til en hvilken som helst ønsket position og linierne robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); og robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); kan bruges til at trykke eller slippe museknappen henholdsvis.
hvis (klik == falsk) // når Flex Sesnor ikke trækkes {crntX = (int) p.getX (); crntY = (int) p.getY (); hvis (træk> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Slip museknappen} hvis (klik == sand) // når Flex Sesnor trækkes {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Tryk på museknappen robot.mouseMove (crntX-Pull, crntY + Turn); // Flyt musen baseret på Flex- og POT-værdien}}
Behandlings-IDE, når den startes, viser også en lille dialogboks, hvor du kan finde værdierne for Pull, Turn og status for museklik som vist nedenfor
Denne detalje kan bruges til at debugge programmet eller rette de krævede data.
Arbejder:
For at få dette Angry Bird-projekt til at fungere ved hjælp af den angivne kode skal du samle din hardware i henhold til kredsløbsdiagrammet og uploade den givne Arduino-kode. Bemærk derefter, hvilken COM-port din Arduino er tilsluttet, og foretag de nødvendige ændringer i behandlingskoden, og start behandlingsskitsen.
Start nu bare det vrede fuglespil, og placer dig markøren nær katapulten, og træk i flex-sensoren for at trække fuglen og indstil retningen ved hjælp af potentiometeret. Når retningen er indstillet, slip Flex-sensoren
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Din fugl bliver kastet lige ud i luften og BOOMM !! På grisene. Det komplette arbejde kan findes i videoen nedenfor.
Håber du nød projektet og var i stand til at bygge noget lignende. Hvis du er i tvivl, kan du kontakte mig i kommentarfeltet eller sende dit spørgsmål på forummet for tekniske spørgsmål.
Nu er det tid til at gå ned i de sparekasser og få vores fugleæg tilbage !!!!