Sadržaj:

Arduino kontroleri: 10 koraka (sa slikama)
Arduino kontroleri: 10 koraka (sa slikama)

Video: Arduino kontroleri: 10 koraka (sa slikama)

Video: Arduino kontroleri: 10 koraka (sa slikama)
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Srpanj
Anonim
Arduino kontroleri
Arduino kontroleri
Arduino kontroleri
Arduino kontroleri

Arduino sustav kontrolera igara koji koristi Arduino i knjižnicu p5.js. Ideja je stvoriti Arduino projekt koji se lako replicira i proširuje. Priključci kontrolera dizajnirani su tako da koriste hrpu različitih senzora i ulaza koji se mogu zamijeniti ovisno o svakom kontroleru.

Ovaj je projekt također dizajniran za korištenje p5.js JavaScript biblioteke zajedno s p5.play knjižnicom dizajniranom za p5.js. Ove nam knjižnice omogućuju lako programiranje igara. Web stranica p5.play ima hrpu vodiča i primjera za korisnike koji za nju stvaraju igre. Ovaj projekt omogućuje korisnicima da vježbaju svoje vještine razvoja hardvera i softvera.

Korak 1: Ono što će vam trebati

Ono što će vam trebati
Ono što će vam trebati

Alati:

  • Lemilica
  • Lem
  • Skidači žica
  • Bočni rezači
  • Kliješta

Hardver:

  • Arduino kompatibilna ploča (koristio sam Sparkfun Redboard kao i Arduino Uno i Leonardo)
  • Perf tabla:

    • 8cm x 6cm zelene perf ploče
    • Aduino Uno štit perf ploča
  • Razni senzori

    • Joysticks
    • Gumbi (s otpornicima, 10 k ohma, s njima)
    • Potenciometri
    • Savitljivi senzori
    • Senzori tlaka
    • Itd…
  • Žica:

    • Pojedinačna žica (koristio sam 26 AWG solid)
    • Vrpca i žice
  • Odlomljena zaglavlja (najmanje 20 od njih)
  • Opcijski hardver (umjesto njega možete koristiti karton i hotglue/zip veze):

    • Olovna ploča i kratkospojni kablovi za izradu prototipova
    • 3D tiskana kućišta
    • Hardverski pričvršćivači (koristio sam vijke M2.5)

Softver:

  • Arduino IDE
  • knjižnica p5.js

    P5.play biblioteka također

  • p5.serialcontrol
  • Node.js

Korak 2: Izgradnja: Konzolno čvorište, Postavljanje štita

Zgrada: Konzolno čvorište, postavljanje štita
Zgrada: Konzolno čvorište, postavljanje štita

Lemiti zaglavlja na perf ploču Arduino Uno štita.

  • Počeo sam s zaglavljima štita (napajanje, analogni ulaz i digitalni)
  • Slijede 2x2 zaglavlja zaglavlja. Možete koristiti 2x5 zaglavlja ili samo 2 reda od 5 zaglavlja. Poravnao sam ih s A3 i A4 okomito i ostavio 2 razmaka između njih.

Korak 3: Izgradnja: Konzolno čvorište, ožičenje štita

Zgrada: konzolno čvorište, ožičenje štita
Zgrada: konzolno čvorište, ožičenje štita
Zgrada: Konzolno čvorište, ožičenje štita
Zgrada: Konzolno čvorište, ožičenje štita
Zgrada: konzolno čvorište, ožičenje štita
Zgrada: konzolno čvorište, ožičenje štita

Zatim želimo usmjeriti naše žice na štit. Lakše je provoditi žice na vrhu, ali ako želite čistiji izgled, možete ih provesti na dnu.

Prilikom usmjeravanja ovih žica želite obratiti pozornost na shemu (shema Eagle dostupna je za preuzimanje). Također možete pogledati vodič za boje koji će vam pomoći u tome.

Ideja ovog dizajna štita je omogućiti 3 analogna ulaza i 5 digitalnih ulaza sa svakog kontrolera. Time se u potpunosti iskorištavaju svi analogni ulazi na Arduino Uno, kao i preostale žice na našem vrpčanom kabelu.

Korak 4: Izgradnja: kontrolera, postavljanje dijelova

