16.11.12

Arduino esmased päris sammud

Proovin siin nüüd lahti kirjutada ja seletada, mida ja kuidas tehtud sai.
Tagasiside oleks eriti teretulnud...


Kogu robotiehituse aluseks on kaks poolt - mehhaanika ja elektroonika. Valitud sai alustamiseks roboti juhtimiseks Arduino platvorm - õppimiseks/lastele kõige sobivam.
Oma kõige lihtsamas seletuses on tegemist väga väikese ja lihtsa arvutiga, millel ei ole ekraani, klaviatuuri jmt. Olemas on ainult protsessor (aju) ise ja kogus väga lihtsaid lüliti moodi sisendeid-väljundeid.

Robotiringis kasutame sellist kontrollerit nagu Olimexino-32U4. Tegemist on siis spetsiaalselt robotiehituse jaoks kohandatud Arduino Leonardo klooniga.

Välja näeb tema selline:



Ühenduste seletused:
Toide
Reset - kui siit ühendada lühiajaliselt kokku GROUND'iga (ehk massiga, mättaga, miinusega), teeb kontroller endale reseti (algkäivituse).
3v3 - siit saab vajadusel plaadil oleva väikese regulaatori kaudu võtta tarbimiseks +3.3 volti. Praktiliselt ei kasutata.
Ground - mass, miinus, mätas. Kõik ground ühendused on omavahel võrdsed ja kokku ühendatud.
VIN - välise toite pluss poole ühendus - 7-12v.

Analoogsisendid
A0 kuni A5. Need ühendused mõõdavad sissetuleva voolu + volte vahemikus 0 kuni 5v. Kui rohkem volte sisse lasta, võib kontroller rikki minna. Vahemik 0-5v on jagatud 1024 väärtuseks (10biti) - ehk siis 0v puhul on programmis numbriliseks väärtuseks 0. 5v puhul aga 1024.

Digitaal sisendid - väljundid.
Digitaal tähendab seda, et kas vool on 0V (ground) või +5V. Kui pesale programmis öelda, et tegemist on väljundiga, siis saab siit voolu võtta. Kui öelda, et tegemist on sisendiga, siis voolu mõõta. Kuid sisse ja välja käib siis ainult kaks võimaliku taset - kas 0V või 5V. Programmi koodis nimetatakse neid tavaliselt niimodi: 0v - LOW, 5v - HIGH.
Digitaalsisendeid ja väljundeid on kokku 14 (tegelikult küll on plaadil neid natukene veel peidus).

Väga paljudel digitaal sisenditel-väljunditel on kanda mitu funktsiooni.

PWM asub väljunditel 3,5,6,9,10,11,13 (ja tegelikult ka 12 vajadusel). PWM - pulse width modulation. Tegemist siis sellise väljundreziimiga, kus toimub hästi kiire lülitamine 0v ja 5v vahel. Programselt saab määrata, kui mitu % ajast on sees 5v ja kui mitu % ajast on 0v. Kuna värin on väga kiire, siis välja paistab see justkui tuleks väljundist näiteks 2.5V (kui 50% ajast on 0V ja 50% ajast on 5V). Kasutatakse led tulede heleduse reguleerimiseks, mootorite juhtimiseks jmt.
Analoogsisend digitaal ühendustel - 32u4 protsessor toetab ka analoogsisendeid D4, D6, D8, D9, D10 ja D12 pesades (A6 kuni A11).

Digitaalväljundite juures on olemas ka veel lisa GROUND ühendus ja kommunikatsiooniks kasutatavad SDA ja SCL pesad (füüsiliselt on tegu samade ühendustega mis D2 ja D3).

LED1 ja LED2
Plaadi servas on kaks ledi esmaseks testimiseks - led1 on roheline ja ühendatud porti D7. Led2 on kollane ja ühendatud porti D9.

Arduino seadistamine
Esimese asjana tuleks kodus tööle saada kõik hädavajalik. Arduino Leonardo vajab windows'i keskonnas esmalt draiveri installeerimist - ennem temaga suhelda ei saa.
Kõigepealt laadige alla Arduino 1.0.2 tarkvara (kellel see veel tegemata). Asub siin: http://arduino.googlecode.com/files/arduino-1.0.2-windows.zip
Saadud arhiivis on kataloog arduino-1.0.2 - tõstke see c: ketta ruutkataloogi (mitte program files või my documents või veel kuhugi muusse kohta). Kui arduino tarkvara on olemas ja töötab, siis ühendage usb juhtmega kontroller oma arvuti külge. Kui nüüd hüppab lahti teade, et vaja on draiverit. siis tuleb Windowsile ette näidata kust draiver võtta - kohaks on siis arduino kataloogi sees olev drivers kataloog.
Kui kõik läks õnnelikult peab Arduino tööristaad menüüs Jadaport osas tekkima juurde uus com port - märkige see aktiivseks.
Seejärel valige Tööristad->Plaat ja siit Arduino Leonardo.
Nüüd võiks minna Fail->Näited->01.Basics ja siit valida Blink.
Muutke selline rida:
int led = 13;
ümber reaks
int led = 7;
ja prooviga kood kompileerida ja protsessorile laadida (töörista ribal nupp ->). Esimesel katsel võib see takerduda ja windows hakkab midagi draiveritega uuesti tegema. Teisel katsel peak juba kõik toimima. Kui kõik läks hästi, siis hakkab "Väline toide" pesa juures väike led vilkuma.
Kogu arduino keskkonna paigaldamise põhjaliku juttu loe siit:  http://arduino.cc/en/Guide/Windows

Arduino programmeerimine - algus
Kõige lihtsam, mitte midagi tegev Arduino programm näeb välja selline

void setup(){
}
void loop(){
}


Mis siis on mis?
Luuakse kaks kohustusliku funktsiooni, nimedega setup ja loop. Mis on funktsioon - jupp programmi, mida saab mingi nime alusel korduvalt välja kutsuda.

Funktsioonil on olemas väljund ja sisendid:

väljundtüüp funktsiooninimi (sisendid_kui_on){
  mingid_tegevused_kui_on;
}

void (inglise keeles tühjus) on selline tagastustüüp, et mitte midagi ei tagastata.
funktsiooni nime taga tühjad sulud - ka mingeid sisendeid ei oodata.
{} - siia vahele kirjutatakse funktsioonis toimuvad tegevused (kui on). Iga tegevusrida lõppeb tavaliselt semikooloniga.


Mida need kaks kohustusliku funktsiooni siis teevad:
setup - kutsutakse välja mikrokontrolleri käivitumisel ühe korra. Siia käivad siis kõik baas seadistused - kuidas peaks kontroller käituma.
loop - see funkstioooni kutsutakse välja pidevalt ja lõpmatuseni (nn. igavene ring). Kohe kui jõutakse lõpuni, alustatakse jälle otsast.

Esimene programm


void setup(){
  pinMode(7,OUTPUT);
}


pinMode - määrab selle, millist tööd digitaalpesa (pin) teeb - kas väljund (OUTPUT) või sisend (INPUT). Esimene parameeter (7) näitab seda, millisest ühendusest käib jutt - siin siis füüsiline ühenduspesa D7. Ehk siis programmi setup osas öeldakse, et D7 peab olema väljund.


void loop() {
  digitalWrite(7, HIGH);
  delay(1000);               
  digitalWrite(7, LOW);    
  delay(1000);
}


digitalWrite - muudame digitaalväljundi kas HIGH või LOW'ks. Vastavalt siis kas digitaalpesasse on ühendatud +5V või GROUND(0V).
delay - peata programmi töö nii mitmeks millisekundiks. (1000 millisekundit on 1 sekund).
loop osas siis lülitatakse 7 port sisse, oodatakse sekund, lülitatakse välja, oodatakse sekund - ja tagasi algusesse. Selline programm vilgutab plaadi peal kaasasolevat port 7'sse ühendatud ledi - 1 sekund põleb, 1 sekund on väljas.





Kommentaare ei ole:

Postita kommentaar