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/ ~




Reply via email to