[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