Izgradnja: kontroleri, postavljanje vaših dijelova
Izgradnja: kontroleri, postavljanje vaših dijelova
Izgradnja: kontroleri, postavljanje vaših dijelova
Izgradnja: kontroleri, postavljanje vaših dijelova
Izgradnja: kontroleri, postavljanje vaših dijelova
Izgradnja: kontroleri, postavljanje vaših dijelova

Prvi korak u izgradnji vašeg kontrolera je planiranje senzora koje ćete koristiti. U svojim primjerima imam prilično standardni kontroler s joystickom i nekoliko gumba. Također imam kontroler s dva klizna potenciometra.

Ako ovo želite ponoviti, možete pogledati moje slike za postavljanje.

Sljedeći korak je lemljenje vrpčnog kabela na perf ploču.

  1. Ogolite i kositrite vrpčani kabel
  2. Lemite vrpčani kabel na gornje središte vaše perf ploče.

Sljedeći korak je usmjeravanje žica. Počeo sam tako što sam prvo spojio napajanje (5V/crvena žica) i masu (smeđa žica) na senzore. Zatim sam spojio analogne ulaze. Bilo mi je lako koristiti narančasti kabel (Analog A0 ili A3) za vodoravno kretanje i žuti kabel (Analog A1 ili A4) za okomito kretanje.

Kako bi stvari bile dosljedne, također sam na sve svoje kontrolere ožičio mali gumb u ljubičastu boju. Ovo je korisno za stvari poput zatvaranja serijskog porta (o tome ću kasnije), kao i za izbornike ili opcije.

Učitao sam kratku shemu upravljačkog modula ako želite ovo pogledati. Iz našeg dijagrama isticanja možete vidjeti mogućnost povezivanja svakog kontrolera (3 analogna ulaza i 5 digitalnih).

Korak 5: Izborno: kućišta

Izborno: kućišta
Izborno: kućišta
Izborno: kućišta
Izborno: kućišta
Izborno: kućišta
Izborno: kućišta

Ovaj korak nije obavezan, ali ako imate pristup 3D pisaču, ishod vašeg projekta će izgledati malo profinjenije i dovršeno. Kao što možete vidjeti u mojim prototipima, upotrijebio sam jednostavan komad kartona kako bih spriječio da vam lemni spojevi na dnu perf ploča dodiruju prste.

Uz ovaj korak možete pronaći moje 3D modele. Napravio sam kućišta za čvorište i za Arduino Uno/Leonardo i za Sparkfun RedBoard (ova ploča je malo šira i koristi mini USB).

Za kontrolere, možete ih pričvrstiti vijcima M2.5. Držao sam maticu sa strane PCB -a i koristim podlošku i vijak na dnu.

Uključio sam i 3D model klizača za potenciometre koje sam koristio.

Sve 3D datoteke možete pronaći na GitHubu.

Korak 6: Programiranje: Arduino

Programiranje: Arduino
Programiranje: Arduino

Počnimo postavljanjem jednostavne skice za testiranje. Predlažem korištenje tutorijala koji je stvorio ITP na NYU -u koji se nalazi ovdje. Da biste izvršili ovaj vodič, morat ćete imati instaliran p5.serialcontroll i node.js. U ovom vodiču upoznat ćete se s postavljanjem Arduina za slanje serijskih podataka koje može koristiti naša javascript knjižnica, p5.js. Za to možete koristiti koncentrator i kontroler koji smo stvorili u prethodnim koracima ili možete replicirati sklopove prikazane u vodiču. Ovaj vodič koristi analogni ulazni pin A0 na Arduino Uno koji je preslikan u narančastu žicu vašeg prvog kontrolera.

Sljedeći vodič koji želite slijediti možete pronaći ovdje. Ovaj vodič će vas voditi kroz postavljanje više ulaza i njihovu upotrebu u p5.js. U vodiču se koriste analogni ulazi A0 i A1. Oni će odgovarati narančastoj i žutoj žici na kontroleru 1 našeg sustava.

Nakon što prođete kroz gornje vodiče, možemo programirati Arduino. Kôd koji želimo koristiti je dolje:

// kontroler 1const int dig2 = 2; // plavi const int dig3 = 3; // ljubičasta const int dig4 = 4; // sivo const int dig5 = 5; // bijeli const int dig6 = 6; // crno // kontroler 2 const int dig7 = 7; // plavi const int dig8 = 8; // ljubičasta const int dig9 = 9; // sivo const int dig10 = 10; // bijeli const int dig11 = 11; //crno

