[Microbit-Python] mu vs microbit.co.uk/create-code API differences

Joakim Pettersson joakimbits at gmail.com
Wed Oct 19 14:15:00 EDT 2016


Hi Nick & Carlos,
Great that the microbit.org is up and hopefully more compatible with Mu 
- thanks for the new pointer!
/joakim

------ Originalmeddelande ------
Från: "Nicholas H.Tollervey" <ntoll at ntoll.org>
Till: microbit at python.org
Skickat: 2016-10-19 15:23:09
Ämne: Re: [Microbit-Python] mu vs microbit.co.uk/create-code API 
differences

>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 --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/microbit/attachments/20161019/bcbe80f3/attachment-0001.html>


More information about the Microbit mailing list