PICAXE tutuksi

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! :laughing:
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.

Joo, itellä ois kolme levyä tuolla hyllyssä,(kait 08, 18 & 20 , en oo ihan varma, Korjataan 27.3. Levyt oli 08, 20 & 28). Ei oo tulu vielä alotettuu, ku ei oo ollu tietoo mite ohjelmoiaa. Tulivat lähinnä ostettuu mikrokontrollerikiinnostuksen tähden, ku kouluelektroniikasta ei vielä saanut arduinoita (jota ei vielä oo). Muuten monikobittiselle windowsille tuo ohjelmointiympäristö on? Itellä ku ei oo sarjaporttii ku 16 bit. ja se usb_johto on ihan hirveen hintane. :imp:

Itsellä kanssa 64-bit windows 7 käytössä. Kyllä melkein kaikissa vieläkin myytävissä pönttökoneissa on com-liitäntä suoraan takapaneelissa. Jossei takapaneeliin ole liitin eksynyt voi emon manuaalista etsiä emolla olevia sarjaportin liitäntäpinnejä.
Jos ei niitäkään löydy voi toki turvautua johonkin geneeriseen usb->rs232 muuntimeen, esim. dealextremestä tälläinen dealextreme.com/p/usb-to-rs2 … reen-24512
Sen usb-ohjelmointijohdon toiminta on aivan sama kuin sarjaporttikaapelinkin mutta sisältää itsessään sen usb-rs232 muuntimen, jotta käyttö olisi mahdollisimman helppoa.
Kysy ihmeessä lisää, itsekin melkeistään ekaa kertaa oston jälkeen tuota laitetta käytin! :laughing: pistinkin heti tilaukseen PICAXE-20M2 piirin, jotta pääsisi jatkamaan projekteja :wink:

