Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Light Up Your Life -- With Python and LEDs!

Light Up Your Life -- With Python and LEDs!

Nina Zakharenko

June 20, 2020
Tweet

More Decks by Nina Zakharenko

Other Decks in Technology

Transcript

  1. Light Up Your Life --
    With Python & LEDs!
    Live Coders Conf 2 2020
    Slides: nina.to/lcc-leds
    (download for links)
    Code: nina.to/lcc-cpx-code
    Nina Zakharenko
    @nnja
    nnjaio
    Photo by Sandro Katalina on Unsplash

    View full-size slide

  2. whoami?
    nnjaio
    @nnja
    nnja

    nina.to
    » I've been a software engineer for over a decade.
    » For the past two years I've focusing on Python at
    Microsoft as a Cloud Developer Advocate
    » where my goal is to make azure and vs code easier
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  3. Where To Start
    When You're Just Getting Started
    » Hardware Options
    » Programming LEDs
    » Debugging with print()
    » Tools
    » Libraries
    » Projects
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  4. some of my projects

    View full-size slide

  5. Hardware Options
    » Raspberry Pi Zero W
    » Small Development Kit w/ wireless and bluetooth
    connectivity
    » BBC micro:bit
    » computing device aimed at learning
    » Adafruit - m0 and m4 line of devices
    » & lots more...
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  6. @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  7. @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  8. Adafruit
    Circuit
    PlayGround
    Express
    Learning Platform -
    Cost: $25
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  9. Python's Batteries Included
    Philosophy
    “The Python source distribution has long maintained
    the philosophy of "batteries included" -- having a
    rich and versatile standard library which is
    immediately available, without making the user
    download separate packages.
    This gives the Python language a head start in many
    projects.”
    PEP 206
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  10. CircuitPlaygroundExpress Tour

    View full-size slide

  11. MicroPython &
    CircuitPython
    » MicroPython is a variant of
    Python 3 designed to run of
    microcontrollers.
    » Runs within just 256k of
    code space and 16k of RAM.
    » CircuitPython is an education
    friendly Adafruit fork of
    MicroPython
    » Both are open source!
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  12. Libraries
    » Many available
    » Need to be in the lib folder
    » Download from: git.io/circuitpythonlib
    »
    !
    We're interested in
    adafruit_circuitplayground.express, so we can interact
    with the board.
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  13. from adafruit_circuitplayground.express import cpx
    cpx.button_a # Is Button A Pressed? True or False
    cpx.button_b # Is Button B Pressed? True or False
    learn.adafruit.com/circuitpython-made-easy-on-circuit-playground-express/

    View full-size slide

  14. RGB LEDs
    RGB LEDs have one LED of each
    color - red, green, and blue.
    By combining the amount and
    intensity of these colors
    (255 * 255 * 255) you can
    produce over 16 million color
    variations!
    image source: randomnerdtutorials.com/electronics-basics-how-do-rgb-leds-work/

    View full-size slide

  15. Neopixels in action
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  16. # Cycle between Red, Green, Blue each time a button is pressed
    from adafruit_circuitplayground.express import cpx
    import time
    RED = (255, 0, 0) # 255 Red, 0 Green, 0 Blue
    GREEN = (0, 255, 0) # 0 Red, 255 Green, 0 Blue
    BLUE = (0, 0, 255) # 0 Red, 0 Green, 255 Blue
    cpx.pixels.brightness = 0.1
    my_colors = [RED, GREEN, BLUE]
    color_pos = 0
    while True: # Keep looping forever...
    cpx.pixels.fill(my_colors[color_pos])
    if cpx.button_a or cpx.button_b: # Button A or B was pressed
    color_pos = (color_pos + 1) % len(my_colors)
    time.sleep(0.2) # Sleep, to make the button less sensitive

    View full-size slide

  17. @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  18. How to program it?
    » Plug it in with a data + charge USB cable
    » See a CircuitPython drive?
    » on Mac OS in /Volumes/CIRCUITPY
    » Otherwise, install CircuitPython
    » Next, edit & save the code.py (or main.py) file.
    Your code runs instantly!
    !
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  19. @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  20. I
    !
    Programming
    with Visual Studio
    Code
    + The Python Extension
    $ # To open on Mac OS
    $ code /Volumes/CIRCUITPY/
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  21. Programming with Mu Editor:
    a simple Python editor for beginner programmers

    View full-size slide

  22. Investigating with print statements
    my_colors = [("Red", RED), ("Green", GREEN), ("Blue", BLUE)]
    color_pos = 0
    while True: # Keep looping forever...
    name, color = my_colors[color_pos]
    cpx.pixels.fill(color)
    if cpx.button_a or cpx.button_b: # Button A or B was pressed
    color_pos = (color_pos + 1) % len(my_colors)
    next_name, _ = my_colors[color_pos]
    print("Changing color from %s to %s" % (name, next_name))
    time.sleep(0.2) # Sleep, to make the button less sensitive
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  23. View print statements & errors
    via the serial console
    » To see print() statements or errors, you need to
    receive output from the Circuit Play Ground
    Express by opening a connection to the serial
    console.
    »
    !
    You won't see any output without it.
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  24. easy serial console:
    with mu editor
    The easiest way to connect to the serial console is
    the serial button in the my editor toolbar.
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  25. @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  26. advanced serial console:
    the terminal
    On Mac OS, can use the terminal and screen program to
    connect to the serial console on the Circuit
    Playground Express.
    $ ls /dev/tty.* # Select the usbmodem
    $ screen /dev/tty.board_name 115200 # `115200` is the baud rate.
    To quit screen, press ctrl+a followed by k.
    Or, learn how to connect via the terminal in other OSes

    View full-size slide

  27. Powering Your
    Projects [1/2]
    » micro USB (same port for
    power & programming)
    » from a computer, portable
    phone charger, or wall
    » battery packs (JST connector)
    » need minimum 3.5V DC.
    Power with 3 household AAA
    batteries + enclosure with
    correct connector.

    View full-size slide

  28. Powering Your Projects [2/2]
    » lithium polymer (li-poly)
    batteries
    » warning: only for advanced
    users
    » small, lightweight, energy
    dense, fragile
    » needs special care!
    » cannot be heated,
    punctured, or bent
    »
    !
    for kids w/o supervision
    » requires additional charger

    View full-size slide

  29. Putting it all together
    » Adafruit demo code: bit.ly/initial_cpe
    » Initial directory: bit.ly/initial_cpe_dir
    » Demo covers a majority of the features, prints out
    sensor readings, etc.
    » There's even a flag you can set to turn the
    Circuit Playground Express into a little piano
    using the capacitive touch pads!
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  30. Microsoft Make Code

    Coding not
    required

    makecode.adafruit.com
    incudes built in emulator
    learn.adafruit.com/circuit-playground-express-con-badge/

    View full-size slide

  31. VS Code Device Simulator Express Extension
    Allows you to run CircuitPython without the hardware!
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  32. Find projects,
    or Share yours.
    · Adafruit Guides
    · Microsoft Make Code
    · Instructables
    ← solder-free Circuit
    PlayGround Express Jack-o-
    Lantern
    learn.adafruit.com/circuit-playground-jack-o-lantern

    View full-size slide

  33. Next Steps
    » Buy (or borrow) a device of your choice or use the
    VS Code simulator extension or MakeCode emulator
    » Pick your editor (Visual Studio Code, Mu, etc..)
    » Write your own code
    » Use a library
    » Or start with a shared project
    ... start with Python on hardware in no time!
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide

  34. github.com/nnja/pyearrings

    View full-size slide

  35. Thank You!
    @nnja
    nnjaio
    Python @
    Microsoft:
    nina.to/lcc-msft
    Code: nina.to/lcc-cpx-code
    *Additional resources on the next slide

    View full-size slide

  36. Resources
    » Circuit PlayGround Express Library -
    learn.adafruit.com/circuitpython-made-easy-on-circuit-
    playground-express/
    » Circuit Python Essentials -
    cdn-learn.adafruit.com/downloads/pdf/circuitpython-
    essentials.pdf
    » AdaFruit Python Compatible m0
    www.adafruit.com/?q=m0 and m4 www.adafruit.com/?q=m4
    Devices
    @nnja - nnjaio - nina.to/lcc-leds

    View full-size slide