Ajattelin tähän kirjoitella lyhyesti ja mahdollisimman selvästi oppaan picaxen kanssa harjoittelun aloittamiseksi.
Vaikka kirjoitankin artikkelin vanhentuneen mallin pohjalta on uudemmissa malleissa lähinnä enemmän ominaisuuksia mitä esimerkin kontrollerissa.
Mikäli löydät puutteita, virheitä tai muuta lisättävää niin otan palautetta mieluusti vastaan.
[size=150]Perustietoa[/size]
Picaxe piirit on pyritty tekemään mahdollisimman aloittelijaystävällisiksi ja niitä ohjelmoidaan picbasic kielellä. Picbasic on basicia muistuttava ohjelmointikieli pienillä eroilla.
Piirit ovat mallista riippuen PIC-piirejä joihin Picaxe on ladannut oman ohjelmistoversionsa sisään. Piirit pystyy myös uudelleen ohjelmoimaan toimimaan perus picceinä mutta piccejä ei ilman oikeaa ohjelmistoa muuttamaan takaisin picaxeksi.
Piirit ovat varsin monipuolisia mallista riippuen sisältäen esim. pwm, sarjaporttiliikenne, analogituloja/lähtöjä.
Lisätietoa eri malleista löytyy linkin takaa http://www.picaxe.com/What-is-PICAXE/PICAXE-Chip-Sizes/
[size=150]Laitteisto[/size]
Helpointa on ostaa picaxe starter kit joka sisältää kaiken tarpeellisen picaxella ohjelmoinnin aloittamista ajatellen. Näitä saa suomesta ainakin Step-systemsiltä, heidän tutustumispaketti sisältää PICAXE-08M piirin ja maksaa 16,32€.
Starterkit sisältää tarvittavan kaapelin, ohjelmointialustan sekä ohjelmiston.
Ohjelma siirretään picaxeen sarjaporttiyhteyden ylitse joko suoraan RS232 kaapelilla tai USB-johdon kanssa. Picaxen oma USB-johto sisältääkin vain perus usb-rs232 muuntimen joten siitä ei välttämättä kannata maksaa ylimääräistä jos omistaa jo RS232-ohjelmointikaapelin, geneerinen usb-rs232 muunnin riittää com-portin puuttuessa koneesta.
Picaxen ohjelmointi ei kuitenkaan vaadi tuota starterkitin mukana tulevaa alustaa, ohjelmoinnin voi suorittaa myös vaikka koekytkentälaudalla. http://www.instructables.com/id/Dark-Lights-LED/step3/Program-your-Picaxe/ Linkin takana löytyy kytkentäkaavio itsetehtävälle ohjelmointikaapelille.
Picaxet toimivat pääsääntöisesti 3V-5,5V jännitteillä. Uudemmat M2 ja X2 mallin piirit toimivat kuitenkin myös 1,9V jännitteelle asti. On olemassa myös muutama “low power” malli joiden käyttöjännitealue on 1,8-3,3V, tarkista siis picaxen manuaalista piirisi käyttöjännitealue mikäli siitä on epäilyksiä!
[size=150]Ohjelmisto[/size]
Picaxen ohjelmointiin tarvittavat ohjelmat löytyvät picaxen omilta sivuilta.
PICAXE Programming editor on varsin selkeä ja helppokäyttöinen ohjelmisto.
Ensimmäistä kertaa käyttäessä kannattaa asetuksista käydä heti määrittämässä oikea portti kontrollerin kanssa keskusteluun (itsellä com1).
Helpointa ohjelmointi on kuvassakin näkyvässä tekstieditorissa. Painamalla näppäimistöstä F1 pääsee “pikahelppiin” josta voi etsiä käskyä josta haluaa lisää tietoa. Pikahelpistä nappulaa painamalla avautuu myös tarkempi ohjekirja pdf-muodossa ja sieltä sisällysluettelosta etsii käskyn josta haluaa lisää tietoa.
Tarkemmissa ohjeissa on yleensä aika selkeä ja kattava esimerkki käskyn käytöstä sekä lista kontrollereista joilla käsky toimii.
[size=150]Esimerkkiohjelma[/size]
Esimerkkimme laite on PICAXE-08 eli 8-jalkainen DIP-8 koteloitu mikrokontrolleri.
Ensimmäiseksi valitsemme optionseista kontrolleriksi siis PICAXE-08 jotta syntaxin tarkastus tietää mitä käskyjä on saatavilla.
Kontrollerin pinnejä käsitellään pinX tai pinnin numerolla tapauksesta riippuen.
If käskyllä tulkittaessa onko input pinni pin3 päällä tarvitsee käyttää pin3-muotoa, jos taas halutaan ohjata pin1 high-tilaan käytetään pelkästään pinnin numeroa high-käskyn perässä.
Muistipaikkoja löytyy kontrollerista riippuen eri määriä. Esimerkin 08-piirissä on byteosoittimia (joihin voidaan tallentaa arvoja 0-255 välillä) 14 kpl välillä b0-b13. Jos tarvitsee tallentaa yli 255 suuruisia arvoja tarvitsee käyttää word-osoitinta, niitä löytyisi 7kpl w0-w6 välillä.
Tässä täytyy kuitenkin ottaa huomioon, että mikäli käytät bit-muuttujia niin varaat samalla b0 tai b1 muuttujien alueelta bitin käyttöösi. Mikäli käytät bit1 muuttujaa et voi käyttää b0 muuttujaa samanaikaisesti, koska b0 muuttuja on bit0-bit7 muistin alueella. Tällöin ongelmien välttämiseksi tarvitsee käyttää jotain muuta b-muuttujaa esim. b1. Sama koskee word-muuttujia, esim. w0 sijaitsee bit0-bit14 muuttujien alueella sekä samalla b0 että b1 muuttujien alueella.
Näinollen jos tarvitsee byte tai bit muuttujia samaan aikaan word-muuttujien kanssa kannattaa käyttää alkaen w1 muuttujaa.
picaxe_manual2.pdf tiedostosta löytyy tarkempaa tietoa mitä muuttujia käyttämässäsi piirissä on tarjolla sekä miten niitä voi käyttää.
Seuraavissa kahdessa esimerkissä ensimmäisessä ei tarvita yhtään muistipaikkaa ja jälkimmäisessä riittää yksi.
Seuraavalla ohjelmalla vilkutetaan lediä pinnissä 1 sekunnin välein:
main:
high 1 'nosta pinni 1 high tilaan, eli sytytä ledi
pause 1000 'Pysähdy näin moneksi millisekunniksi
low 1 'aseta pinni 1 low tilaan, eli sammuta ledi
pause 1000
goto main 'mene riville main:
Koodi ladataan kontrolleriin tässä tapauksessa sarjaporttikaapelilla joka on portissa Com1. PICAXE08 aloituspakkauksessa mukana tulleesta levystä asetetaan jumpperi asentoon PRG eli ohjelmointiin, kytketään virrat picaxeen sekä ohjelmasta valitaan “Program” nappi.
Ohjelman siirron ei pitäisi kestää muutamaa sekuntia pidempään.
Siirron jälkeen kontrolleri alkaa automaattisesti suorittaa sinne lataamaasi ohjelmaa ja ledi vilkkuukin tasaiseen tahtiin päälle/pois.
Ledille kannattaa pistää etuvastus kytkettäessä se suoraan kontrolleriin n. 270ohmia on sopiva.
Jos tarvitaan inputteja niin inputteihin kannattaa kytkeä rinnalle 10k vastus jotta sisääntulo pysyisi nollana silloin, kun sinne ei mitään syötetä. Ilman tätä vastusta sisääntulo heiluu miten sattuu ykkösen ja nollan välillä.
Tässä esimerkissä on laskuri joka laskee napin painalluksia sekä esittää painetun määrän binaarilukuna ledeillä:
[code]let b0 = 0 'alusta b0 muistipaikka nollaksi
main:
if pin3 = 1 then goto lisaa 'jos pinni3 päällä mene riville lisaa:
goto sytty 'tälle riville päädytään mikäli äskeinen ei ole tosi
lisaa:
if pin3 = 1 then goto lisaa 'varmistaa että jokainen napinpainallus lasketaan vain kerran
if b0 < 7 then let b0 = b0+1 'jos b0 arvo on pienempi kuin 7 otetaan b0 ja lisätään siihen 1
else let b0 = 0 endif 'jos b0 on suurempi kuin 7 asetetaan se nollaksi
goto sytty 'mennään ledien sytytykseen
sytty:
select case b0 'valitaan tilanne muistipaikan b0 eri arvoille
case 0 'muistipaikan sisältö 0
low 1 'pin1 tilassa low
low 2 'pin2 tilassa low
low 4 'pin4 tilassa low
case 1
high 1
low 2
low 4
case 2
low 1
high 2
low 4
case 3
high 1
high 2
low 4
case 4
low 1
low 2
high 4
case 5
high 1
low 2
high 4
case 6
low 1
high 2
high 4
case 7
high 1
high 2
high 4
endselect 'lopetetaan muistipaikan sisällön vertailu
goto main 'palaa alkuun [/code]
Kyseinen koodi mahtuu nipinnapin PICAXE-08 piirin muistiin, tilaa jää jäljelle 2 tavua 128 tavusta!
lisäksi PICAXE-08 piirissä pin3 on “input only” joten sen takia input ja output pinnit eivät ole loogisessa järjestyksessä. Kommentit eivät vie ohjelmatilaa kontrollerista joten niitä ei sen takia kannata tarkoituksella jättää pois!
Uudemmassa korvaavassa 08M2 mallissa muistia onkin 2048 tavua joten sillä pystyykin toteuttamaan huomattavasti monimutkaisempia ohjelmia. 08M2 piirissä on lisäksi 6 input/output pinniä sekä muutenkin huomattavasti enemmän ominaisuuksia.
[size=150]Loppusanat[/size]
Picaxe on aloittelijaystävällinen ja starterkitin hankinnan jälkeen piirin kanssa on helppo aloittaa harjoittelu.
Ohjeet ovat varsin monipuoliset ja selkeät joiden kanssa myös vasta-alkaja tulee toimeen (kunhan englanti taipuu).
Lisäksi piirin kanssa on halpaa aloittaa harjoittelu, mikäli on elektroniikka edes inahduksen verran hallussa riittää aloittamista ajatellen pelkästään muutaman euron maksavan piirin hankinta.