Juuh, itell√§ vaa sattuu olee l√§pp√§ri :wink: , joho ei oo mahollisuutta l√§htee viritteleen, eik√§ oo oikein mahollisuuksia tilata ulkomailta (clas ohlsonilla taas tommone palikka maksaa liki 20‚ā¨, saman hintane ku uspi johto.

Tässä on taas yksi mikrokontrolleri kokeiltavaksi, tosin arduinolla vasta päässyt hyvään alkuun niin taitaa jäädä nämä PICAXE kokeilut myöhemmäksi. Etenkin kun pitää tilata kouluelektroniikalta jolloin pitää tilata vähän enemmän tavaraa kerralla postikulujen vuoksi. Onneksi picaxelle näyttää löytyvän kehitysympäristö linuxille valmiina ladattavana pakettina mikä ei ole yhtä helppo esimerkiksi Launchpadilla. Arduinollakin pitää asentaa paketit manuaalisesti kun ubuntun sovellusvalikoimasta ei löydy uusinta arduino kehitysympäristöä.

Mikäli ei voi/halua tilata USB sarjaporttiadapteria ulkomailta niin melko halvalla sitä näytti löytyvän verkkokauppa.comista. Siellä on hinta kymmenen euroa halvempi kuin clas ohlsonilla eli noin viisitoista euroa halvin saatavilla oleva adapteri verkkokauppa.comissa.

http://www.verkkokauppa.com/fi/product/46734/ctdss/Fuj-tech-USB-A-uros-D-SUB-9-pin-uros

Hienoa että saatiin tästäkin oma artikkeli! Kiitos. Itse picaxe sensijaan ei oikein säväyttänyt. Hintaa on lähes saman verran kuin arduinolla, mutta silti ei taida löytyä sitä arduinon valttia: yhteisön tukea.

En min√§ sill√§, en min√§ en√§√§n arduinosrakaan tykk√§√§, kun launchpadilla saa kaiken niin paljon halvemmalla, ja se koodi on l√§hemp√§n√§ rautaa, eik√§ ole.mit√§n ep√§m√§√§r√§isi√§ ‚Äúdelay‚ÄĚ funktioita. Ellei sitten niit√§ erikseen halua.

Elektrolinna on muuten asiallinen paikka tilata!
Kouluelektroniikan, Farnellin ym. valikoimat käytettävissä. Pk. muistaakseni postiennakolla 7 euroa.

Picaxen ideahan on toimia mahdollisimman helposti ja pienellä vaivalla. Siihen viittaa mm. vain kahden vastuksen tarve protoalustalla itse piirin lisäksi.
Picaxe loistaakin juuri siinä tehtävässä, on helppo erillisellä ohjelmointialustalla vaihtaa/päivittää softa ja heittää siitä vaikka suoraan leipälaudalle ja viritellä kytkentöjä.
Picaxellakin on oma harrastajakuntansa mutta aika vähä-ääniseltä se vaikutaa. Samat periaatteet kuitenkin koskee niin picaxea, arduinoa kuin muitakin alustoja. Ohjelmointitapa lähinnä vaihtelee.

Eikös siihen tarvinnu myös yhen konkan (polko, kait) , mutta joo, on yksinketane. Pitäs saaha joku ratkasu ohjelmointiongelmaan että pääsis viritteleen.

Minimissään riittää nuo kaksi vastusta (22k ja 10k). Bypass kondensaattori (luokkaa 100nF) on hyvä olla poistamassa häiriöitä käyttöjännitteestä mutta ei pakollinen. Jos hifistellä haluaa niin lisää siihen bypassin rinnalle vielä isomman luokkaa, 100uF olevan elektrolyytin.

MUOKS
Ja mitä lukeneet mieltä, onko riittävän selkeä? Puuttuuko jotain oleellista? Pitäisikö lisätä perus kytkentöjä vai oletetaanko, että ne on hallussa? Pitäisikö olla enemmän tai erilaisia esimerkkejä?

Tänään tuli taas kateltua pixaxea pitkästä aikaa kunm pähkäilen miten saan tuon case jutun toimimaan 2 napilla toinen lisää b0+1 ja toinen vähentää bo-1
meniskö näin
main:
if pin4(input)=1 then go to lisää:
if pin 3 (input)=1 go to vähennä:
else goto main:

lisää:
let b0=b0+1
else let b0=0 end if.

vähennä:
let b0=b0-1
else b0=0 end if

select b0 vai ?
read b0 ?
Mutta mitäs siitä eteenpäin että saisi sen case vertailun toimimaan ?

ja sitten valitse case 1,2,3,4,5 nissä sitten tekee jotain mitä haluaa.
siihen sitten end select

kun arduinolla ei tajua tuota millään on esitelty sen verran sekavasti ardulla tuokin ja vain enkuksi nini puolet menee yli käsityksen, ja suomeksi en löydä neuvoa.

EI!

Koodisi toimii seuraavasti:

Koko ajan verrataan nappien tilaa. Jos nappi on ykkönen, vähennetään tai lisätään ja palataan alkuun.

Se ei toimi kuten oletat. Kaksi syytä. Ohjelma pyörii törkeällä vauhdilla ympäri. Jokainen painallus aiheuttaa hillittömän määrän kasvatuksia tai vähennyksiä.

JOS nappi = pohjassa JA edellinenVertailu EI pohjassa NIIN
bo = bo + 1
JOSLOPPU
adellinenVertailu = nappi
GOTO main

Nyt saadaan jokaisella yksittäisellä painalluksella lisäys tai poisto.

Se toinen syy miksi ohjelma toimisi hassusti on kytkinvärähtelyt. Yksi painallus aiheuttaa jalassa useamman tilan vaihtelun.
eli lisätään VIIVE(10ms) bo:n asetuksen jälkeen.

Ai niin ja olehan varma napin toimintasuunnasta? Yleensä nappi maattaa ja ylösveto kiskoo kontrollerin jalan ylös. En tutkinut kuinka picaxe tekee asioita.

Kuten vuokkokin jo kertoi, niin koodisi on hieman virheellinen.
Virheitä on mm. if-lauseen toteutuksessa.
If-lauseen rakennehan on

if <vertailut> then <teejotain> [elseif <vertaile> then <teejotain>] [else <teejotain>] end if
Nyt omassa esimerkissäsi olet yrittänyt venyttää iffin lisää: blokkiin asti.

oikea rakenne ohjelmassasi olisi siis:

[code]let b0 = 0 'kannattaa aina alustaa muistipaikka joko alussa tai ennen sen käyttöä

main:
if pin4 = 1 then goto lisaa:
if pin3 = 1 then goto vahenna:
goto paivitaledit:
goto main: 'tässä päälooppi jota kierretään kokoajan

lisaa:
pause 10 'eliminoidaan näppäimen värähtelyä 10ms, vuokon terävä huomio!
if pin3 = 1 then goto lisaa: 'tämä pitää looppia yllä kunnes nappulasta päästetään irti
let b0 = b0 +1
pause 10 'eliminoidaan näppäimen värähtely 10ms odotuksella
goto main: 'palataan taas main-looppiin

vahenna:
if pin4 = 1 then goto vahenna:
let b0 = b0 -1
pause 10
goto main:

paivitaledit: 'täällä päivitetään montako lediä palaa
select case b0 'tämä valitsee muuistipaikan jota käytetään case- vertailussa

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
    else
            let b0 = 0    ' nollaa laskurin jos ylitetään seiska tai alitetaan 0
endselect           'lopetetaan muistipaikan sisällön vertailu 

goto main 'palaa päälooppiin
[/code]

Tuo select case ei välttämättä ole tehokkain tapa toteuttaa, mutta käytin sitä alunperinkin esimerkkinä juuri sen esittelemiseksi :slight_smile:
Kaikki peruskomennot esitellään http://www.picaxe.com/BASIC-Commands/Program-Flow-Control/ linkin takana. picaxe.comista löydät myös kaikenkattavan manuaalin jossa kaikki komennot esitelty esimerkkien kera. Mikäli et osaa riittävästi englantia, niin voit vaikka täällä kysyä lisää vinkkejä.

Kiitos Hieno
NYT toimii kun ‚Äúv√§h√§n‚ÄĚ muuttelin jotain jossakin :slight_smile:

init:
let b0 = 0 max 5’kannattaa aina alustaa muistipaikka joko alussa tai ennen sen käyttöä
pins =0

main:
if b0 = %11111111 then goto nollaa: (muuten miinustaa 255 ja hyppää väärin)(jos b0=255 on väärin ja nollattava uudestaan)
if pin0 = 1 then goto lisaa:
if pin1 = 1 then goto vahenna:
if b0 = %00000101 then gosub nelja (jos b0=5 on liikaa ja pidetään 4)
goto paivitaledit:
goto main: 'tässä päälooppi jota kierretään kokoajan

lisaa:
pause 10 'eliminoidaan näppäimen värähtelyä 10ms, vuokon terävä huomio!
if pin0 = 1 then goto lisaa: 'tämä pitää looppia yllä kunnes nappulasta päästetään irti
let b0 = b0 +1
pause 10 'eliminoidaan näppäimen värähtely 10ms odotuksella
if b0 =>5 then goto main: (onko tarpeen?)
goto main: 'palataan taas main-looppiin

vahenna:
if pin1 = 1 then goto vahenna:
let b0 = b0 -1
pause 10
if b0 =>5 then goto main: (onko edes tarpeen ?)
goto main:

nollaa:
let b0 = 0
goto paivitaledit: `hyppää nelosen tuonnin yli

nelja:
let b0 = 4
return

paivitaledit: 'täällä päivitetään montako lediä palaa
select case b0 'tämä valitsee muuistipaikan jota käytetään case- vertailussa

case 0 'muistipaikan sisältö 0
high 0
low 1 'pin1 tilassa low
low 2 'pin2 tilassa low
low 3 'pin4 tilassa low
low 4
case 1
high 1
low 2
low 3
low 0
low 4
case 2
high 2
low 1
low 0
low 3
low 4
case 3
high 3
low 0
low 1
low 2
low 4
case 4
high 4
low 0
low 1
low 2
low 3

    else
    if b0 = 4 then goto paivitaledit:
    if b0 =0 then paivitaledit:

   ' nollaa laskurin jos ylitetään 4 tai alitetaan 0let b0=0
  endselect           'lopetetaan muistipaikan sisällön vertailu

goto main 'palaa päälooppiin

Hienoa jos toimii :slight_smile:
Vähennä funktiossa kannattaa myös käyttää värähtelyn estoa lisää: funktion tavoin.

vahenna: if pin1 = 1 then goto vahenna: let b0 = b0 -1 pause 10 if b0 =>5 then goto main: (onko edes tarpeen ?) goto main:
if b0 =>5 then goto main: (onko edes tarpeen ?) <-- ei ole tarpeen, pitäisi olla if b0 <= 0 then goto main:
Tuon pääluupissa nollailun tarpeen voi hävittää myös tekemällä vertailun lisää- ja vähennä funktioissa esim. seuraavasti:

lisaa: pause 10 'eliminoidaan näppäimen värähtelyä 10ms, vuokon terävä huomio! if pin3 = 1 then goto lisaa: 'tämä pitää looppia yllä kunnes nappulasta päästetään irti if b0 >= 4 then goto main: 'jos muistipaikka on suurempi tai yhtäsuuri kuin viisi, ei kasvateta sen arvoa vaan palataan main-looppiin let b0 = b0 +1 pause 10 'eliminoidaan näppäimen värähtely 10ms odotuksella goto main: 'palataan taas main-looppiin
Samankaltainen rivi vahenna: funktioon:

if b0 <= 0 then goto main:

Lisäksi joku ajatuserhe paivitaledit funktiossa?

else if b0 = 4 then goto paivitaledit: if b0 =0 then paivitaledit:
Nyt jos b0 = 4 tai b0 = 0 jää ohjelma kiertämään paivitaledit funktioon ikuista looppia. Tämä ei varmaan ole tarkoitus. Tuossa on varmaan tarkoitus verrata, että ylittääkö arvo 4 tai alittaako 0?
Jos näin, niin oikeampi koodi olisi:

if b0 >=5 then let b0 = 4 if b0 < 0 then let b0 = 0
Tuo on jo tuplavarmistelua lisaa: ja vahenna: funktioiden tarkastusten lisäksi.

N√§in tehtyn√§ voit poistaa main- loopista nuo vertailut ja saat koodistasi hieman selke√§mp√§√§ ja ymm√§rrett√§v√§mp√§√§. Main-loopissa ei yleens√§ kannata ‚Äútehd√§ mit√§√§n‚ÄĚ, siell√§ kannattaa vain tarkastella painettuja nappeja sek√§ kutsua p√§ivitysfunktioita. N√§in ohjelmasi rakenne on selke√§ ja johdonmukainen. Silloin jos tulee joku virhe toiminnallisuudessa on virheet helpompi hakea kyseisest√§ funktiosta.

Kiitos kommenteista, simulatiossa toimii loistavasti, taasen piirille en saa menemään millään ?
tein levyn ja tarkastanut sen sata+N kertaa kaikki oikein mutta ei vain saa koneelta yhteyttä piirille, resetillä 16f88 toimii mutta 16f819 ei sitten millään. ei tuo resettikään enää auta, tuurilla toimii ttai ei,ottaa vastaan koodin vaan tosin ei mitään tee ja tapahdu kun ohjelman pitäisi pyöriä.
Siksi ajattelin että mitenkähän saisi tuon käännettyä arduinolle, olis uno ja mega laudat kyllä hyllyssä.
Juuri katselemassa ardu home siteltä mitenkähän nuo variablesit kääntyy arduun ja miten nollaan var/pinnit,ja teen nuo if vertailut ja casen.(tosin en tajua arduinon tyyliä tuossa,siksihän teinkin/kokeilinkin ensin basicille)

Onkohan jotain kääntäjää jolla tuon saisi helpoiten tehtyä ?

ei löydy variableseja ardussa ? tai sit en ymärrä ardun nimeämistä ?(read input 0 and 1 to b0)
increase if bo=1+1,decrease if b0=1-1
ja tuota alun nollausta kaikille että lähtee tyhjältä pöydältä.(b0=0/pins=0)
if b0=>4 then 4
if b0=<0 then 0

Oletko varmistanut, että käytät oikeaa com-porttia? Myös USB-versio ohjelmointikaapelista näkyy tietokoneelle COM-porttina.
Itse taistelin kanssa kerran vastaavan ongelman kanssa. Mikään ei tuntunut toimivan, loppujenlopuksi vika oli väärinpäin kytketyissä ohjelmointijohdoissa.
Käytätkö jotain picaxen virallista lautaa vai kasailetko leipälaudalle?

vika voi olla myös kun minulla on vanha serial portin kaapeli,ei siis usb.(jos win 7 ei halua tuota com porttia ohjata ? näyttää device managerilla kyllä com1 ready.

nuo linjat mittarilla chekannut kyllä kymmenen+n kertaa oikein menee pinnit 5,3,2 to 2,3,gnd.
piirinä 18A tai M mitä tuosta paketista löytyi, tein reikälevylle sen piirin ja tarkistanut monety kerrat.
lisäsin vielä sen reset linjankin +v-4,7k-pin4.sw-gnd

Alkuperäinen kitti oliu 08M piirille, jälkeen päin olin ostellut noita 18M piirejä ja leipälaudalla.

eilen suutuspäissäni sitten ebaystä tilasin uudet 18M piirit(jos piireissä vikaa) ja koelaudan kitti 6 euroa satsi maksoi,saa nähä koska tulee.
arduinolle tuo olisi kätevä kääntää mutta en saa päähän miten :frowning:
vanha picaxe programmer ohjelma käytössä,logigatorille en tuota bas filettä saa siirrettyä millään ja siinä vain tuo vuokaavio systeemi niin ei saa tehtyä sillä mitään :frowning:
Saisi olla valikko missä basicin saa vuokaavioksi eikä vain vuokaavio kääntäjällä-joksikin.niin siirtyisi logicatorillekin?

Sain kasaan senverran että tarvitsen int led pin 1-5 ja int inpiun 1-2 ja int val=0
setup: pinmode input ja output

loop: val =digitalread nappi1

hmm tuota en käsittänyt digitalread nappi2 minne?
val kai pitäisi olla?

bounce jotain tarvitaan.

sitten if nappi1=1 write val, ??
if val=1+1 lisää?? hmm, eikun jos input niin lisää ja write val?
if val=1-1 vähennä ?? eikun jos input niin vähennä ja write val ?
switch case?
read case
case 1,2,3,45, niinpoispäin valikot.outputille.
paluu alkuun.?

eli juurikaan en tajunnut mitä pitäisi olla arduniossa :smiley:

Arduinosta en juuri osaa antaa vinkkiä, kun en sillä ole hirveästi touhuillut.
Arduinoalustan kanssa et kuitenkaan käytä loop: goto loop: komentoja. Arduino on syntaksiltaan hyvin c:n kaltainen ja siinä päälooppi on main { koodia; } lohko.
Arduino siis käy kokoajan main-lohkoa ympäri, eri toiminnallisuudet tehdään funktioilla yleensä main-lohkon ulkopuolella.
Sinnepäin koodina kutakuinkin:

main { if(nappi1 == true) { nappi1Funktio; } } nappi1Funktio() { out1 == high; }