void setup () {

Serial.begin (9600); while (Serial.available () <= 0) {Serial.println ("zdravo"); // šalje kašnjenje početne poruke (300); // čekamo 1/3 sekunde} pinMode (dig2, INPUT); pinMode (dig3, INPUT); pinMode (dig4, INPUT); pinMode (dig5, INPUT); pinMode (dig6, INPUT); pinMode (dig7, INPUT); pinMode (dig8, INPUT); pinMode (dig9, INPUT); pinMode (dig10, INPUT); pinMode (dig11, INPUT); }

void loop () {{100} {101}

if (Serial.available ()> 0) {// čitanje dolaznog bajta: int inByte = Serial.read (); // očitavanje senzora:

// ANALOG kontroler 1

int analog0 = analogRead (A0); int analog1 = analogRead (A1); int analog2 = analogRead (A2); // ANALOG kontroler 2 int analog3 = analogRead (A3); int analog4 = analogRead (A4); int analog5 = analogRead (A5); // DIGITALNI Upravljač 1 int digital2 = digitalRead (dig2); int digital3 = digitalno čitanje (dig3); int digital4 = digitalRead (dig4);

int digital5 = digitalRead (dig5);

int digital6 = digitalRead (dig6); // DIGITALNI Upravljač 2 int digital7 = digitalRead (dig7); int digital8 = digitalno čitanje (dig8); int digital9 = digitalRead (dig9); int digital10 = digitalRead (dig10); int digital11 = digitalRead (dig11); // ispis rezultata: Serial.print (analog0); // [0] Serial.print (","); Serijski.ispis (analogni1); // [1] Serial.print (","); Serijski.ispis (analogni2); // [2] Serial.print (","); // Pokreni podatke kontrolera 2 Serial.print (analog3); // [3] Serial.print (","); Serijski.ispis (analogni4); // [4] Serial.print (","); Serijski.ispis (analogni5); // [5] Serial.print (","); Serijski.ispis (digital2); // [6] Serial.print (","); Serijski.ispis (digital3); // [7] Serial.print (","); Serijski.ispis (digital4); // [8] Serial.print (","); Serijski.ispis (digital5); // [9] Serial.print (","); Serijski.ispis (digital6); // [10] Serial.print (","); // Pokreni kontroler 2 podaci Serial.print (digital7); // [11] Serial.print (","); Serijski.ispis (digital8); // [12] Serial.print (","); Serial.print (digital9); // [13] Serial.print (","); Serial.println (digital10); // [14] Serial.print (","); Serial.println (digital11); // [15]}}

Ovaj kôd šalje serijske podatke s oba naša kontrolera u nizu od 16 brojeva. Prvih 6 od ovih brojeva su naši analogni ulazi (u rasponu od 0-1023), a preostalih 10 vrijednosti su naše digitalne vrijednosti (0 ili 1).

Nakon što se naš kôd učita, možemo to testirati otvaranjem serijskog monitora i upisivanjem vrijednosti u naš serijski monitor kao što smo to učinili u drugom vodiču iz ITP -a. Trebali bismo dobiti niz svojih vrijednosti odvojenih zarezima.

Korak 7: Programiranje: HTML

Nakon što smo naš Arduino postavili i radili, možemo početi programirati naše web stvari. HTML kod je vrlo jednostavan.

body {padding: 0; margina: 0;}

Html kôd jednostavno povezuje naše javascript datoteke. Većina našeg koda zapravo će se nalaziti u našoj sketch.js datoteci.

Korak 8: Programiranje: P5.js i Javascript

Nakon što postavimo HTML, možemo raditi na svom JavaScript -u. Ako već niste, sada biste trebali preuzeti p5.js kao i p5.play te ih dodati u mapu svojih knjižnica u direktoriju za svoju web stranicu.

  • p5.js
  • p5.igra

U prethodnom smo koraku postavili našu HTML datoteku tako da poziva naše knjižnice p5.js i p5.play. Također smo ga postavili za korištenje naše datoteke sketch.js gdje ćemo raditi većinu našeg programiranja. Ispod je kôd za naš kostur. Možete ga pronaći i ovdje.

// Serijske varijablevar serijski; // varijabla za držanje instance biblioteke serijskog porta var portName = 'COM4'; // ovdje unesite naziv serijskog porta // Globalne varijable igara ---------------

// Funkcija postavljanja ----------------------

function setup () {createCanvas (640, 480); serijski = novi p5. SerialPort (); // napraviti novu instancu biblioteke serialport serial.on ('list', printList); // postavlja funkciju povratnog poziva za događaj popisa serijskih portova serial.on ('connected', serverConnected); // povratni poziv za povezivanje sa poslužiteljem serial.on ('open', portOpen); // povratni poziv za otvaranje porta serial.on ('data', serialEvent); // povratni poziv za dolazak novih podataka serial.on ('error', serialError); // povratni poziv za pogreške serial.on ('close', portClose); // povratni poziv za zatvaranje porta serial.list (); // popis serijskih portova serial.open (portName); // otvaranje serijskog porta} // Funkcija crtanja ----------------------- funkcija draw () {background (0); // crna pozadina} // Ovdje interpretirajte serijske podatke ---------- funkcija serialEvent () {// čita niz sa serijskog porta // sve dok ne dobijete return carriage i newline: var inString = serial. readStringUntil ('\ r / n'); // provjeravamo postoji li zapravo niz postavki: if (inString.length> 0) {if (inString! == 'hello') {// ako dobijete pozdrav, zanemarite to var sensors = split (inString, ', '); // podijeliti niz na zareze if (sensors.length> 16) {// ako postoji šesnaest elemenata (6 analognih, 10 digitalnih) // Ovdje upotrijebite podatke senzora:

}

} serial.write ('x'); // šalje bajt koji traži više serijskih podataka}} // dobiva popis portova: funkcija printList (portList) {// portList je niz naziva serijskih portova za (var i = 0; i <portList.length; i ++) {// Prikažite popis konzole: print (i + "" + portList ); }} function serverConnected () {print ('spojen na poslužitelj.'); } function portOpen () {print ('serijski port otvoren.')} function serialError (err) {print ('Nešto nije u redu sa serijskim portom.' + err); } function portClose () {print ('Serijski port zatvoren.'); } funkcija closedCode () {serial.close (portName); return null; } window.onbeforeunload = closedCode;

Nakon što sačuvate kostur. Ove vrijednosti možete koristiti slično kao što je to učinjeno u vodiču za ITP. Niz vrijednosti koje smo poslali iz našeg Arduina u koraku 6 šalje se u nizu od 16 brojeva. Dolje ćemo analizirati ovaj niz.

// Ovdje protumačite serijske podatke ----------

function serialEvent () {// čita niz sa serijskog porta // sve dok ne dobijete return carriage i newline: var inString = serial.readStringUntil ('\ r / n'); // provjeravamo postoji li zapravo niz postavki: if (inString.length> 0) {if (inString! == 'hello') {// ako dobijete pozdrav, zanemarite to var sensors = split (inString, ', '); // podijeliti niz na zareze if (sensors.length> 16) {// ako postoji šesnaest elemenata (6 analognih, 10 digitalnih) // Ovdje upotrijebite podatke senzora:}} serial.write ('x'); // pošaljite bajt koji traži više serijskih podataka}}

Sada možemo pokrenuti naš program da vidimo radi li!

Korak 9: Pokretanje programa

Pokretanje vašeg programa
Pokretanje vašeg programa

Sada možemo pokrenuti naš program da vidimo radi li. Možete stvoriti vlastitu igru koristeći datoteku skeleton.js u našoj prethodnoj datoteci ili koristiti jednostavnu igru Pipe koja se nalazi ovdje.

Slično ITP Labu, za pokretanje našeg programa slijedit ćemo dolje navedene korake.

  • Priključite Arduino s kontrolerima koje planirate koristiti.
  • Otvorite p5.serialcontrol
  • Promijenite port skice p5 na onaj koji koristite (ako koristite kostur, ovo je na retku 3)
  • Otvorite HTML datoteku koja povezuje vašu p5 skicu

Ako imate vanjske medije, poput slika ili preuzetih fontova, htjet ćete to pokrenuti na poslužitelju. Možete pokrenuti jednostavan lokalni python poslužitelj ako želite.

Korak 10: Idite dalje

Da biste otišli dalje i razvili više igara za to, možete slijediti različite primjere iz p5.play koji se nalaze ovdje. Ispod je primjer složenije igre koju sam stvorio. Riječ je o igri 1 prema 1 tenku. Sve resurse za to možete pronaći na GitHubu.

Preporučeni: