Hello! I think it'd be quite instructional to be able to see the source code for the firmware that shipped with the ADABOX019 macro-pad (which I love, BTW) since it demonstrates so many cool effects, hardware interactions, and event handling. Is this available anywhere?
Also, I believe "MACROPAD" could deserve its own top-level forum since I think it'll be very popular for a long time, but that could just be recency bias on my part.
Macropad source code for ADABOX019?
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
This isn't an answer to your question, but rather a +1 to the request...I came here to find the source code for adabox019 as well.
- CrashGoBoom
- Posts: 1
- Joined: Wed Sep 23, 2020 3:03 pm
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
Hmm..was hoping to see a circuitpython equivalent. One of the examples gives the button layout and I think I can figure out the rotary dial...but does anyone have the circuitpython code to make the keys go all rainbow glowy?
- Franklin97355
- Posts: 23910
- Joined: Mon Apr 21, 2008 2:33 pm
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
So I'm almost there:
But I'm getting the error:
TypeError object of type '_PixelMapLite' has no len()
If you change the line
rainbow.animate()
to
blink.animate()
It works fine, but it's kinda boring :) I'd like to get one of the rainbow animations to work. I'm using the circuitpython libraries from July 2nd (the newest version had an error with gridlayout). Any suggestions?
Code: Select all
import displayio
import terminalio
import board
import neopixel
from adafruit_display_text import bitmap_label as label
from adafruit_displayio_layout.layouts.grid_layout import GridLayout
from adafruit_macropad import MacroPad
from adafruit_led_animation.animation.rainbow import Rainbow
from adafruit_led_animation.animation.blink import Blink
from adafruit_led_animation.color import BLUE
macropad = MacroPad()
main_group = displayio.Group()
macropad.display.show(main_group)
layout = GridLayout(x=0, y=4, width=128, height=66, grid_size=(3, 5), cell_padding=0)
labels = []
for _ in range(12):
labels.append(label.Label(terminalio.FONT, text="", max_glyphs=10))
for index in range(12):
x = index % 3
y = index // 3
layout.add_content(labels[index], grid_position=(x, y), cell_size=(1, 1))
rotary_label = label.Label(
terminalio.FONT,
text="",
max_glyphs=10
)
layout.add_content(rotary_label, grid_position=(0, 4), cell_size=(2, 1))
rotary_switch_label = label.Label(
terminalio.FONT,
text="",
max_glyphs=10
)
layout.add_content(rotary_switch_label, grid_position=(2, 4), cell_size=(1, 1))
main_group.append(layout)
rainbow = Rainbow(macropad.pixels, speed=0.1, period=2)
blink = Blink(macropad.pixels, speed=0.5, color=BLUE)
while True:
rainbow.animate()
key_event = macropad.keys.events.get()
if key_event:
if key_event.pressed:
labels[key_event.key_number].text = "KEY{}".format(key_event.key_number)
else:
labels[key_event.key_number].text = ""
rotary_label.text = "Encoder: {}".format(macropad.encoder)
if macropad.encoder_switch:
rotary_switch_label.text = "ENCODER"
else:
rotary_switch_label.text = ""
TypeError object of type '_PixelMapLite' has no len()
If you change the line
rainbow.animate()
to
blink.animate()
It works fine, but it's kinda boring :) I'd like to get one of the rainbow animations to work. I'm using the circuitpython libraries from July 2nd (the newest version had an error with gridlayout). Any suggestions?
- wegunterjr
- Posts: 3
- Joined: Thu Dec 05, 2013 4:45 pm
Re: Macropad source code for ADABOX019?
I am also trying to get this to work. Using cricuit python, I would love c++ or similar eventually, but for now it;ll be great.
I am having issues with GridLayout when I try to add content similar to the example:
With error:
Seems like some of the libraries were updated, which is nice, but only one of them with an errors that indicated what to change. GridLayout doesn't say what to ignore or leave out.
I am having issues with GridLayout when I try to add content similar to the example:
Code: Select all
layout.add_content(labels[index], grid_position=(x, y), cell_size=(1, 1))
Code: Select all
>>> for index in range(12):
... x = index % 3
... y = index // 3
... layout.add_content(labels[index], grid_position=(x,y), cell_size=(1,1))
...
...
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "adafruit_displayio_layout/layouts/grid_layout.py", line 118, in add_content
File "adafruit_displayio_layout/layouts/grid_layout.py", line 85, in _layout_cells
AttributeError: 'Label' object has no attribute 'width'
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
That was the same error I got...if you switch to using the adafruit_display_text library from July 2nd, then the error goes away. Specifically, I used the version in this bundle: https://github.com/adafruit/Adafruit_Ci ... g/20210702
It was this commit that broke the gridlayout: https://github.com/adafruit/Adafruit_Ci ... c684527f44
I love circuitpython, but I have to say, every time I get an Adabox and try the examples, they almost never work right out of the box (haha, punny). There is almost always a library that you have to switch out to use an older version, and either you have to find on the forums someone else with the same error or dig through code until you find which library caused the break, both of which are time consuming. Dependency management is a nightmare, but I wish there was a better solution than "go and get an older version of the library that still works". There are dependency management techniques even for python. This is keeping me from adopting circuitpython over Arduino because it's frustrating to spend my time fixing libraries rather than working on my own code.
And, um, that being said, have I mentioned that the gridlayout library is *wonderful*? Thank you for making that available :)
It was this commit that broke the gridlayout: https://github.com/adafruit/Adafruit_Ci ... c684527f44
I love circuitpython, but I have to say, every time I get an Adabox and try the examples, they almost never work right out of the box (haha, punny). There is almost always a library that you have to switch out to use an older version, and either you have to find on the forums someone else with the same error or dig through code until you find which library caused the break, both of which are time consuming. Dependency management is a nightmare, but I wish there was a better solution than "go and get an older version of the library that still works". There are dependency management techniques even for python. This is keeping me from adopting circuitpython over Arduino because it's frustrating to spend my time fixing libraries rather than working on my own code.
And, um, that being said, have I mentioned that the gridlayout library is *wonderful*? Thank you for making that available :)
- wegunterjr
- Posts: 3
- Joined: Thu Dec 05, 2013 4:45 pm
Re: Macropad source code for ADABOX019?
Ah..that's the one. I tried the alpha4 i think, but it still had similar issues. thanks for that!
Also, are you using REPL or doing the code.py in the folder (I am using VSCode as my editor - When I press save, it typically shows on the macropad, but not always. )
I am wondering if the examples work as is in REPL and also in code.py.
How do i force it to use these libraries, just manually place them in the lib folder? don't use circup right?
Also, are you using REPL or doing the code.py in the folder (I am using VSCode as my editor - When I press save, it typically shows on the macropad, but not always. )
I am wondering if the examples work as is in REPL and also in code.py.
How do i force it to use these libraries, just manually place them in the lib folder? don't use circup right?
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
I'm just editing code.py in VSCode and then copying the required libraries over into /lib...that's the only way I've seen on the tutorials how to edit circuitpython code. I haven't used circup, but from what I can tell it just updates to the most recent version of the library, not a specific version of the library, which is what's needed here.
- adafruit2
- Posts: 22144
- Joined: Fri Mar 11, 2005 7:36 pm
Re: Macropad source code for ADABOX019?
how about this?
Code: Select all
# SPDX-FileCopyrightText: Copyright (c) 2021 Kattni Rembor for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
"""
Grid layout demo for MacroPad. Displays the key pressed in a grid matching the key layout on the
built-in display.
"""
import displayio
import terminalio
from adafruit_display_text import bitmap_label as label
from adafruit_displayio_layout.layouts.grid_layout import GridLayout
from adafruit_macropad import MacroPad
from rainbowio import colorwheel
macropad = MacroPad()
main_group = displayio.Group()
macropad.display.show(main_group)
title = label.Label(
y=4,
font=terminalio.FONT,
color=0x0,
text=" KEYPRESSES ",
background_color=0xFFFFFF,
)
layout = GridLayout(x=0, y=10, width=128, height=54, grid_size=(3, 4), cell_padding=5)
labels = []
for _ in range(12):
labels.append(label.Label(terminalio.FONT, text=""))
for index in range(12):
x = index % 3
y = index // 3
layout.add_content(labels[index], grid_position=(x, y), cell_size=(1, 1))
main_group.append(title)
main_group.append(layout)
lit_keys = [False] * 12
wheeloffset = 0
while True:
key_event = macropad.keys.events.get()
if key_event:
if key_event.pressed:
labels[key_event.key_number].text = "KEY{}".format(key_event.key_number)
lit_keys[key_event.key_number] = not lit_keys[key_event.key_number] # flip it
else:
labels[key_event.key_number].text = ""
# animate the pressed keys
wheeloffset += 1 # glow thru the colorwheel
for k in range(12):
if lit_keys[k]:
macropad.pixels[k] = colorwheel((k / 12 * 256) + wheeloffset)
else:
macropad.pixels[k] = 0 # turn it off
- collene
- Posts: 26
- Joined: Thu Oct 05, 2017 8:38 pm
Re: Macropad source code for ADABOX019?
Great, thanks!
-
- Posts: 35
- Joined: Thu Jan 22, 2009 12:31 pm
Re: Macropad source code for ADABOX019?
Thanks, this is helpful, but I'm still looking for the actual firmware that's on the Macropad as it shipped, including the Adafruit and Digikey bitmaps that are shown on the OLED at startup. Is this in a git repo somewhere?
- RufusVS2020
- Posts: 63
- Joined: Thu Nov 19, 2020 6:31 pm
Re: Macropad source code for ADABOX019?
If you had seen John Park's Unboxing, you'd have seen they posted a link to
the shipped firmware here: https://learn.adafruit.com/adabox019/original-firmware
the shipped firmware here: https://learn.adafruit.com/adabox019/original-firmware
Please be positive and constructive with your questions and comments.