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

More Decks by Nina Zakharenko

Other Decks in Technology


  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
  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
  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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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/
  9. 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/
  10. # 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
  11. 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
  12. I ! Programming with Visual Studio Code + The Python

    Extension $ # To open on Mac OS $ code /Volumes/CIRCUITPY/ @nnja - nnjaio - nina.to/lcc-leds
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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.
  18. 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
  19. 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
  20. Microsoft Make Code ✨ Coding not required ✨ makecode.adafruit.com incudes

    built in emulator learn.adafruit.com/circuit-playground-express-con-badge/
  21. VS Code Device Simulator Express Extension Allows you to run

    CircuitPython without the hardware! @nnja - nnjaio - nina.to/lcc-leds
  22. 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
  23. 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
  24. 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