[Microbit-Python] mu vs microbit.co.uk/create-code API differences
Nicholas H.Tollervey
ntoll at ntoll.org
Wed Oct 19 09:23:09 EDT 2016
I forgot to mention - the BBC won't let me deploy the latest version of
the editor for tedious bureaucratic reasons. You can't believe how
frustrating this feels and I hope it certainly doesn't reflect on the
efforts of the Python community to create, share and promote freely
available resources.
:-/
Joakim, please don't hesitate to ask questions or ask for help. The
Python community is incredibly generous with their time and passionate
about education.
Basically, you have allies!
N.
On 19/10/16 14:18, Nicholas H.Tollervey wrote:
> 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
>>
>
>
>
>
> _______________________________________________
> 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/079e6320/attachment.sig>
More information about the Microbit
mailing list