Orodha ya maudhui:

Watawala wa Arduino: Hatua 10 (na Picha)
Watawala wa Arduino: Hatua 10 (na Picha)

Video: Watawala wa Arduino: Hatua 10 (na Picha)

Video: Watawala wa Arduino: Hatua 10 (na Picha)
Video: Обзор преобразователя LTC3780 Buck Boost 10A: отказал 2 модуля 2024, Julai
Anonim
Watawala wa Arduino
Watawala wa Arduino
Watawala wa Arduino
Watawala wa Arduino

Mfumo wa mtawala wa mchezo wa Arduino ukitumia Arduino na maktaba ya p5.js. Wazo la hii ni kuunda mradi wa Arduino ambao unarudiwa kwa urahisi na kupanuka. Uunganisho wa mtawala umeundwa kutumia rundo la sensorer anuwai na pembejeo ambazo zinaweza kubadilishana kulingana na kila mtawala.

Mradi huu pia umeundwa kutumia maktaba ya p5.js JavaScript pamoja na maktaba ya p5.play iliyoundwa kwa p5.js. Maktaba hizi zinaturuhusu kupanga michezo yetu kwa urahisi. Tovuti ya p5.play ina rundo la mafunzo na mifano kwa watumiaji kuunda michezo yake. Mradi huu huruhusu watumiaji kufanya mazoezi ya ustadi wao wa uundaji wa vifaa na programu.

Hatua ya 1: Nini Utahitaji

Nini Utahitaji
Nini Utahitaji

Zana:

  • Chuma cha kulehemu
  • Solder
  • Vipande vya waya
  • Wakataji wa upande
  • Vipeperushi

Vifaa:

  • Bodi inayoendana na Arduino (Nilitumia Sparkfun Redboard pamoja na Arduino Uno na Leonardo)
  • Bodi ya Perf:

    • Bodi za manukato za kijani 8cm x 6cm
    • Bodi ya manyoya ya Aduino Uno
  • Sensorer anuwai

    • Vifungo vya furaha
    • Vifungo (na vipinga, 10k ohms, kwenda nazo)
    • Potentiometers
    • Sensorer za Flex
    • Sensorer za Shinikizo
    • Na kadhalika…
  • Waya:

    • Waya moja (nilitumia 26 AWG Mango)
    • Ribbon waya na crimps
  • Vunja Vichwa vya kichwa (Angalau 20 ya hizi)
  • Vifaa vya hiari (unaweza kutumia kadibodi na uhusiano wa hotglue / zip badala yake):

    • Cableboard na nyaya za kuruka kwa prototyping
    • Vifungo vilivyochapishwa vya 3D
    • Vifungo vya vifaa (nilitumia screws M2.5)

Programu:

  • Arduino IDE
  • p5.js maktaba

    P5.cheza maktaba pia

  • p5.udhibiti wa macho
  • Node

Hatua ya 2: Ujenzi: Kitovu cha Dashibodi, Kuweka Ngao

Jengo: Kitovu cha Dashibodi, Kuweka Ngao
Jengo: Kitovu cha Dashibodi, Kuweka Ngao

Solder vichwa vya habari kwa bodi ya manyoya ya Arduino Uno.

  • Nilianza na vichwa vya ngao (nguvu, analog ndani, na dijiti)
  • Ifuatayo ni pini za kichwa cha 2x5. Unaweza kutumia vichwa 2x5, au safu 2 tu za vichwa 5 vya kuvunja kichwa. Nilijipanga na A3 na A4 kwa wima, na nikaacha nafasi 2 katikati yao.

Hatua ya 3: Ujenzi: Kituo cha Dashibodi, Wiring Ngao

Jengo: Kitovu cha Dashibodi, Wiring Ngao
Jengo: Kitovu cha Dashibodi, Wiring Ngao
Jengo: Kitovu cha Dashibodi, Wiring Ngao
Jengo: Kitovu cha Dashibodi, Wiring Ngao
Jengo: Kitovu cha Dashibodi, Wiring Ngao
Jengo: Kitovu cha Dashibodi, Wiring Ngao

