Sisukord:

FaceBot: 8 sammu
FaceBot: 8 sammu

Video: FaceBot: 8 sammu

Video: FaceBot: 8 sammu
Video: Сумма внутренних углов многоугольника. Выпуклые и невыпуклые многоугольники. 8 класс. 2024, November
Anonim
FaceBot
FaceBot

See juhend näitab teile, kuidas luua odava (39 dollarit) kokkupõrkeid vältiva roboti nägu kirjas. Selleks kasutame uut odavat ja eredat OLED-ekraani. Meie õpilastele meeldib oma robotitele nägusid lisada. Neile meeldib joonistada naeratavaid nägusid, mis muutuvad sõltuvalt sellest, mida robot teeb.

Alla 25 dollari eest on saadaval mitu väikest odavat robotit, mis võimaldavad teil õpetada arvutiteaduse põhitõdesid. Üks nende robotite probleemidest on see, et nad ei taga läbipaistvust selle kohta, mis toimub roboti sees selle ehitamise ajal. Aastal 2018 hakkas see kõik muutuma, kuna saadaval olid odavad ja kvaliteetsed OLED-kuvarid. Nendel kuvaritel on järgmised eelised:

  • Need on väga heledad ja suure kontrastsusega. Isegi valgusküllases ruumis on neid lihtne lugeda paljude nurkade alt.
  • Neil on hea resolutsioon. Need, mida ma kasutan, on 168x64 pikslit. See on peaaegu 4 korda varasem ekraan, mida oleme kasutanud.
  • Need on väikese energiatarbega ja töötavad järjepidevalt isegi siis, kui teie roboti jõud väheneb.
  • Need on suhteliselt madalad (umbes 16 dollarit) ja hinnad langevad.

Varem on neid olnud raske programmeerida ja nad kulutaksid liiga palju mälu, et neid saaks kasutada odavate Arduino Nanodega. Nanol on ainult 2K või dünaamiline muutmälu. See juhend näitab teile, kuidas nendest probleemidest lahti saada ja ehitada robot, mida lapsed armastavad programmeerida.

1. samm: 1. samm: ehitage oma baasrobot

Samm: ehitage oma baasrobot
Samm: ehitage oma baasrobot

FaceBoti ehitamiseks alustame tavaliselt baasrobotiga. Üks näide on siin kirjeldatud 25 -dollarine CoderDojo robot. See robot kasutab odavat ja populaarset Arduino Nano, lihtsat mootorikontrollerit, 2 alalisvoolumootorit ja 4 või 6 AA patareid. Enamik õpilasi hakkab kokkupõrkeid vältiva roboti ehitamiseks kasutama ping -andurit. Kuna see pakub 5 V toitesüsteemi, sobib see ideaalselt FaceBoti jaoks. Kulude madalal hoidmiseks lasen tavaliselt oma õpilastel osad e-Bayst võrgus tellida. Osade kohalejõudmiseks kulub sageli 2–3 nädalat ning need vajavad mootorite ja toitelüliti jaoks väikest jootmist. Ülejäänud ühendused tehakse 400-sidelise leivaplaadi abil. Õpilased liimivad juhtmed sageli kuumliimiga, et need välja ei libiseks.

Kokkupõrke vältimise standardkujunduses teeme ühe muudatuse. Liigutame pingianduri šassii ülaosast šassii alla. See jätab ruumi roboti peal olevale ekraanile.

Kui teil on kokkupõrke vältimise programmeerimine, loetakse teile nägu lisama!

2. samm: 2. samm: leidke ja tellige oma OLED -ekraan

Samm: leidke ja tellige oma OLED -ekraan
Samm: leidke ja tellige oma OLED -ekraan

Kui OLED -ekraanid ilmusid, olid odavad displeid mõeldud kellade või treeningmonitoride jaoks. Selle tulemusena olid need väikesed, tavaliselt umbes 1 tolli läbimõõduga. Hea uudis on see, et need olid odavad, umbes 3 dollarit. Ehitasime nende kuvaritega mõned robotid, kuid kuna kuvarite suurus oli piiratud, ei saanud me ekraanil midagi teha. Siis hakkasime 2018. aastal nägema, et suuremate 2,42 -tolliste OLED -ekraanide hind on langenud. Aasta jaanuaris on hinnad langenud umbes 16 dollarini. Lõpuks saime suurepärase ekraani, mida saaksime kasutada oma robotite nägude jaoks.

Siin on nende kuvarite spetsifikatsioonid:

  1. 2,42 tolli (diagonaal)
  2. 128 pikslit (x-mõõde)
  3. 64 pikslit kõrge (y-mõõde)
  4. Madal võimsus (tavaliselt 10 mA)
  5. Mustvalge (neid on kollast, rohelist, sinist ja valget)
  6. SPI vaikeliides, kuigi soovi korral saate selle muuta I2C -ks
  7. SSD1309 draiver (väga levinud kuvaridraiver)

