Sisukord:

Arduino kontrollerid: 10 sammu (piltidega)
Arduino kontrollerid: 10 sammu (piltidega)

Video: Arduino kontrollerid: 10 sammu (piltidega)

Video: Arduino kontrollerid: 10 sammu (piltidega)
Video: Исправлена проблема с драйвером USB для Windows 8.1 и Windows 10 - Robojax 2024, November
Anonim
Arduino kontrollerid
Arduino kontrollerid
Arduino kontrollerid
Arduino kontrollerid

Arduino mängukontrollisüsteem, mis kasutab Arduino ja p5.js raamatukogu. Selle idee on luua Arduino projekt, mida on lihtne kopeerida ja laiendada. Kontrolleri ühendused on loodud selleks, et kasutada hunnikut erinevaid andureid ja sisendeid, mida saab iga kontrolleri järgi vahetada.

Selle projekti eesmärk on kasutada ka p5.js JavaScripti teeki koos p5.js jaoks loodud p5.play teekiga. Need raamatukogud võimaldavad meil oma mänge hõlpsalt programmeerida. Veebisaidil p5.play on hunnik õpetusi ja näiteid, et kasutajad saaksid selle jaoks mänge luua. See projekt võimaldab kasutajatel harjutada oma riist- ja tarkvaraarendusoskusi.

Samm: mida vajate

Mida vajate
Mida vajate

Tööriistad:

  • Jootekolb
  • Jootma
  • Traadi eemaldajad
  • Külgmised lõikurid
  • Tangid

Riistvara:

  • Arduinoga ühilduv plaat (kasutasin nii Sparkfun Redboardi kui ka Arduino Unot ja Leonardot)
  • Perf Board:

    • 8 cm x 6 cm rohelised perf -lauad
    • Aduino Uno kilp
  • Erinevad andurid

    • Juhtkangid
    • Nupud (takistitega, 10k oomi, nendega kaasas)
    • Potentsiomeetrid
    • Paindlikud andurid
    • Rõhuandurid
    • Jne…
  • Traat:

    • Üks traat (kasutasin 26 AWG tahket)
    • Lint traat ja klambrid
  • Katkesta päised (vähemalt 20 neist)
  • Valikuline riistvara (selle asemel võite kasutada pappi ja kuumliimi/tõmblukusid):

    • Leivalaud ja hüppajakaablid prototüüpimiseks
    • 3D trükitud korpused
    • Riistvarakinnitused (kasutasin M2.5 kruvisid)

Tarkvara:

  • Arduino IDE
  • p5.js raamatukogu

    P5. mängida ka raamatukogu

  • p5.seriaaljuhtimine
  • Node.js

2. samm: ehitamine: konsooli jaotur, kilbi seadistamine

Ehitus: konsooli jaotur, kilbi seadistamine
Ehitus: konsooli jaotur, kilbi seadistamine

Jootke päised Arduino Uno kilp -perfoplaadile.

  • Alustasin kilpide päistest (toide, analoog ja digitaalne)
  • Järgmisena on 2x5 päise tihvti. Võite kasutada 2x5 päist või ainult 2 rida viiest eraldatavat päist. Panin need vertikaalselt A3 ja A4 ritta ning jätsin nende vahele 2 tühikut.

3. samm: ehitamine: konsooli jaotur, kilbi juhtmestik

Hoone: konsooli jaotur, kilbi juhtmestik
Hoone: konsooli jaotur, kilbi juhtmestik
Hoone: konsooli jaotur, kilbi juhtmestik
Hoone: konsooli jaotur, kilbi juhtmestik
Hoone: konsooli jaotur, kilbi juhtmestik
Hoone: konsooli jaotur, kilbi juhtmestik

Järgmisena tahame oma juhtmed varjestada kilbil. Ülaosas on lihtsam juhtmeid juhtida, kuid kui soovite puhtamat välimust, saate neid alt vedada.

Soovite nende juhtmete suunamisel pöörata tähelepanu skeemile (Eagle'i skeem on allalaadimiseks saadaval). Samuti saate vaadata värvijuhendit, mis teid selles abistab.

Selle varjestuse idee on võimaldada igalt kontrollerilt 3 analoogsisendit ja 5 digitaalsisendit. See kasutab täielikult ära kõiki Arduino Uno analoogsisendeid ja meie lintkaabli ülejäänud juhtmeid.

4. samm: ehitamine: kontrollerid, osade seadistamine

Ehitus: kontrollerid, osade seadistamine
Ehitus: kontrollerid, osade seadistamine
Ehitus: kontrollerid, osade seadistamine
Ehitus: kontrollerid, osade seadistamine
Ehitus: kontrollerid, osade seadistamine
Ehitus: kontrollerid, osade seadistamine

Kontrolleri ehitamise esimene samm on planeerida, milliseid andureid kasutada. Minu näidetes on mul üsna tavaline juhtkang ja mõned nupud. Mul on ka kahe liuguriga potentsiomeetriga kontroller.

Kui soovite seda korrata, saate minu pilte paigutamiseks vaadata.

Järgmine samm on lintkaabli jootmine perfoplaadi külge.

  1. Eemaldage ja tinake lintkaabel
  2. Jootke lintkaabel oma perf -plaadi ülemise keskosa külge.

Järgmine samm on juhtmete suunamine. Alustasin sellest, et ühendasin toite (5V/punane juhe) ja maanduse (pruun juhe) kõigepealt anduritega. Seejärel ühendasin analoogsisendid. Leidsin, et horisontaalseks liikumiseks on lihtne kasutada oranži kaablit (analoog A0 või A3) ja vertikaalseks liigutamiseks kollast kaablit (analoog A1 või A4).

Asjade järjepidevuse tagamiseks ühendasin ka väikese nupu kõikidel kontrolleritel lillaks. See on kasulik näiteks jadapordi sulgemisel (ma vaatan seda hiljem üle), aga ka menüüdest või valikutest.

Kui soovite seda vaadata, laadisin üles oma juhtkangi kontrolleri kiire skeemi. Meie pin-out diagrammilt näete iga kontrolleri ühendamise võimalust (3 analoogsisendit ja 5 digitaalset).

5. samm: valikuline: korpused

Valikuline: korpused
Valikuline: korpused
Valikuline: korpused
Valikuline: korpused
Valikuline: korpused
Valikuline: korpused

See samm on valikuline, kuid kui teil on juurdepääs 3D -printerile, näeb teie projekti tulemus välja veidi täpsem ja viimistletud. Nagu näete minu prototüüpidest, kasutasin lihtsat papitükki, et vältida perf -plaatide põhjas olevaid jootekohti sõrmede torkimist.

Sellele sammule leiate minu 3D -mudelid. Olen loonud jaoturile korpused nii Arduino Uno/Leonardo kui ka Sparkfun RedBoardile (see plaat on natuke laiem ja kasutab mini -USB -d).

Kontrollerite jaoks saate need kinnitada kruvidega M2.5. Hoidsin mutrit trükkplaadi küljel ja kasutan pesurit ja põhjas olevat kruvi.

Lisasin ka 3D -mudeli nuppude liugurite jaoks, mida kasutasin.

Kõik 3D -failid leiate GitHubist.

6. samm: programmeerimine: Arduino

Programmeerimine: Arduino
Programmeerimine: Arduino

Alustuseks seadistame testimiseks lihtsa visandi. Soovitan kasutada NYP ITP loodud õpetust siit. Selle õpetuse tegemiseks peab teil olema installitud p5.serialcontroll ja node.js. Selles õpetuses tutvustatakse teile Arduino seadistamist jadaandmete saatmiseks, mida saab kasutada meie javascripti teegis p5.js. Selleks võite kasutada jaoturit ja kontrollerit, mille oleme loonud eelmistes sammudes, või saate kopeerida õpetuses näidatud ahelaid. See õpetus kasutab Arduino Uno A0 analoogsisendit, mis on ühendatud teie esimese kontrolleri oranži juhtmega.

Järgmise õpetuse, mida soovite järgida, leiate siit. See õpetus juhendab teid mitme sisendi seadistamisel ja nende kasutamisel p5.js -s. Õpetuses kasutatakse analoogsisendeid A0 ja A1. Need vastavad meie süsteemi kontrolleri oranžidele ja kollastele juhtmetele.

Kui olete ülaltoodud õpetused läbi teinud, saame Arduino programmeerida. Kood, mida soovime kasutada, on allpool:

// kontroller 1const int dig2 = 2; // sinine konst int dig3 = 3; // lilla const int dig4 = 4; // hall const int dig5 = 5; // valge const int dig6 = 6; // must // kontroller 2 const int dig7 = 7; // sinine konst int dig8 = 8; // lilla const int dig9 = 9; // hall const int dig10 = 10; // valge const int dig11 = 11; // must

tühine seadistus () {

Seriaalne algus (9600); while (Serial.available () <= 0) {Serial.println ("tere"); // stardisõnumi saatmise viivitus (300); // oota 1/3 sekundit} 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 () {

if (Serial.available ()> 0) {// loe sissetulevat baiti: int inByte = Serial.read (); // lugege andurit:

// ANALOGI kontroller 1

int analoog0 = analogRead (A0); int analoog1 = analogRead (A1); int analoog2 = analogRead (A2); // ANALOG Controller 2 int analog3 = analogRead (A3); int analoog4 = analogRead (A4); int analoog5 = analogRead (A5); // DIGITAL Controller 1 int digital2 = digitalRead (dig2); int digital3 = digitalRead (dig3); int digital4 = digitalRead (dig4);

int digital5 = digitalRead (dig5);

int digital6 = digitalRead (dig6); // DIGITAL Controller 2 int digital7 = digitalRead (dig7); int digital8 = digitalRead (dig8); int digital9 = digitalRead (dig9); int digital10 = digitalRead (dig10); int digital11 = digitalRead (dig11); // tulemuste printimine: Serial.print (analoog0); // [0] Serial.print (","); Serial.print (analoog1); // [1] Serial.print (","); Serial.print (analoog2); // [2] Serial.print (","); // Start Controller 2 andmed Serial.print (analoog3); // [3] Serial.print (","); Serial.print (analoog4); // [4] Seeria.print (","); Serial.print (analoog5); // [5] Serial.print (","); Serial.print (digitaalne2); // [6] Serial.print (","); Serial.print (digitaalne3); // [7] Seeria.print (","); Serial.print (digital4); // [8] Seeria.print (","); Serial.print (digitaalne5); // [9] Serial.print (","); Serial.print (digitaalne6); // [10] Serial.print (","); // Käivita kontroller 2 andmed Serial.print (digital7); // [11] Seeria.print (","); Serial.print (digitaalne8); // [12] Serial.print (","); Serial.print (digitaalne9); // [13] Seeria.print (","); Serial.println (digital10); // [14] Seeria.print (","); Serial.println (digital11); // [15]}}

See kood saadab meie kahe kontrolleri seeriaandmed 16 numbrina. Esimesed 6 neist numbritest on meie analoogsisendid (vahemikus 0–1023) ja ülejäänud 10 väärtust on meie digitaalsed väärtused (0 või 1).

Kui meie kood on üles laaditud, saame seda testida, avades seeriamonitori ja sisestades seeriamonitori väärtuse, nagu tegime ITP 2. õpetuses. Peaksime oma väärtuste jada eraldama komadega.

Samm: programmeerimine: HTML

Kui oleme oma Arduino seadistanud ja töötanud, saame hakata oma veebiasju programmeerima. HTML -kood on väga lihtne.

keha {polster: 0; varu: 0;}

HTML -kood lihtsalt seob meie JavaScripti failid kokku. Enamik meie koodist toimub tegelikult meie eskiisi.js -failis.

8. samm: programmeerimine: P5.js ja Javascript

Kui oleme oma HTML -i seadistanud, saame JavaScripti kallal töötada. Kui te pole seda juba teinud, peaksite nüüd alla laadima nii p5.js kui ka p5.play ja lisama need oma veebisaidi kataloogi oma raamatukogude kausta.

  • p5.js
  • lk 5. mängida

Eelmises etapis seadistasime oma HTML -faili, et helistada meie teekidele p5.js ja p5.play. Samuti seadistasime selle kasutama meie sketch.js -faili, kus teeme suurema osa oma programmeerimisest. Allpool on meie luustiku kood. Selle leiate ka siit.

// Serial Variablesvar serial; // muutuja jadaportportaali eksemplari hoidmiseks var portName = 'COM4'; // täitke siin oma jadaporti nimi // Globaalsed mängumuutujad ---------------

// Seadistusfunktsioon ----------------------

funktsiooni seadistamine () {createCanvas (640, 480); seeria = uus p5. SerialPort (); // tehke jadaportportaali uus eksemplar serial.on ('list', printList); // seada tagasihelistamisfunktsioon jadapordi loendi sündmusele serial.on ('ühendatud', serverConnected); // tagasihelistamine serveriga ühenduse loomiseks serial.on ('avatud', portOpen); // tagasihelistamine pordi avamiseks serial.on ('andmed', serialEvent); // tagasihelistamine uute andmete saabumisel serial.on ('error', serialError); // vigade tagasihelistamine serial.on ('sulge', portClose); // tagasihelistamine pordi sulgemiseks serial.list (); // loetle jadapordid serial.open (portName); // jadaporti avamine} // Joonistusfunktsioon ----------------------- funktsioon draw () {taust (0); // must taust} // Seeriaandmete tõlgendamine siin ---------- funktsioon serialEvent () {// loe jadapordist stringi //, kuni saad käru tagastuse ja uue rea: var inString = serial. readStringUntil ('\ r / n'); // kontrollige, kas seal on tegelikult seadistus: if (inString.length> 0) {if (inString! == 'tere') {// kui saate tere, ignoreerige seda var sensors = split (inString, ', '); // jagage string komaga, kui (sensorid.pikkus> 16) {// kui on kuusteist elementi (6 analoogi, 10 digitaalset) // Andurite andmeid kasutage siin:

}

} serial.write ('x'); // saatke bait, nõudes rohkem seeriaandmeid}} // hankige portide loend: function printList (portList) {// portList on jadaportide nimede massiiv (var i = 0; i <portList.length; i ++) {// Kuva loend konsool: print (i + "" + portList ); }} function serverConnected () {print ('serveriga ühendatud'); } function portOpen () {print ('jadaport avati.')} function serialError (err) {print ('Jadaportiga läks midagi valesti.' + err); } function portClose () {print ('Jadaport suleti.'); } funktsioon closeCode () {serial.close (portName); return null; } window.onbeforeunload = closeCode;

Kui olete luustiku salvestanud. Neid väärtusi saate kasutada sarnaselt ITP õpetuses tehtud meetoditega. Väärtuste jada, mille me oma Arduinost 6. sammus saatsime, saadetakse 16 numbrina. Allpool on selle massiivi analüüsimise koht.

// Tõlgi seeriaandmeid siin ----------

function serialEvent () {// loe jadapordist stringi //, kuni saad käru tagastuse ja uue rea: var inString = serial.readStringUntil ('\ r / n'); // kontrollige, kas seal on tegelikult seadistus: if (inString.length> 0) {if (inString! == 'tere') {// kui saate tere, ignoreerige seda var sensors = split (inString, ', '); // poolita string komaga if (sensorid.length> 16) {// kui on kuusteist elementi (6 analoogi, 10 digitaalset) // Kasuta anduri andmeid siin:}} serial.write ('x'); // saata bait, nõudes rohkem seeriaandmeid}}

Nüüd saame oma programmi käivitada, et näha, kas see töötab!

Samm: programmi käivitamine

Teie programmi käivitamine
Teie programmi käivitamine

Nüüd saame oma programmi käivitada, et näha, kas see töötab. Saate luua oma mängu, kasutades meie eelmises failis olevat skeleton.js faili või kasutada lihtsat Pipe mängu, mida leiate siit.

Sarnaselt ITP laboriga järgime oma programmi käivitamiseks alltoodud samme.

  • Ühendage Arduino kontrolleriga, mida kavatsete kasutada.
  • Avage p5.serialcontrol
  • Muutke oma p5 eskiisi port kasutatavaks (kui kasutate skeletti, on see reas 3)
  • Avage HTML -fail, mis viitab teie p5 visandile

Kui teil on välist meediat, näiteks pilte või allalaaditud fonte, soovite seda serveris käivitada. Soovi korral saate käivitada lihtsa kohaliku pythoni serveri.

10. samm: minge kaugemale

Selleks, et minna kaugemale ja arendada selleks rohkem mänge, võite järgida erinevaid näiteid, mis leiate siit. Allpool on näide minu loodud keerukamast mängust. See on 1 vs 1 tankitulistaja mäng. Kõik selle jaoks vajalikud ressursid leiate GitHubist.

Soovitan: