[Microbit-Python] mu vs microbit.co.uk/create-code API differences
Nicholas H.Tollervey
ntoll at ntoll.org
Wed Oct 19 09:18:35 EDT 2016
Carlos,
You beat me to it!
http://python.microbit.org/editor.html has the latest version.
Also, the source code for the editor is open source and can be found here:
https://github.com/bbcmicrobit/PythonEditor
Hope this helps,
N.
On 19/10/16 14:16, Carlos Pereira Atencio wrote:
> Now that the foundation has been announced, the http://microbit.org
> website (note the change from .co.uk <http://co.uk> to .org) should
> contain the newest version of the online editor . So if you go to
> http://python.microbit.org/editor.html it should contain the latest
> micropython.
>
> On 19 October 2016 at 13:17, Joakim Pettersson <joakimbits at gmail.com
> <mailto:joakimbits at gmail.com>> wrote:
>
> Aha, that's why - thanks for the explanation!
> Agree one should not eval, but this demo is about daring using the
> parser-interpreter so it's ok!
> Note the exec in globals() later on;).
> /joakim
>
> ------ Originalmeddelande ------
> Från: "Radomir Dopieralski" <radomir at dopieralski.pl
> <mailto:radomir at dopieralski.pl>>
> Till: microbit at python.org <mailto:microbit at python.org>
> Kopia: "Joakim Pettersson" <joakimbits at gmail.com
> <mailto:joakimbits at gmail.com>>
> Skickat: 2016-10-19 14:11:13
> Ämne: Re: [Microbit-Python] mu vs microbit.co.uk/create-code
> <http://microbit.co.uk/create-code> API differences
>
>
> Hi,
>
> the version of MicroPython at the microbit website is outdated,
> because it
> takes BBC a very long time to upgrade it. The Mu editor comes
> with the latest
> release, because it's in control of the developers.
>
> One note about your code. You *really* don't want to use eval().
> I would use
> the getattr() function in its place, like this:
>
> a_image, b_image = getattr(Image, name) for name in (a_name, b_name)
>
>
> On Wed, 19 Oct 2016 12:00:42 +0000
> "Joakim Pettersson" <joakimbits at gmail.com
> <mailto:joakimbits at gmail.com>> wrote:
>
> Hi,
>
> I stumped into problems with the online editor.
> Which documentation should I read to figure out the API?
> Why is that micropython implementation different from the
> one used by
> the mu editor?
>
> Here is code that works in the mu editor but fails when
> dowloading
> from https://www.microbit.co.uk/app/#
> <https://www.microbit.co.uk/app/#> (probably on the third
> line but
> how do I tell?). The code was running a swarm of 8
> micro:bit at a
> student-industry event this Monday. I used it also to pitch
> micro:bit
> to the Swedish prime minister when he received one there:).
>
> Thanks/Joakim
>
> # A micro:bit virus-infectable Firefly.
> # mailto:Joakim.Pettersson at join.se
> <mailto:Joakim.Pettersson at join.se>
>
> from radio import send, receive, on
> import random
> from microbit import display, Image, button_a, button_b, sleep
>
> flock_size = 3 # Number of fireflies required for flock
> behaviour
> me = 2 # My lucky number
> a_name, b_name = {
> 0: ('HEART', 'ALL_ARROWS'),
> 1: ('HAPPY', 'ALL_CLOCKS'),
> 2: ('SURPRISED', 'CONFUSED'),
> 3: ('SNAKE', 'PACMAN'),
> 4: ('BUTTERFLY', 'COW'),
> 5: ('FABULOUS', 'SAD'),
> 6: ('SILLY', 'SMILE')}[me]
> a_image, b_image = (eval('Image.' + name) for name in (a_name,
> b_name))
>
>
> # A show function that does not wait
> def show(x): display.show(x, delay=100, wait=False)
> show(a_image)
>
> # Create the "flash" animation frames. Can you work out how
> it's done?
> flash_animation = [Image().invert()*(i/9) for i in range(9,
> -1, -1)]
>
> # Timing is controlled with these global variables
> time = 0 # Current time
> flash_time = -1 # Time to flash LEDs
> reflash_time = -1 # Time to flash others
>
>
> # Define the "flash" function.
> def flash():
> "Display the firefly flash animation after a random
> short pause"
> global time, flash_time, reflash_time
> flash_time = time + random.randint(50, 350)
> if random.randint(0, flock_size) == 0:
> reflash_time = flash_time + 500
>
>
> # The step function decides what to do next
> def step():
> global time, flash_time, reflash_time
> # Button A and B changes image.
> if button_a.was_pressed():
> send('show(Image.%s)' % a_name)
> show(a_image)
> reflash_time = time # Reflash now!
> if button_b.was_pressed():
> send('show(Image.%s)' % b_name)
> show(b_image)
> reflash_time = time # Reflash now!
> # Read any incoming messages.
> try:
> incoming_message = receive()
> except ValueError:
> pass
> if incoming_message:
> print(incoming_message)
> if incoming_message[:3] != 'On ':
> try:
> exec(incoming_message, globals(), globals())
> except Exception as e:
> send("On %d: %s" % (me, e))
> if time == flash_time:
> show(flash_animation)
> if time == reflash_time:
> send('flash()') # a-ha
> sleep(1) # Pause 1 ms
> time = time + 1 # Now it's time for next step
>
> # The radio won't work unless it's switched on.
> on()
>
> # Infinite loop
> while True:
> try:
> step()
> except Exception as e:
> print(e)
>
> # For the virus author:
> # Send <20 character strings containing new code ;-)!
>
>
>
>
>
>
>
>
>
> --
> Radomir Dopieralski
>
>
> _______________________________________________
> Microbit mailing list
> Microbit at python.org <mailto:Microbit at python.org>
> https://mail.python.org/mailman/listinfo/microbit
> <https://mail.python.org/mailman/listinfo/microbit>
>
>
>
>
> _______________________________________________
> Microbit mailing list
> Microbit at python.org
> https://mail.python.org/mailman/listinfo/microbit
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/microbit/attachments/20161019/452b643e/attachment-0001.sig>
More information about the Microbit
mailing list