Hi Josh Cool you figured it out! When you have an (if) without any else statements, you could use (when) instead.
Regards - beneroth ----- Original Message ----- From: Josh [mailto:k1llfre...@hotmail.co.uk] To: picolisp@software-lab.de Sent: Mon, 21 Dec 2015 00:26:53 +0000 Subject: Re: Why won't the LED flash? Okay so I feel like an idiot for not figuring this out earlier, but I'll put it down to not writing picolisp before. Anyways, I figured out what is wrong, sbcl if statement works like so: (if test-form then-form else-form) And the Picolisp works the same, and the easiest way to do multiple things in the "then-form" is with progn on SBCL, or prog on Picolisp :/ so the correct code to get it to blink is: # A simple program which demonstrates # the usage of user-buttons. # declare pins (setq led 'PB_29 button 'PX_16) # a simple delay function (de delay (t) (tmr-delay 0 t) ) # make sure the LED starts in # the "off" position and enable # input/output pins (de init-pins () (pio-pin-sethigh led) (pio-pin-setdir *pio-output* led) (pio-pin-setdir *pio-input* button) ) # And now, the main loop (de prog-loop () (init-pins) (loop (if (= 0 (pio-pin-getval button)) (prog (pio-pin-setlow led) (delay 100000) (pio-pin-sethigh led) (delay 100000) ) ) ) ) (prog-loop) *drops mic* anyways, I got it working using that exact code, I've edited the wiki book. *picks up mic and drops it again* Thanks :P On 20/12/15 13:48, J B wrote: > No circuit just the plain old Mizar B. The Example from the hempl wiki > book is flashing PB_29. I'm Ubuntu to connect with terminal. > > Sent from my iPhone > > On Dec 20, 2015, at 12:12 PM, pd <eukel...@gmail.com > <mailto:eukel...@gmail.com>> wrote: > >> sorry if you already said this but what platform are you using? also >> a schematic of your circuit would be interesting even being so simple >> >> On Sun, Dec 20, 2015 at 3:18 AM, Josh <k1llfre...@hotmail.co.uk >> <mailto:k1llfre...@hotmail.co.uk>> wrote: >> >> Thought it might be a firmware problem or something, so I just >> re-flashed the firmware but it's still happening, just >> eliminating possibilities. Also the second of my last emails was >> the correct one, I canceled the previous but it sent anyways. >> Thanks. >> >> >> On 19/12/15 12:50, Josh wrote: >>> I have put the main code onto the sd card and I use the shell to >>> call the function prog-loop. The light just stays on. I've had >>> this problem before with the example blink program, if I change >>> any of it to make it shorter by using shorter function names >>> like (de low () (pio-pin-setlow 'PB_29)) it doesn't work, but it >>> does when it's just (pio-pijn-setlow 'PB_29). I don't really >>> know what's going on, but it's starting to get irritating. >>> On 19/12/15 03:45, Raman Gopalan wrote: >>>> >>>> Dear Josh, greetings! >>>> >>>> Firstly, great to know you're playing with your board! Perfect! >>>> >>>> > Why does this small amount of code not make the onboard LED >>>> flash? >>>> >>>> I think you're not providing enough delay for you to see the >>>> off state >>>> of the LED. Why don't you try this? I've just inserted an >>>> additional >>>> delay >>>> >>>> (pio-pin-setdir *pio-output* 'PB_29) >>>> (pio-pin-sethigh 'PB_29) >>>> >>>> (loop >>>> (pio-pin-setlow 'PB_29) >>>> (tmr-delay 0 100000) >>>> (pio-pin-sethigh 'PB_29) >>>> (tmr-delay 0 100000) ) >>>> >>>> > Any ideas? Also this example on the hempl wiki book: >>>> >>>> This example doesn't blink the on-board LED. It just reads the >>>> status >>>> of an input pin (SW-1 I think; the one near the voltage >>>> regulator) and >>>> turns the blue LED on when this input switch is pressed. >>>> >>>> > # And now, the main loop >>>> > (de prog-loop () >>>> > (init-pins) >>>> > (loop >>>> > (if (= 0 (pio-pin-getval button)) >>>> > (pio-pin-setlow led) >>>> > (delay 100000) >>>> > (pio-pin-sethigh led) >>>> > (delay 100000) ) ) ) >>>> >>>> Please copy the example on your micro-SD card and point picolisp in >>>> the direction of this file. If this doesn't happen, something >>>> strange >>>> is happening. We can then debug. But I'm almost certain it'll >>>> work :) >>>> >>>> Hempl# picolisp /mmc/user-button.l >>>> >>>> R >>>> >>>> P.S. You may also use the internal transient symbol >>>> `*tmr-sys-timer*' >>>> in the function tmr-delay. I think it uses a hardware PWM >>>> channel to >>>> generate the time (can't remember which; I'll have to see the >>>> sources >>>> again). That makes the timing accurate. >>>> >>>> >>>> On 18 December 2015 at 22:08, Josh <k1llfre...@hotmail.co.uk >>>> <mailto:k1llfre...@hotmail.couk>> wrote: >>>> >>>> Why does this small amount of code not make the onboard LED >>>> flash? >>>> (pio-pin-setdir *pio-output* 'PB_29) >>>> (pio-pin-sethigh 'PB_29) >>>> (loop (pio-pin-setlow 'PB_29) >>>> (tmr-delay 0 100000) >>>> (pio-pin-sethigh 'PB_29)) >>>> All that happens in the blue LED turns on and stays on, >>>> even though the code clearly says for it to go from high to >>>> low repeatedly. Any ideas? Also this example on the hempl >>>> wiki book: >>>> >>>> # A simple program which demonstrates >>>> # the usage of user-buttons. >>>> # declare pins >>>> (setq led 'PB_29 button 'PX_16) >>>> >>>> # a simple delay function >>>> (de delay (t) >>>> (tmr-delay 0 t) ) >>>> >>>> # make sure the LED starts in >>>> # the "off" position and enable >>>> # input/output pins >>>> (de init-pins () >>>> (pio-pin-sethigh led) >>>> (pio-pin-setdir *pio-output* led) >>>> (pio-pin-setdir *pio-input* button) ) >>>> >>>> # And now, the main loop >>>> (de prog-loop () >>>> (init-pins) >>>> (loop >>>> (if (= 0 (pio-pin-getval button)) >>>> (pio-pin-setlow led) >>>> (delay 100000) >>>> (pio-pin-sethigh led) >>>> (delay 100000) ) ) ) >>>> >>>> (prog-loop) >>>> >>>> Doesn't make the LED flash it just stays on. >>>> >>>> -- >>>> UNSUBSCRIBE: mailto:picolisp@software-lab.de >>>> <mailto:picolisp@software-lab.de>?subject=Unsubscribe >>>> >>>> >>> >> >> >> >> >> -- >> Andrés >> >> /~ La mejor manera de librarse de la tentación es caer en ella//. ~ >> Oscar Wilde/ ~