SPI liides on seitsme juhtmega. Siin on liidese tüüpilised sildid:

  1. CS - kiibi valimine
  2. DC - andmed/käsk
  3. RES - lähtestamine
  4. SDA - andmed - see tuleks ühendada Arduino Nano tihvtiga 11
  5. SCL - Kell - see tuleks ühendada Arduino Nano tihvtiga 13
  6. VCC - +5 volti
  7. GND - maapind

Ekraani leivaplaadiga ühendamiseks peab teil olema ka mõni traat. Ekraanidel on tavaliselt 7-kontaktiline päis, mille joote ekraanile. Kasutasin 7 isast-meessoost 20mc Duponti pistikut ja jootsin need nii, et juhtmed tulid välja ekraani tagaosast.

Samm: ühendage OLED Arduino Nanoga

Samm: ühendage OLED Arduino Nanoga
Samm: ühendage OLED Arduino Nanoga
Samm: ühendage OLED Arduino Nanoga
Samm: ühendage OLED Arduino Nanoga

Nüüd olete valmis OLED -i testima. Ma kasutan teist Arduino Nano lihtsalt selleks, et testida, kas iga kuvar töötab. Kui testid toimivad, ühendan selle robotiga. Testri ühendusskeem on näidatud ülaltoodud joonisel. Pange tähele, et saate OLED -ühendused teisaldada teistele digitaalseid väljundeid toetavatele tihvtidele, kuid kui veendute, et SCL (kell) on Arduino Nano pin 13 ja SDA (andmed) Arduino Nano pin 11 all, saate kasutada vaikesätteid tarkvara. See muudab teie koodi natuke lihtsamaks.

4. samm: 4. samm: testige oma ekraani

Samm: testige oma ekraani
Samm: testige oma ekraani

Teie ekraani testimiseks kasutame raamatukogu u8g2. Saate kasutada ka teisi teeke, kuid minu kogemuste kohaselt pole ükski neist u8g2 raamatukogus nii hea. Üks kriitiline tegur on see, kui palju Arduino RAM -i ekraan kasutab. U8g2 on ainus minu leitud teek, mis kasutab "Page Mode", mis töötab koos Arduino Nanoga.

Saate selle teegi oma Arduino IED -le lisada, otsides menüüst „Halda raamatukogusid” märksõna „u8g2”. Koodi saate alla laadida ka otse gethubist.

github.com/olikraus/u8g2

Testkood, mida ma kasutan, on siin:

github.com/dmccreary/coderdojo-robots/blob…

Märkida tuleb paar asja. SCL- ja SDA -tihvtide numbreid kommenteeritakse, kuna need on Nano vaikimisi tihvtid. U8g2 konstruktor on võtmerida:

// Me kasutame SSD1306, 128x64, üheleheküljelist, nimetut, 4 juhtmega, riistvara, SPI ilma pöörlemiseta, mis kasutab ainult 27% dünaamilisest mälust

Me kasutame ühe lehe režiimi, kuna see režiim kasutab minimaalselt RAM-i. Kasutame 4-juhtmelist riistvaraliidest ja OLED-il on vaikimisi SPI.

Samm: lisage oma OLED robotile

Samm: lisage oma OLED robotile
Samm: lisage oma OLED robotile

Nüüd, kui meil on töötav OLED ja me teame, kuidas lähtestada u8g2 raamatukogud, oleme valmis integreerima OLED -i oma baasrobotiga. Arvestada tuleb mõne asjaga. Oma OLED -testis kasutasime juhtmestiku lihtsustamiseks tihvte, mis olid kõik üksteise kõrval. Kahjuks vajame oma roboti juhtimiseks tihvti 9, kuna see on üks PWM -tihvtidest, mille peame mootorsõidukijuhile saatma analoogsignaali. Lahenduseks on nööpnõela 9 juhtme teisaldamine teisele vabale tihvtile ja seejärel muuta #define avaldus uueks tihvtiks. OLED-i paigaldamiseks roboti esiküljele lõikasin kaks kolmnurkset tükki pleksiklaasist välja ja liimisin neid šassiile. Mulle meeldib alati plekk-klaasi pinna krohvimiseks kasutada mõnda liivapaberit, enne kui osad kuumliimin, nii et need ei läheks liiga kergesti lahti.

Järgmisena võtame mõned andmed meie OLED -i kohta ja joonistame robotile mõned näod!

6. samm: 6. samm: kuvage roboti parameetrid

6. samm: näidake roboti parameetreid
6. samm: näidake roboti parameetreid

Üks toredaid asju kuvari omamise juures on see, et see aitab tõepoolest siluda seda, mis toimub meie roboti sees ringi sõites. Pole harv juhus, kui arendajatel töötab arvuti töökorras töölaud, kui see ei tööta, kui robot ringi sõidab. Sellise väärtuse kuvamine nagu ping -anduri mõõdetud vahemaa on hea näide roboti parameetri kuvamisest.

