Beste mensen,
Ik ben pas begonnen met het leren programmeren van microcontrollers.
Nu ben ik voor mezelf bezig met het uitzoeken van het jal programma en verschillende simpele programmatjes maken.
Nu ben ik dus al enkele dagen bezig om uit te zoeken hoe ik via 1 schakelaar verschillende loops te starten, alleen kom ik hier helaas nog niet uit en zou ik jullie willen vragen wie mij er mee kan helpen.
dus wat ik bedoel.
1 x drukken is de eerste loop starten.
loop start zich.
nu druk ik vervolgens nog een x en de 2de loop start, enz.
Alvast erg bedankt voor de moeite!
Fredjuhh
"Ben nog een N00B, maar dat is al aan het veranderen ;)
Dan moet je er een tellertje in proggen
(ben niet bekend met jal, maar zal wel ongeveer hetzelfde zijn als basic
)
forever loop
if (button == high) then
forever loop
programma
if (button == high) then
exit loop
end if
end loop
forver loop
programma 2
if (button == high) then
...
end if
end loop
Snel in mekaar gebokst, ik weet niet zeker of het zal werken.
Ik ben zelf ook aan het proberen om met JAL te programmeren...
Laat me iets weten of het werkt, maar het concept is redelijk eenvoudig.
Je zou ook met interrupts kunnen werken, maar daar ben ik nog lang niet aan toe!
Na het gebruik van de knop wel controleren of de knop eerst weer uit is geweest en daarop eventueel wachten ivm kontaktdender. Anders schiet hij in bovenstaand voorbeeld direkt door in het programma naar via de exit naar deel 2.
voorbeeld;
while button==1 loop
end loop
delay_1ms(1)
Hey bedankt heren tot zover, ik ga er morgen gelijk mee stoeien. Ik laat wel even weten of het gelukt is.
tokesnugert, succes verder met het uitvogelen met JAL.
groeten
Contactdender kan je ook wegwerken door een klein tantaaltje toe te voegen aan de schakeling.
En anders gewoon in elke
if (button==high) then
delay_1ms(5)
Programma
...
Zo geef je de code 5ms de tijd om (hopelijk) voorbij de contactdender te geraken
En zoek ook even uit of je switch Active High of Active Low geschakeld is...
[Bericht gewijzigd door Phalox op (12%)]
Beste tokesnugert,
Ik heb het programmatje nu gemaakt zoals je voorschreef alleen wil het nog niet werken. Hieronder heb ik het programmatje gezet. zou jij er mischien uit kunnen komen. de compiler geeft aan dat hij exit loop en dan met name exit niet kent. het kan ook zijn dat ik ergens anders mischien iets fout heb zitten in het programma.
alvast bedankt!
-- define pins
pin_a3_direction = output
pin_d1_direction = input
var bit led is pin_a3
var bit button is pin_d3
forever loop
if (button == high) then
forever loop
led = on
delay_1s(2)
led = off
delay_1s(2)
led = on
delay_1s(2)
led = off
delay_1s(2)
led = on
delay_1s(2)
led = off
if (button == high) then
exit loop
end if
end loop
forever loop
led = on
delay_1s(4)
led = off
delay_1s(4)
if (button == high) then
exit loop
end if
end loop
Mijn excuses, dat was een typfout van mij... het is "end loop" in plaats van "exit loop".
Welke libraries gebruik jij trouwens ?
Heb je het boek pic microcontrollers aangeschaft ? Dan zal je waarschijnlijk ook de bijhorende libraries gebruiken.
Hey ja dat klopt heb inderdaat het het boek aangeschaft.
Zitten leuke projecten in die erg leuk zijn voor de beginneling. en de libaries zijn voor de 16f877.
dit volgende stukje software werkt wel mede dankzij jou en wat gepuzzel. Alleen op een of het andere manier krijg ik als ik de opstelling gemaakt heb alleen na 1 x drukken wel het eerste programma maar weiger hij het 2de programma te starten. heeft dat iets te maken omdat er nog iets niet helemaal logies staat of omdat de microcontrolller zijn standaart ding doet maar niet reageert op de butten terwijl programma 1 loopt want ook als ik heb even ingedrukt hou wil hij niet naar programma 2 gaan.
pin_c1_direction = output
pin_d2_direction = input
var bit led is pin_c1
var bit button is pin_d2
forever loop
if (button == high) then
delay_1ms(5)
forever loop
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
end loop
end if
end loop
if (button == high) then
delay_1ms(5)
forever loop
led = off
end loop
end if
Even jouw code een beetje stylen!
Probeer tijdens het programmeren dit zeker ook te doen (inspringen enzo, dat maakt het debuggen veel eenvoudiger!)
pin_c1_direction = output
pin_d2_direction = input
var bit led is pin_c1
var bit button is pin_d2
forever loop
if (button == high) then
delay_1ms(5)
forever loop
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
end loop
end if
end loop -----> Hier houdt je programma op, en gaat terug naar boven. Deze mag dus enkel helemaal op het einde komen
if (button == high) then
delay_1ms(5)
forever loop
led = off
end loop
end if
Ik weet niet zeker of "Exit loop" werkt, maar dan zou je iets krijgen als dit:
pin_c1_direction = output
pin_d2_direction = input
var bit led is pin_c1
var bit button is pin_d2
forever loop
if (button == high) then
delay_1ms(5)
forever loop
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
if (button == high) then
delay_1ms(5)
exit loop
end if
end loop
end if
forever loop
led = off
delay_1s(1)
led = on
if (button == high) then
delay_1ms(5)
exit loop
end if
end loop
Hierbij gaat hij dus eerst controlleren of er een knop wordt ingedrukt, en dan start hij het eerste programma. Maar als er geen knop ingedrukt is, dan gaat hij gewoon verder in de code, en komt hij het tweede programma tegen, zonder dat het eerste uitgevoerd werd. Daarom kan het best nog iets anders:
pin_c1_direction = output
pin_d2_direction = input
var bit led is pin_c1
var bit button is pin_d2
forever loop
while (button == low) loop -- houdt de code vast in deze loop
delay_1ms(5)
end loop
forever loop -- programma 1
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
delay_1s(1)
led = on
delay_1s(1)
led = off
if (button == high) then -- doet de pic uit deze loop stappen
delay_1ms(5)
exit loop
end if
end loop
forever loop -- programma 2
led = off
delay_1s(1)
led = on
if (button == high) then -- doet de pic uit deze loop stappen
delay_1ms(5)
exit loop
end if
end loop
end loop
Waarom gebruik je in het eerste programma verschillende keren led = on, led = off ?
Het tweede programma zal net hetzelfde doen, maar met minder code.
Ik hoop dat het werkt, ik ga het nu eens proberen compilen 
Edit: nog een paar foutjes weggewerkt.. code typen zonder kleurtjes is toch niet zo gemakkelijk 
Edit2: omdat ik met JALv2 werk zijn de libraries wel sterk verschillend. Ook het declareren van de gebruikte µC is anders
dus bij mij gaf hij nog enkele error's
Edit3: die 'exit loop' lijkt me te werken. ik heb hem net even getest in de code van mijn led kubus waar ik wat mee bezig ben.
Zie: http://www.youtube.com/watch?v=YAndHNG8HgE
Hey bedankt dat je wil helpen uitzoeken. ik zal het vanavond gelijk gaan proberen te complimeren.
Je hebt gelijk over de 2de loop ik bedoelde eigenlijk led off maar dat is een foutje van mij. Ik wil uit eindelijk pwm met led loops gaan maken met verschillende soorten loopjes. snel langazaam. alleen rood dimmen etc. maar vondt het zo makkelijk om uit te zoeken hoe je de met behulp van de switch de loops kan starten.
Die kubus project is ook erg gaaf daar wil ik me ook een x mee bezig gaan houden alleen heb nog geen kaas gegeten van registers maar ja stapje voor stapje.
hey bedankt! je hoordt nog van me of het gelukt is.
Nou het wil echt niet lukken. De exit regel herkent hij niet. en heb zelf egt weer van alles zitten proberen maar het wil niet lukken.
Iemand in deze discussie rade mij ook aan om er een tellertje in mee te proggen maar ook daar kom ik niet egt mee uit.
Nou ik ga nog wat dingen proberen mocht er iemand nog wat tips voor me hebben hoor ik het graag.
Het probleem is dat jij en ik een verschillende library gebruiken. Ik weet niet juist hoe 'exit loop' vertaald wordt in de compiler, maar het kan zijn dat deze in de eerste versie nog niet opgenomen is, of dat deze afhankelijk is van een andere library.
Het beste dat je kan doen is de libraries doorspitten, en eventueel documentatie zoeken van de compiler voor JAL V2
Als noodoplossing kan je ook nog Bert van dam contacteren... de libraries zijn door hem geschreven, hij weet dus ook wat mogelijk is, en wat niet.
Kan je eens zien welke compiler jij hebt ? vanaf 2.4b zou 'exit loop' beschikbaar moeten zijn...
Hey tokesnugerd,
Dat was een hele goede van je heb nu de laatste versie met de nieuwe libs en heb het programmatje even getest op mijn werk en het gaf dit x 0 erros aan , en hij herkende dus exit loop.
kan niet wachten tot ik vanacht thuis ben om het even op de hardware te zetten om te kijken of het werkt.
tanxs man! laat wel even weten of het gelukt is.
Super dat ik kon helpen! Laat zeker ook nog weten wat je nog allemaal van plan bent! Hierdoor leer ik zelf ook heel wat bij 
Ikzelf ben aan het uitzoeken hoe ik het beste coordinaten kan toekennen aan de leds in mijn kubus.
Ik ben zelf ook nog op zoek (of zelf iets in mekaar boksen) om nieuwelingen in het JAL gebeuren, zoals jij en ik, samen te brengen in één community!
Jal is niet de eenvoudigste taal, maar je leert zo echt wel werken met een PIC microcontroller!