Ifuatayo, tunataka kupeleka waya zetu kwenye ngao. Ni rahisi kuendesha waya juu, lakini ikiwa unataka muonekano safi unaweza kuzitatiza chini.

Unataka kulipa kipaumbele mpango (mpango wa Tai unapatikana kwa kupakuliwa) unapotumia waya hizi. Unaweza pia kuangalia mwongozo wa rangi kukusaidia na hii.

Wazo la muundo huu wa ngao ni kuruhusu pembejeo 3 za analog na pembejeo 5 za dijiti kutoka kwa kila mtawala. Hii inachukua kikamilifu faida ya pembejeo zote za Analog kwenye Arduino Uno na vile vile waya zilizobaki kwenye kebo yetu ya Ribbon.

Hatua ya 4: Ujenzi: Watawala, Kuweka Sehemu Zako

Ujenzi: Watawala, Kuweka Sehemu Zako
Ujenzi: Watawala, Kuweka Sehemu Zako
Ujenzi: Watawala, Kuweka Sehemu Zako
Ujenzi: Watawala, Kuweka Sehemu Zako
Ujenzi: Watawala, Kuweka Sehemu Zako
Ujenzi: Watawala, Kuweka Sehemu Zako

Hatua ya kwanza ya kujenga mtawala wako ni kupanga ni sensorer gani za kutumia. Katika mifano yangu, nina mtawala mzuri wa kawaida na fimbo ya kufurahisha na vifungo vichache. Mimi pia nina mtawala na potentiometers mbili za kutelezesha.

Ikiwa unataka kuiga hii, unaweza kuona picha zangu kwa kuwekwa.

Hatua inayofuata ni kuuza cable yako ya Ribbon kwenye bodi ya manukato.

  1. Ukanda na ubati kebo ya Ribbon
  2. Solder kebo ya Ribbon kwenye kituo cha juu cha bodi yako ya manukato.

Hatua inayofuata ni kusafirisha waya zako. Nilianza kwa kuunganisha waya (5V / waya mwekundu) na ardhi (waya wa kahawia) kwa sensorer kwanza. Kisha nikaunganisha pembejeo za analog. Niliona ni rahisi kutumia kebo ya machungwa (Analog A0 au A3) kwa harakati ya usawa na kebo ya manjano (Analog A1 au A4) kwa harakati wima.

Ili kuweka mambo sawa, pia nilitia kitufe kidogo cha kushinikiza kwa zambarau kwa watawala wangu wote. Hii ni muhimu kwa vitu kama kufunga bandari ya serial (nitapita hii baadaye) na menyu au chaguzi.

Nimepakia skimu ya haraka ya mtawala wangu wa starehe ikiwa ungependa kuangalia hii. Kutoka kwa mchoro wetu wa kubonyeza, unaweza kuona uwezekano wa kila unganisho la mtawala (pembejeo 3 za analog, na 5 dijiti).

Hatua ya 5: Hiari: Vifungo

Hiari: Vizuizi
Hiari: Vizuizi
Hiari: Vizuizi
Hiari: Vizuizi
Hiari: Vizuizi
Hiari: Vizuizi

Hatua hii ni ya hiari, lakini ikiwa una ufikiaji wa printa ya 3D matokeo ya mradi wako yataonekana kuwa safi zaidi na kumaliza. Kama unavyoona katika prototypes zangu, nilitumia kipande rahisi cha kadibodi kuzuia viungo vya solder chini ya bodi za manukato kutoboa vidole vyako.

Unaweza kupata mifano yangu ya 3D iliyounganishwa na hatua hii. Nimeunda vifungo kwa kitovu cha Arduino Uno / Leonardo na Sparkfun RedBoard (bodi hii ni pana zaidi na hutumia USB ndogo).