Ülaltoodud fotol näitab esimene rida (kaja aeg) viivitust aja vahel, mil heli lahkub ultraheli kõlarist, ja ajani, mil see mikrofoni vastu võetakse. Seejärel teisendatakse see arv teisel real sentimeetriteks (kaugus cm -des). Loendurit uuendatakse otsi teiseks, et näidata, et ekraan uuendatakse. "Pööramine …" kuvatakse ainult siis, kui kaugus on alla kindla numbri, mida nimetatakse pöördekünniseks. Mõlemad rattad liiguvad edasi, kui pingimise kaugus on sellest numbrist kõrgem. Kui number on alla pöördekünni, pöörame mootorid tagurpidi (tagavara) ja muudame seejärel suunda.

Siin on mõned näidiskoodid, mis näitavad, kuidas ping -andurilt väärtusi võtta ja väärtusi OLED -ekraanil kuvada.

Siin on näide, mis testib kolme ping -andurit (vasak, keskmine ja parem) ja kuvab väärtused ekraanil:

github.com/dmccreary/coderdojo-robots/blob…

7. samm: 7. samm: joonistage mõned näod

Samm: joonistage mõned näod!
Samm: joonistage mõned näod!

Nüüd on meil kõik tükid nägude joonistamiseks paigas. Meie õpilased arvavad tavaliselt, et robot peaks olema õnneliku näoga, kui see edasi sõidab. Kui ta näeb midagi enda ees, registreerib see üllatustunde. Seejärel teeb ta varukoopia ja vaatab ringi, võib -olla silmade liigutamisega, et anda märku, mis suunas see pöörab.

Näo joonistamise käsklus on üsna lihtne. Näo kontuuri jaoks saame joonistada ringi ja täita iga silma jaoks ringid. Suu võib naeratuse jaoks olla poolring ja üllatustunde jaoks täidetud ümmargune ring. See on koht, kus lapsed saavad väljendite isikupärastamiseks kasutada oma loovust. Mõnikord joonistan meelega halbu nägusid ja palun õpilastelt abi nende paremaks muutmisel.

Ekraani suuruse saamiseks saate kasutada funktsioone display.height () ja display.width (). Allpool olevas koodis seadistame muutujad

poollaius = kuva.laius ()/2; poolkõrgus = kuva.kõrgus ()/2;

Kui teete neid arvutusi mitu korda, on kood natuke kiirem, kui need arvutatakse üks kord ja salvestatakse muutujale. Siin on mõned näited selle kohta, kuidas ülaltoodud igav sirge nägu on joonistatud:

// teeme seda iga tsükli alguses

display.clearDisplay (); // joonistage taustadisplay.fillCircle (poollaius, poolkõrgus, 31, VALGE) hele nägu; // parema silma tume ekraan.fillCircle (poollaius - 10, display.height ()/3, 4, BLACK); // vasak silm darkdisplay.fillCircle (poollaius + 10, display.height ()/3, 4, BLACK); // joonista sirge joon suu ekraanile.drawLine (poollaius - 10, display.height ()/3 * 2, poollaius + 10, display.height ()/3 * 2, BLACK); // see rida saadab meie uue näo OLED -ekraanile.display ();

8. samm: 8. samm: kohandage

8. samm: kohandage
8. samm: kohandage

Põhinäo joonistamine on alles algus. Õpilased saavad luua palju variatsioone. Paljud õpilased on lisanud väikese kõlari, mis mängib ringi liikudes toone või kõlab.

Samuti saate koostada väiksemaid testprogramme, mis aitavad õpilastel mootoreid õigesti ühendada. Näiteks ekraanil olev nool (kolmnurk) ütleb õpilasele, millises suunas peaks mootorite ühendamisel ratas pöörlema. Katseprogramm liigub läbi mootori iga suuna:

  1. Edasi
  2. Parem tagurpidi
  3. Vasakul Edasi
  4. Vasak tagurpidi

Iga režiimi puhul värskendatakse ekraani uue ekraaniga, mis näitab, milline ratas ja mis suunas peaks pöörlema.

Selle programmi näide on siin

github.com/dmccreary/coderdojo-robots/blob…

Lehel CoderDojo Robots GitHub FaceBot on palju täiendavaid näiteid ja programmeerimise üksikasju.

Samuti on olemas FaceBoti roboti versioon, mis võimaldab õpilastel vahetult ekraani abil muuta kõiki kokkupõrke vältimise parameetreid (edasiliikumiskiirus, pöördepikkus, pöördeaeg, pöördekiirus). Nende robotite "programmeerimiseks" pole arvutit vaja! Need versioonid sobivad ideaalselt MakerFairsile ja üritustele, kus te ei soovi arvuteid vedada.

Palun andke meile teada, milliseid uusi nägusid teie ja teie õpilased välja mõtlete!

Head kodeerimist!

Soovitan: