Kicsit féltem már attól, hogy el fogom felejteni a programozást, mire beszerzek minden alkatrészt mindahhoz, amit elképzeltem, hogy majd összerakok, úgyhogy ha már lyukra futottam a két jól hangzó, de annál körülményesebb kedvencemmel, csak nekiállok annak a malackatranszportnak, hogy kicsit feldobjam a csajok hétvégi randalírozását, amikor végre kint szaladgálhatnak a lakásban :)
Kiindulásképpen nézzük, mi minden található végre az asztalon:
Akkor kezdjük azzal, hogy szétszedem a nagy lelkesedésben összecsavarozott autóalapot, mert szép, szép, de motor nélkül legfeljebb csak tologatni jó. Közben elgondolkodtam, hogy mégis melyik ötletemet próbáljam megvalósítani: a vonalkövető, fényre mozgó, távirányítható vagy az akadályérzékelő verzióját, de úgy döntöttem, hogy először hozzáforrasztom a jumper wire-t a motorvezérlővel, azután attól függően, hogy mennyi idegszálam marad meg, rákeresek az ötleteim programozására, és amelyik a legkevésbé tűnik elrettentőnek, az nyer.
Megérkezett a vadiúj forrasztókészlet, ahhoz képest, hogy belekerült nagyjából hatezer forintba, baromira jó, sokkal egyszerűbb vele forrasztani, ráadásul pillanatok alatt éri el az üzemi hőmérsékletet :)
Én mondjuk simán hozzáforrasztottam volna a jumper wire pint a kis kampóhoz, de ML javaslatára - hogy nézzen már ki valahogy - inkább levágtam a végét és a lepucérított vezetékkel csináltam. Nyilván nem én lettem volna, ha két fiú-fiú jumper wire helyett nem fiú-lányt forrasztottam volna hozzá a motorhoz, úgyhogy azt a kettőt még ki kellett cserélnem utólag.
Ha azt leszámítjuk, hogy a kézremegésem miatt össze-vissza égettem az autót is (még picit szoknom kell a finom mozdulatokat...), a végeredmény a tanácsoknak (köszi, Vili! :)), a nagyítónak és az új forrasztónak köszönhetően szerintem gyönyörű lett, de én elfogult vagyok :D
És ami a lényeg, nem csak szépek lettek a forrasztások, de még jók is, amit videón meg is örökítettem :)
És ha már ilyen jól állunk, akkor megkeresem az ArduinoMega-t, mert a kisebb már nem biztos, hogy kényelmes lenne hozzá, összepasszintom a motorvezérlővel, aztán keresek valami jó programot ahhoz, hogy le tudjuk tesztelni a működését, mielőtt a nagyobb projektbe belevágok.
Szerencsére mindent feliratoznak az alkatrészeken, mint a moziban, úgyhogy csak ki kellett egyengetni a (szállítás során kicsit elgörbült) pineket a motorvezérlőn, és beszuszakolni az ArduinoMega megfelelő helyére.
Mint a borsó meg a héja :)
Még annyi dolgom volt ezzel a résszel, hogy az autó motorjait hozzákössem a vezérlőhöz és az elemhez, utána pedig USB-vel a laptophoz:
És akkor nézzük, mi van ehhez, amivel mozgásra tudom bírni az autót.
Az Adafruit oldala megint a legmegbízhatóbb barátom lett, ami a programozást illeti, itt meg is található a program, amivel tesztelni tudtam a kisautót. Először ugyan a frissebb verzióval próbálkoztunk (a linket az oldal tartalmazza), de ezzel a régebbivel hajlandó csak működni.
Először is át kellett állítani az Arduino-t a Mega verzióra (nem a Mega ADK, hanem a sima Mega), a portot most nem kellett piszkálni:
Utána le kell tölteni a library-t és követni a hozzá tartozó utasításokat:
Ha a *.cpp és a *.h fájlok a megfelelő folderben vannak, jön a programozás.
Először meg kell idézni a library-ból a *.h fájlt, utána következik a motorok (kerekek) létrehozása. Úgy neveztem el őket, hogy épp melyik oldal első vagy hátsó kereke van a motorhoz kötve (pl. *_rf a right front, azaz jobb első kerék).
A setup a serial monitort tartalmazza először, hogy meg lehessen nézni a program futását működés közben, és utána következik a sebesség meghatározása (maximum sebesség 255; a 200 is már egész gyors). Sajna csak a 9V elemmel és az USB-vel egyszerre tud menni így, úgyhogy vagy a sebességet kellene csökkenteni ahhoz, hogy elvigye csak az elem, vagy pedig egy nagyobb teherbírású akksi kell hozzá...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include "AFMotor.h" AF_DCMotor motor_rf(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm AF_DCMotor motor_lf(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm AF_DCMotor motor_lr(3, MOTOR12_64KHZ); // create motor #3, 64KHz pwm AF_DCMotor motor_rr(4, MOTOR12_64KHZ); // create motor #4, 64KHz pwm void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Motor test!"); motor_rf.setSpeed(200); // set the speed to 200/255 motor_rr.setSpeed(200); // set the speed to 200/255 motor_lr.setSpeed(200); // set the speed to 200/255 motor_lf.setSpeed(200); // set the speed to 200/255 |
Utána a "for" ciklusba tettem a kerekek mozgatását, mert a teszteléshez azt szerettem volna elérni, hogy ötször fusson le a program (i=5), aztán álljon meg.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
for (int i=0; i<5; i++){ Serial.print("tick"); motor_rf.run(FORWARD); // turn it on going forward motor_rr.run(FORWARD); // turn it on going forward motor_lf.run(FORWARD); // turn it on going forward motor_lr.run(FORWARD); // turn it on going forward delay(1000); Serial.print("tack"); motor_rf.run(BACKWARD); // the other way motor_rr.run(BACKWARD); // the other way motor_lf.run(BACKWARD); // the other way motor_lr.run(BACKWARD); // the other way delay(1000); Serial.print("tock"); motor_rf.run(RELEASE); // stopped motor_rr.run(RELEASE); // stopped motor_lf.run(RELEASE); // stopped motor_lr.run(RELEASE); // stopped delay(1000); } } |
És maga a program ennyi is volt, a sok várakozást követően a mű első része megszületett és működik, amit az alábbi, megszokott remek minőségű videóval prezentálok :)
A teljes program itt megtekinthető.
E.