Kwa watawala, unaweza kushikamana na visu za M2.5. Niliweka nati upande wa PCB na hutumia washer na screw chini.

Nimejumuisha pia mtindo wa 3D wa vitambaa vya vitambaa vya potentiometers nilizotumia.

Unaweza kupata faili zote za 3D kwenye GitHub.

Hatua ya 6: Programu: Arduino

Programu: Arduino
Programu: Arduino

Wacha tuanze kwa kuanzisha mchoro rahisi wa kujaribu. Ninashauri kutumia mafunzo yaliyoundwa na ITP huko NYU kupatikana hapa. Ili kufanya mafunzo haya, utahitaji kuwa na p5.serialcontroll na node.js iliyosanikishwa. Katika mafunzo haya, utatambulishwa kuanzisha Arduino ili kutuma data ya serial inayoweza kutumiwa na maktaba yetu ya javascript, p5.js. Unaweza kutumia kitovu na kidhibiti tulichounda katika hatua zilizopita kufanya hivyo, au unaweza kuiga mizunguko iliyoonyeshwa kwenye mafunzo. Mafunzo haya hutumia pini ya kuingiza Analog ya A0 kwenye Arduino Uno ambayo imepangwa kwa waya wa machungwa wa mdhibiti wako wa kwanza.

Mafunzo yafuatayo ambayo unataka kufuata yanaweza kupatikana hapa. Mafunzo haya yatakuongoza kupitia kuanzisha pembejeo nyingi na kuzitumia katika p5.js. Katika mafunzo, pembejeo za Analog A0 na A1 hutumiwa. Hizi zitalingana na waya za rangi ya machungwa na manjano kwenye kidhibiti 1 cha mfumo wetu.

Mara tu unapopitia mafunzo hapo juu, tunaweza kupanga programu ya Arduino. Nambari tunayotaka kutumia iko hapa chini:

// mtawala 1const int dig2 = 2; // bluu const int dig3 = 3; // zambarau const int dig4 = 4; // kijivu const int dig5 = 5; // nyeupe const int dig6 = 6; // nyeusi // mdhibiti 2 const int dig7 = 7; // bluu const int dig8 = 8; // zambarau const int dig9 = 9; // kijivu const int dig10 = 10; // nyeupe const int dig11 = 11; // nyeusi

usanidi batili () {

Serial. Kuanza (9600); wakati (Serial.available () <= 0) {Serial.println ("hello"); // tuma ucheleweshaji wa ujumbe wa kuanzia (300); // subiri 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); }

kitanzi batili () {

ikiwa (Serial haipatikani ()> 0) {// soma kaiti inayoingia: int inByte = Serial.read (); // soma sensorer:

// Mdhibiti wa ANALOG 1

int analog0 = AnalogSoma (A0); int analog1 = analogSoma (A1); int analog2 = analogSoma (A2); // Mdhibiti wa ANALOG 2 int analog3 = analogSoma (A3); int analog4 = analogSoma (A4); int analog5 = analogSoma (A5); // Mdhibiti wa DIGITAL 1 int digital2 = digitalRead (dig2); int digital3 = dijitiSoma (dig3); int digital4 = dijitiSoma (dig4);

int digital5 = dijitiSoma (dig5);

int digital6 = kusoma kwa dijiti (dig6); // Mdhibiti wa DIGITAL 2 int digital7 = digitalRead (dig7); int digital8 = dijitiSoma (dig8); int digital9 = dijitiSoma (dig9); int digital10 = dijitiSoma (dig10); int digital11 = dijitiSoma (dig11); // chapisha matokeo: Serial.print (analog0); // [0] Serial.print (","); Printa ya serial (analog1); // [1] Serial.print (","); Printa ya serial (analog2); // [2] Serial.print (","); // Anzisha Kidhibiti 2 data Serial.print (analog3); // [3] Serial.print (","); Printa ya serial (analog4); // [4] Serial.print (","); Printa ya serial (analog5); // [5] Serial.print (","); Rekodi ya serial (digital2); // [6] Serial.print (","); Printa ya serial (digital3); // [7] Serial.print (","); Rekodi ya serial (digital4); // [8] Serial.print (","); Rekodi ya serial (digital5); // [9] Serial.print (","); Rekodi ya serial (digital6); // [10] Serial.print (","); // Anza mtawala 2 data Serial.print (digital7); // [11] Serial.print (","); Rekodi ya serial (digital8); // [12] Serial.print (","); Rekodi ya serial (digital9); // [13] Serial.print (","); Serial.println (digital10); // [14] Serial.print (","); Serial.println (digital11); // [15]}}

Nambari hii hutuma data ya serial kutoka kwa watawala wetu wote kama idadi ya nambari 16. Nambari 6 za kwanza ni pembejeo zetu za analog (kuanzia 0-1023) na nambari 10 zilizobaki ni maadili yetu ya dijiti (0 au 1).

Mara tu nambari yetu imepakiwa, tunaweza kujaribu hii kwa kufungua mfuatiliaji wa serial na kuandika thamani kwenye mfuatiliaji wetu wa serial kama tulivyofanya kwenye mafunzo ya 2 kutoka ITP. Tunapaswa kupata safu ya maadili yetu yaliyotengwa na koma.

Hatua ya 7: Programu: HTML

Mara tu tunapounda Arduino yetu na kufanya kazi, tunaweza kuanza kupanga programu zetu za wavuti. Nambari ya HTML ni rahisi sana.

mwili {padding: 0; pambizo: 0;}

Nambari ya html inaunganisha faili zetu za javascript pamoja. Kanuni zetu nyingi zitatokea katika faili yetu ya mchoro.

Hatua ya 8: Programu: P5.js na Javascript

Mara tu tunapoanzisha HTML yetu, tunaweza kufanya kazi kwenye JavaScript yetu. Ikiwa haujafanya hivyo sasa unapaswa kupakua p5.js na p5.play na uongeze hizi kwenye folda yako ya maktaba kwenye saraka ya wavuti yako.

  • p5.js
  • p5.cheza

Katika hatua yetu ya awali, tulianzisha faili yetu ya HTML ili kupiga maktaba zetu p5.js na p5.play. Pia tuliiweka ili kutumia faili yetu ya sketch.js ambayo ndio tutafanya programu zetu nyingi. Chini ni nambari ya mifupa yetu. Unaweza pia kuipata hapa.

// Serial Variablesvar mfululizo; // variable kushikilia mfano wa serialport maktaba var portName = 'COM4'; // jaza jina lako la bandari hapa // Vigeu vya Mchezo wa Ulimwenguni ---------------

// Kazi ya Usanidi ----------------------

usanidi wa kazi () {createCanvas (640, 480); serial = mpya p5. SerialPort (); // tengeneza mfano mpya wa serial serial library.on ('orodha', orodha ya kuchapisha); // weka kazi ya kupiga tena simu kwa orodha ya tukio la serialport serial.on ('imeunganishwa', seva imeunganishwa); // kupigiwa tena kwa kuunganisha kwa serial serial.on ('open', portOpen); // kupigiwa tena kwa serial ya kufungua bandari.on ('data', serialEvent); // kupiga tena kwa wakati data mpya unapoingia serial.on ('makosa', serialError); // kupigwa tena kwa makosa serial.on ('karibu', bandariFunga); // kupigiwa simu kwa orodha ya kufunga bandari (); // orodhesha serial serial serial.open (portName); // kufungua bandari ya serial} // Chora Kazi ----------------------- kazi ya kuteka () {msingi (0); // nyuma nyeusi} // Tafsiri data ya serial hapa ---------- kazi serialEvent () {// soma kamba kutoka kwa bandari ya serial // mpaka upate kurudi kwa gari na newline: var inString = serial. somaStringUntil ('\ r / n'); // angalia ili uone kuwa kuna ssetring hapo: ikiwa (inString.length> 0) {if (inString! == 'hello') {// ukipata hello, ipuuze var sensors = split (inString, ', '); // kugawanya kamba kwenye koma ikiwa (sensorer.length> 16) {// ikiwa kuna vitu kumi na sita (6 analog, 10 digital) // Tumia data ya sensorer hapa:

}

} serial.write ('x'); // tuma baiti ukiuliza data zaidi ya serial}} // pata orodha ya bandari: kazi ya kuchapisha orodha (orodha ya bandari) {// portList ni safu ya majina ya bandari ya serial ya (var i = 0; i <portList.length; i ++) {// Onyesha orodha dashibodi: chapa (i + "" + portList ); }} seva ya kaziImeunganishwa () {printa ('imeunganishwa kwenye seva.'); } kazi portOpen () {print ('the serial port opened.')} function serialError (err) {print ('Something went wrong with the serial port.' + err); } bandari ya kazi Funga () {chapisha ('Bandari ya serial imefungwa.'); } kazi ya kufunga Nambari () {serial.close (portName); kurudi bure; } dirisha.onbeforeunload = Code ya kufunga;

Mara baada ya mifupa kuokolewa. Unaweza kutumia maadili haya vile vile kwa jinsi ilifanyika katika mafunzo ya ITP. Kamba ya maadili tuliyoyatuma kutoka kwa Arduino yetu katika hatua ya 6 yanatumwa kama safu ya nambari 16. Hapo chini ndipo tunachanganua safu hii.

// Fafanua data ya serial hapa ----------

kazi serialEvent () {// soma kamba kutoka kwa bandari ya serial // mpaka upate kurudi kwa gari na nambari mpya: var inString = serial.readStringUntil ('\ r / n'); // angalia ili uone kuwa kuna ssetring hapo: ikiwa (inString.length> 0) {if (inString! == 'hello') {// ukipata hello, ipuuze var sensors = split (inString, ', '); // kugawanya kamba kwenye koma ikiwa (sensorer.length> 16) {// ikiwa kuna vitu kumi na sita (6 analog, 10 digital) // Tumia data ya sensorer hapa:}} serial.write ('x'); // tuma baiti ukiuliza data zaidi ya mfululizo}}

Sasa tunaweza kuendesha programu yetu kuona ikiwa inafanya kazi!

Hatua ya 9: Kuendesha Programu yako

Kuendesha Programu yako
Kuendesha Programu yako

Sasa tunaweza kuendesha programu yetu kuona ikiwa inafanya kazi. Unaweza kuunda mchezo wako mwenyewe ukitumia faili ya skeleton.js katika faili yetu ya awali au utumie mchezo rahisi wa Bomba uliopatikana hapa.

Sawa na Maabara ya ITP, kuendesha programu yetu, tutafuata hatua zifuatazo.

  • Chomeka Arduino na mtawala unaopanga kutumia.
  • Fungua p5.serialcontrol
  • Badilisha bandari yako ya mchoro wa p5 iwe ile unayotumia (ikiwa unatumia mifupa, hii iko kwenye mstari wa 3)
  • Fungua faili ya HTML inayounganisha na mchoro wako wa p5

Ikiwa una media ya nje kama picha au fonti zilizopakuliwa, utahitaji kuiendesha kwenye seva. Unaweza kuendesha seva rahisi ya chatu ya karibu ikiwa ungependa.

Hatua ya 10: Kwenda Zaidi

Ili kwenda mbali na kukuza michezo zaidi kwa hii, unaweza kufuata mifano anuwai fomu p5. Mchezo unaopatikana hapa. Chini ni mfano wa mchezo ngumu zaidi ambao niliunda. Ni 1 vs 1 tank shooter mchezo. Unaweza kupata rasilimali zote kwa GitHub.

Ilipendekeza: