#circuitpython-dev
1 messages · Page 286 of 1
text only today
Just lurking
lurking for now
@onyx hinge that would be a fine test, yes
🐱
Lurking
🐈
Could be worse
sorry about that, it was my digital logic course for a minute
we're learning about gray codes! 😉
you were in cs right?
Is this a college course or a self-placed online course @marble hornet ?
On the Metal podcast, highly recommend 🔥
it is a lecture
lurking
lurking
Looks good! There are some lines in mpconfigboard.h that are no longer needed, but they don't hurt. I'll clean them up as part of another PR.
Maybe we should try reverse round-robin, as it's always the same first and the same last...
Not this week.
CircuitPython and Feather power wheelchair as an Xbox controller: Great example of the community, open-source, Feather and CircuitPython, all coming together:
https://youtu.be/FgKNWc-EpHQ
https://blog.adafruit.com/2020/01/31/freedom-wing-adapter-adapter-allows-power-wheelchairs-to-control-an-xbox-ablegamers-at_makers-soeveryonecangame-feather/
Introducing The Freedom Wing Adapter!
In partnership with @at_makers, together we've created the first of its kind adapter to enable a player using a power wheelchair to control an Xbox.
And we're going to release it to the world for free.
AbleGamers can share these storie...
CLUE alpha released, micro:bit shaped, CircuitPython-powered, sensor-packed:
https://www.adafruit.com/clue
Do you feel like you just don't have a CLUE? Well, we can help with that - get a CLUE here at Adafruit by picking up this sensor-packed development board. We wanted to build some ...
so cute!
cute 😄
awesome!
circuitpython.org site video!
https://youtu.be/40gZBLdDSZA
CircuitPython is a programming language designed to simplify experimenting and learning to code on low-cost microcontroller boards!
Check it out on https://circuitpython.org
Here you can see the best boards that you can use to make projects. The download page now has over a...
Open Hardware Summit wearable badge updates:
https://github.com/adafruit/circuitpython-weekly-newsletter/blob/gh-pages/_drafts/2020-02-04-draft.md#open-hardware-summit-wearable-badge-updates
MariaJose Molina-Contreras has a talk at PyCon about how CircuitPython can help your plants, and how to build an indoor garden with microcontrollers and IoT:
https://twitter.com/MJ_BIO/status/1222055833787412480
Nina has a Twitch stream on working on a CircuitPython PyPortal "ExpoVert" badge:
https://www.twitch.tv/videos/544944172
List of electronics and Python Discord servers we put together:
https://blog.adafruit.com/2020/01/30/discord-servers-for-electronics-making-python-and-more-discordapp/
Coming soon Feather Bluefruit Sense:
https://github.com/adafruit/circuitpython-weekly-newsletter/raw/gh-pages/assets/02042020/2420featherbf_silk.png
DRAFT is here, goes out on Tues 11am via adafruitdaily.com https://github.com/adafruit/circuitpython-weekly-newsletter/blob/gh-pages/_drafts/2020-02-04-draft.md
And server is leveled up...
Awesome, thanks @pt
I am also hybotics. 😃
Unlurking
Text only
👍
That was my first PR to Adafruit stuff. 🙂 Hopefully there will be many more to come as I learn more.
it says 29 at the top
Let's say I see something I believe I can fix... should I create an issue, then make the pull request? Or just the pull request?
@half sedge File an issue if it's something you want to discuss before filing the PR. Otherwise, feel free to put in the PR and any feedback and discussion can occur on the PR.
Just make sure that statistically that is positive.
Is there a tool that can edit font5x8.bin?
FontForge and probably many others?
lurking today
Gameduino 3/3X are BridgeTek 810/815 emebdded GPUs with touchscreens.
Support for them can be done entirely in Python. Class diagram:

By replacing one module (eveL) with a native module, the performance-critical methods are 4-7X faster, measured on a Metro M4.
Python code:
https://github.com/jamesbowman/py-bteve
C module for eveL:
https://github.com/jamesbowman/py-btev...
Any time I can help, just ask
😀
they should get a jeweler's loupe in the shop
sorry, mike problems
can you post that?
@timber mango If you have hug reports or status updates, you can type them in anytime.
@timber mango go ahead and post your text and I'll read it
OK.
@timber mango you can drop your text here in the text channel or into the notes doc https://docs.google.com/document/d/16ssd4xtTLyBV_5dmoOSjXIWLtJrESWVIxJ5BIfoUfYA/edit#
hug report to whoever is coming up as "anonymous goose" in the google doc because geese are funny
@onyx hinge Cool! I love the spiral look, definitely gonna get one of those printed this week.
@half sedge If you could wait to rearrange the notes until after the meeting, I would appreciate it. It moves around the rest of the document when you do it which makes it difficult to take/read notes.
Ok
The biggest selling point of CircuitPython to makers is its ease of usage. There is no driver or IDE installation required, just plug in the board, edit and save the “code.py” file inside the drive being mounted and you’re good to go, that’s how simple it is. Th...
Internet of things with CircuitPython using the PyBadge and ESP32 Airlift Feather-Wing.
Support my work: https://github.com/sponsors/iayanpahwa
Link to the blog - http://codensolder.com/blog/cloudbadge
Link to the code - https://github.com/iayanpahwa/CloudBadge
There is no section in the notes doc to just add questions.
@timber mango You can add it to your status update, or add it to In The Weeds at the end.
OK
PyCon India 2019 | CircuiPython Poster Presentation
Got a chance to present a poster on circuitPython so decided to add some fun element to it, here's the demo video. Thanks to team for putting this together and a big th...
Did this post twice by mistake?
@timber mango Please include @geekguy before it if you add it to In The Weed so we know who posted it. Thanks!
@idle owl I just added to my status update.
I see that. Thank you!
@marble hornet it will be in busio.SPI in general, so if you are not using a display or are using an off-board display, yes, you'll get the high-speed peripheral. I may have to add some extra args to the constructor so you can specify which one to use
@stuck elbow wow sounds great having a quemu for cp testing
I'm not promising anything
Either way it's gonna be a fun experiment
@lone axle should be possible to make a special build of circuitpython that starts time.monotonic at a few thousand or million seconds...
Can’t wait! I’d love to test. i have a st7789 display always ready to go w/ an nrf52840 so just say the word
@timber mango I suspect that it is converted from the X Windows bitmap font 5x8, which would be in that same bdf format that @slender iron mentioned
@slender iron font5x8.bin is used in the Charlieplex libraries. Should this be converted to what everything else uses?
that would be my preference since bdf files support a larger variety of fonts
Time for bed 😴 cya folks
sleep well @obsidian compass !
Timezone?
IST 🙂
Yeah, I love that this demo is introduced and pictured in the guide.
I will give I2C a test on an M4 board with the specific optimization flags that we put on pewpew m4. I'll do the proposed merge of color value parsing (of pixelbuf and displayio palette) under a separate PR so that the clue lib doesn't have to wait on this.
Will the CLUE and the CPB+Gizmo be equivalent from a displayio point of view? Would be great that code from one work with the other. Both are 240x240 right? @idle owl @gilded cradle
CLUE has its output rotated 90 degrees from Gizmo
I can rotate the Gizmo... it is round.
BTW, I just suggested I2C because the underlying ASF4 code uses a lot of potentially inlined stuff. There's nothing special about I2C per se.
I believe so, except with the CLUE board you don't need to worry about initializing the display.
@summer duneGlaude it is not a problem, it's just that you might see some transient differences when painting on the CLUE compared with the Gizmo. Static appearance should be the same.
nice! want to do a PR?
In the weeds: exposing displayio blit? (In a noise y place please call on last)
I think game can attract people to CP.
I am so distracted today! 😦
@stuck elbow I could also create a repo on the Adafruit GitHub where people could PR examples.
Like I discovered that maze because I am here... otherwise I might not have notice that.
Maybe propose a GameJam I have seen a lot on pico8.
We'll put a release note that "here be dragons" and not block 5.0.0 with this.
That is a frequently used techique in old console game.
@onyx hinge thanks. i'm going to un-assign myself for now from that issue. will keep an eye on it though.
@gmeader We discussed this in the CIrcuitPython chat, and @tannewt would like to see this made into a pull request in the https://github.com/adafruit/Adafruit_CircuitPython_Display_Text -- both this module and an example.
Would you be interested in helping us out on this?
No longer in noisy place
Would also be handy if Displayio could capture a screen as a bit map for SD card capture or re-use as a background. Is there a way to do that?
yes there is a thing
How to do the capture?
there's a guide and a library that will help you get a .bmp file or something
Ah. Would be handy to build a display algorithmically, send to the background, and just update changing display elements.
Can we "pause" displayIO and then capture?
adafruit_bitmapsaver
Perfect! Thanks!
@jepler Could you write a few sentences about this for the draft release: how it might come about and how to avoid it? Thanks! https://github.com/adafruit/circuitpython/releases/tag/untagged-b5510d684adf6cd75f14 (if that link is broken try just the release link).
Thanks all
Thanks!
thanks
see ya next week
Thanks everyone!
clue_data[1].text = "Gyro: {%.2f} {%.2f} {%.2f}" % clue.gyro
clue_data[2].text = "Magnetic: {:.3f} {:.3f} {:.3f}".format(*clue.magnetic)```
clue_data[2].text = "Magnetic: {:.3f} {:.3f} {:.3f}".format(clue.magnetic[0], clue.magnetic[1], clue.magnetic[2])
I will be happy to copy and past whatever you decide to use...
clue_data[2].text = "Magnetic: ....".format(mag_x, mag_y, mag_z)```
From a near neophyte point of view, jepler's example is the clearest to me.
Terminal size... 80 column...
punched cards 80 chars
>>> cc = C(1,2,3)
>>> "{0.x:.3f} {0.y:.3f} {0.z:.3f}".format(cc)
'1.000 2.000 3.000'
>>> t = (500000, 500, 5)
>>> print("First item: {0[0]:d}, second item: {0[1]:d} and third item: {0[2]:d}.".format(t))
First item: 500000, second item: 500 and third item: 5.
that's from stackoverflow
not easier to read, though
Use a huge hammer to drive a tiny nail\
Knob. As in feature.
noob is a new person, a novice
Thanks
newbs turning knobs
EXACTLY
def rgb(r, g, b): ...
I totally agree!
Long code can be more simple than a short bit of code
I've reached saturation. Happy to have learned something new. Thank you!
Fstrings remind me of swift \()
I need some clarification on fonts. Is font5x8.bin only used in the CharliePlex libraries and everything else in Circuitpython uses a different font format?
obj.h:#define mp_const_float_e MP_ROM_PTR((mp_obj_t)(((0x402df854 & ~3) | 2) + 0x80800000))
I'm gonna drop too
@slender iron had to drop from the call, but status,
on the OHSummit wrist badge (nRF52840), Michael Welling has working sensors with CircuitPython:
- BME680 Temperature, Pressure, and Humidity sensor
- APDS-9960 Gesture Sensor
- LSM9DS1 9DoF IMU
We are still trying to figure out how to get the Microphone working in CircuitPython: - SPH0645LM4H-B Microphone
I'm waiting for Adafruit 1.54" LCD and a j-link to arrive in Berlin so then I can start helping with bring-up as well.
Project page:
https://hackaday.io/project/168483-open-hardware-summit-2020-badge
@fierce girder thanks! Will add to the notes doc
I've added status to the google doc
I had already snagged it. put it here: https://github.com/adafruit/adafruit-circuitpython-weekly-meeting/blob/master/2020/2020-02-03.md
ok thanks
@timber mango font5x8.bin was used for framebuf, an older way of writing to displays which was superceded by displayio and dropped.
@fierce girder i think I only did i2s out on nRF. Pdm in. So it may need core driver code.
Drat, this digraph compression seems to make de_DE bigger, I'd only checked zh_Latn_pinyin
@timber mango pewpew_m4 has many native modules turned off, but not CIRCUITPY_ANALOGIO. Do you need analogio?
we're lookin' for space. pewpew_m4 zh_Latn_pinyin has 16 bytes free
Hi all! Next week's meeting is just under a week away at its normal time, Monday 11am Pacific / 2pm Eastern. All are welcome to attend. Notes doc is here: https://docs.google.com/document/d/1CTN9esAIa35AYV7EVIBUsa9nZsf_vzcJTJIvZqtiPgc/edit?usp=sharing <@&356864093652516868>
Here is the circuitpython2020 recap: https://blog.adafruit.com/2020/02/03/circuitpython2020-recap/
what's the general approach for doing a manual screen refresh with displayio?
@tidal kiln I think it's board.DISPLAY.refresh() but I'm not entirely sure
Although that's technically not through displayio
yep. that's displayio.
i'm trying:
display.auto_refresh = False
# and then later
display.refresh()
works once, but then on second call getting:
RuntimeError: Below minimum frame rate
it's in a loop that has a several second delay
refresh takes a minimum target frame rate
I think it you set it to 0 then it is disabled
looks
its meant to alert you if you expect your game to go at 15 fps for example
ok. that's what i was thinking.
so i should set it to match the slowness of my loop?
this is a case of very slow updates - just every couple of secs
I'm not sure it can go that low
ya, 0 disables it
minimum_frames_per_second = 0
target fps will slow you down if you go too fast
hrm
more info - i'm updating some text labels, both text and position, and trying to prevent the redraw until done with all that
ah, you'll want to set the target frame rate really low too
if you are behind the target then it'll skip the update
it may crash if it is less than 1
needs to be an int, set to 0. didn't crash, but didn't update.
0 will divide 1000 by zero
could there be a special case added for 0?
display.auto_refresh = False
while True:
label_1.text = some_new_text
label_1.anchored_position = some_new_position
#
# do the same for several more labels
#
# and then manually refresh
display.refresh()
# and sleep
time.sleep(5)
that's the gist of it
can you run it faster?
you could set target frame rate to 1 and it'll slow it down for you
no need for the sleep
and just let it update the screen that fast? and update the other things at the slower rate?
just let it update everything at that rate
but don't want to have the label updates be that fast
it works without setting auto_refresh = False
but then you see all the labels get moved, and it's not a smooth screen update
well auto_refresh off can't do multi-second frames
it assumed auto-refresh would work for that
so we can add support for 0 fps
what @stuck elbow was suggesting?
What if you set auto_refresh False while you're moving things around, and True when you're done and ready to sleep? That's sort of generally what I did in JEplayer when I wanted a bunch of UI elements to update at the same time.
(I didn't read back everything, apologies if I'm retreading something)
@tidal kiln ya. @onyx hinge's suggestion could work too
@onyx hinge awesome. yep. that works. thanks!
@slender iron do you think that we're computing the huffman codes for ALL the strings in the message file, or JUST for the ones actually used in this board?
while True:
display.auto_refresh = False
label_1.text = some_new_text
label_1.anchored_position = some_new_position
#
# do the same for several more labels
#
# and then manually refresh
display.auto_refresh = True
# and sleep
time.sleep(5)
it looks like it happens via the QSTR machinery which is based on what's actually enabled at the preprocessor level .. right?
yay! feel free to start a draft PR if you'd like - we would only have it turned on for our larger boards like the M4 and nrf52840
Hmmm. I took the "try:" from line 12 in the Weatherstation code.py file, which makes the new line 12 "from secrets import secrets" and the errors about line 8 and the pyportal stopped showing. But now the error for line 13 and the secrets.py has changed to line 13 in code.py which now reads "except ImportError:"
I don't think you can have an except without a try.
Thank you @idle owl , I tried commenting out the except and it went back to the old long list of errors.
@stuck elbow pewpew_m4 has many native modules turned off, but not CIRCUITPY_ANALOGIO. Do you need analogio?
we're lookin' for space. pewpew_m4 zh_Latn_pinyin has 16 bytes free
@tulip sleet I don't need it for games, but if someone wanted to connect a pot as an additional controller or something like that, they would need it. I know it's disproportionally large. I'm working on making the frozen modules smaller by not including the graphics in them for the final release.
de_DE has 24 bytes free
i'm trying to decide what to do in the short run. Maybe I'll turn it off temporarily if you are going to continue to squeeze the library. The filesystem size could also be adjusted but you might want that as large as possible.
@tulip sleet if you run out of space, turn CIRCUITPY_ANALOGIO off, and we can enable it if space becomes available
by the way, I asked at my fab if they would like to ship it also with Chinese firmware when the order is from China, and they told me that even children learning to program should know enough English to understand the error messages
pl has 804 free; en has 1660 free. Yes I will do that for now so we can get the displayio color tuples pr in. thank you very much
FYI, saved 1420 bytes
yeah, no idea why analogio is so huge
OK, I am going to close this and open a new PR for two reasons:
- Making space in
pewpew_m4via different means (turning offanalogiofor now). - Seeing if I can easily generalize passing a color sequence to more than a tuple.
neopixelet al take a sequence, which could be a tuple, a list, or any kind of iterator (e.g.range(3)works).
@cursive condor Memory Errors on CPX with both the maze, and etch-a-sketch unfortunately.
>>> b.to_bytes(2,'big',True)
Traceback (most recent call last):
File "", line 1, in
OverflowError: value must fit in 2 byte(s)
Works properly in CPython, except the third argument is a keyword-only argument in CPython, so you have to use .to_bytes(2, 'big', signed=True). That should be fixed too.
The workaround is to use struct.pack(), which does not throw an error.
afk for a while
Ok, because I keep running into this ISSUE, and tried searching here and found no answer to it, though I've brought it up multiple times, I figured out the solution, so I'm posting here for posterity, which is to say, so when I search for it again, I find it. Sphinx warning: toctree contains reference to document 'api' that doesn't have a title: no link will be generated is related to automock, and apparently is resolved when the autodoc_mock_imports are accurate.
(╯°□°)╯︵ ┻━┻
hehe. you could've pinged me. i've hit it sooo many times. 😄
I just got a CLUE today (!) I loaded CircuitPython 5.0 beta4, but it doesn't seem to be working. I see the blinka snake in the upper left, but nothing else on the screen. am I too much on the bleeding edge? (is this expected to work?)
@raven canopy I should have. I found a conversation between us from 2018 where you said it was tickling something in your brain about automock, so I tried that. It worked.
@strange cargo It should work. Are you not getting the CIRCUITPY drive? because there was a bug causing that.
good candidate to add to the library guide's checklist?
hehe. that guide needs love anyway. Travis isn't the best place to test with anymore. 😄
@idle owl if I double-click reset, I get /media/pi/FTHR840BOOT , so I can load a uf2, but with 50-beta4 running I don't see a drive in /media/pi ... also I don't see the REPL connection. normally I would have /dev/ttyACM0 but I don't see that
Ok try this firmware:
@strange cargo Load that onto the FTHR840BOOT drive.
Should resolve it if you're having the issue I think you are.
@idle owl thanks! I'll try that. I'm chatting on a different machine than I use for CP, so I'll need to transfer that file over (will take a bit). is that something that will show up as a fix in "beta 5"?
Beta5 will be released tonight or tomorrow, and will have this fix in it. So when the next beta is released, download it from CircuitPython.org/downloads and use that instead. But this should get you going now.
Yes
great. thanks!
You're welcome!
I would prefer to use the 48k for CircuitPython flash. We don't support removing external flash on any other board.
Here are IDs:
STM32F407 Discovery VID 0x239A PID 0x0089 # bootloader
PID 0x8089 # arduino
PID 0x808A # circuitpython
maybe we can call it STM32F407 Discovery although its official name is only STM32F4 Discovery . TinyUSB does support f407, in fact this is one of the first board I used to tested with STM32 port, here is its BSP
https://github.com/hathach/tinyusb/tree/master/hw/bsp/stm32f407disco
My preference is to follow the official name even though it is ambiguous.
@hierophect Please add the new board to the board list to fix the test.
@idle owl is your clue code posted anywhere? would love to build a ble sensor node based on it
We'd like to be able to call a c++ function from CircuitPython through a C wrapper. Here's a directory with the .cpp file and the .h file that we'd like to integrate into our CircuitPython build. We've also tried adding the files to our MakeFile on the port level through including them on the -INC call, which hasn't worked either. Fundamentally, our code also depends on the use of Eigen, which is a C++ header-only library. Any other ideas for how we could integrate this? We've tried shared li...
Is it expected for the reset button on the pybadge (or anything with built-in neopixels really) to keep the neopixels on showing whatever color was last set when the reset button is pressed?
Their drives both have the same UUID which means they don't show up next to one another.
@lone axle what are you resetting into? they don't actually reset themselves with the button
but circuitpython should clear them for you
I was in bootloader mode and they were green. I pressed reset and went back to normal and they stayed green
and stay green through subsequent reset presses
try the latest build. I think dan improved it on circuitpython recently
the reset button doesn't reset the neopixels directly
First draft of eveL, the low-level module of the Gameduino (and BridgeTek EVE) bindings.
[adafruit/circuitpython#2578]
Done in PR #2581
Enabled only for metro_m4_express and metro_nrf52840_express.
Ah, yep with the newest build they do get turned back off
great!
Smoke test for the built module:
import array
from eveL import EVEL
class Dumper(EVEL):
def write(self, b):
f.bb += b
f = Dumper()
f.register(f)
f.bb = b''
f.ClearColorRGB(0x12, 0x34, 0x56)
f.flush()
assert list(array.array("I", f.bb)) == [0x02123456], "Unexpected output %r" % f.bb
print("eveL smoke test passed")
Also at https://github.com/jamesbowman/py-bteve/blob/master/examples/smoke_eveL.py
Hi,
Just asking a question/requesting specs on accuracy and self heating for this board. Would be helpful to have board specific issues but I guess this will have to do.
Thanks for everything!!!
I have hit a new problem where I want to detect a switch press right now so it does not have to be held down. I know this yells "Use an interrupt," but Circuitpython does not have external interrupts. Is there another way I can handle this?
have you tried polling? it can be pretty fast
@slender iron I am not sure that is what I need. If that would that mean to check the switch every time through the loop, I do not think that is what I need. Is there something else that refers to?
@slender iron That is not what I need then. I am doing a bunch of sensor stuff in my loop but want to add a switch to allow toggling the display on/off. As I see it, polling would still require the switch to be held down.
@slender iron It's posted to a wip branch on my fork. I'll send you a link. Other than documentation and changing how the default colors are handled in the data display, it's pretty much what I'm going to PR.
cool! thank you!
Clue with Arduino , video: works with Circuit Python too. https://youtu.be/ibOR9DR8LbU
Here's the new Clue by Adafruit. Thanks Ivan Bosnic and thanks Lady Ada !
This Clue has so many features. Here 's the link to buy it: https://www.adafruit.com/clue
Works with Arduino and Circuit Python too.
Also, when writing to the display, I can not poll the switch. I do not know if interrupts would work here either though.
@timber mango the gamepad module could be helpful to you: https://circuitpython.readthedocs.io/en/latest/shared-bindings/gamepad/GamePad.html
it polls buttons in the background and remembers their state
@tulip sleet Ah, OK, I will try that, thanks!
I am off to a nap, so will check out the gamepad module later.
@trim elm @slender iron I just put the most recent build of CP on my CLUE (pirate) and am now trying to test Dylan's code. It's just plugged in via micro USB, I It's show some strange behavior:
- Dylan's code exits because I don't have all the libs
- I get the
Press any key to enter REPL. Use CTRL-D to reload.
a bit after it adds
Auto-reload be on. Put er files on USB to weigh anchor, er' bring'er about t' the REPL t' scuttle
After 30 seconds it repeats the "Press any key to enter the REPL use CTRL-D to reload.
- without any input from me it goes into the REPL after approximately 30 seconds.
, and I see the following (transcribed, may be some minor typos)
"
Adafruit CircuitPython 4.0.0-beta.4-1-27-g67440acd3 on 2020-02-03; Adafruit CLUE nRF52840 Express with nRF52840
>>>
raw REPL; CTRL-B to exit
>
@slender iron @trim elm I've tried a few more times and sometimes the timing or order is different, but the end result is always that I end up in the raw REPL.. The big issue is that writing to the drive by saving an edit to code.py does not reload
@tulip sleet any insight you have would be useful as well
Hmm. Have you tried using the uf2 that @tulip sleet made a few days ago. That’s what I’ve been working off of
@trim elm I don't think this is your doing, just keeping you in the loop
I have not
is it titled clue-PR-2571.uf2?
Yup
I'll try it. Is/was master not working?
It wasn’t. I wasn’t even able to get it to show up as a usb device although I haven’t tested the most recent build
ok, I'll try testing with that one.
hmm looks like the same behavior. I'm guessing by the name of that UF2 it was from a PR that has since been merged
I'll add the libs and keep testing
Ok
And yeah, I think that’s the case. Based on the date of that uf2 from the website, it’s probably a very similar version if not almost exactly the same.
@pastel panther are you testing with a heart rate monitor?
that sure does look my pirate translation...
❤️ ☠️
severely unfinished pirate translation* 😄
dude, I spent way too long looking at pirate dictionaries trying to come up with more
I feel like I need to consult a linguist
@pastel panther thanks, I will look at the CLUE problem in a bit.
This is very similar to #2574, which allowed displayio.Palette to take tuples for color values. This PR allows tuples or lists, to match _pixelbuf.
@jepler: It turns out there wasn't really a good way to share code with _pixelbuf: it's pretty different, and this code is quite small.
To fix the pewpew_m4 build overflow issues, I consulted with @deshipu, and we're removing analogio from that build temporarily. @deshipu expects to be able to reduce the size of the frozen module e...
@pastel panther @trim elm I am not having trouble with a CLUE build from the tip of master. I don't see all the raw mode stuff and everything. What's your host computer?
@tulip sleet A pre-catalina macbook pro 13
I wasn't using an editor, I was just copying files over from dylan's repo and libs from the bundle.
Perfect, thank you. I wasn’t aware of what the best place to engage the community was.
Chase
Sent from my iPhone
On Feb 3, 2020, at 8:36 PM, phillip torrone notifications@github.com wrote:
thanks, please post up in the adafruit forums for this as we release the board!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
were you copying with cp -X, etc?
def has a terminal/hid control character vibe to it...
yeah
I don't have another computer to try easily. I can pull the PC out of the closet if need be however, and I have an up to date ipad pro I might be able to test with if I have the right cable
that is worse; it gets really confused by the .Trashes file
@tulip sleet cp -R
cp -X will suppress copying the ._* files
that's good to know
has cp -R ever caused this before, though @pastel panther?
@tulip sleet possibly also relevant, one of the last times before I put the rest of the libs on the drive to get dylans code to run, it looked like I was getting phantom typing
@raven canopy no, I use it exclusively
https://learn.adafruit.com/welcome-to-circuitpython/troubleshooting#running-out-of-file-space-on-non-express-boards-20-44 and scroll down to the section "without creating hidden files"
👻 ⌨️
I can remove some stuff to try to reproduce it again
eek, is there anything else plugged in, or do you have a wireless keyboard?
haha. how ironic would it be that the BLE is so good, that it picked up a wireless keyboard. 😄
there is a metro running some non-HID driver test code but otherwise the only input is my keyboard and mouse as well as the trackpad and keyboard on the laptop itself
@tulip sleet I have to go to pick up 🌮 . I can test more later
i am pretty baffled. you could try another board and see if similar things happen
I'm not seeing this on MacOS with two random CPB's. diskutil info -all shows different UUIDs for the two volumes.
On Linux the SerialNumber that shows up in /var/log/syslog is different for the two boards. If you plug the same boards into Linux, are the SerialNumber values the same?
<img width="165" alt="Screen Shot 2020-02-03 at 10 55 37 PM" src="https://user-images.githubusercontent.com/2847802/73712839-5b30e500-46d9-11ea-8ffb-a30ffc2ea431.png">
Weird! I'm on 10.15.2 still. One was an itsy bitsy and the other a Clue. Will update tonight. My computer could be in a bad state.
I think GridLabel should have a "color" property (not just the constructor param) that may be set and read.
Perhaps even a background color property that also may be set to transparent as well?
@tannewt thanks for sharing, I'm thinking what's the exact reason for this crash?
@chaseTfreeman and also check out our discord as well! https://discord.gg/adafruit
hi, I jus got my adafruit circuit express, the firts steps went fine but then when I tried to save the circuit python on the board I couldn't see the icon, is it because the cable
?
Thank you!
I definitely agree with adding a "color" property. This would make the GridLabel more like the existing Label, which has a color property.
I think adding a background constructor and property is fine, if it is useful.
@velvet idol hi! Ladyada has asked me to add FFTs to CircuitPython, and DanH proposed to do it by getting ulab incorporated. I am reading up on your ulab-in-circuitpython work. What do I need to know? How can I help?
>>> import ulab
>>> ulab.ones(16)
array([1.0, 1.0, 1.0, ..., 1.0, 1.0, 1.0], dtype=float)
>>> ulab.fft(_)
(array([16.0, 0.0, 0.0, ..., 0.0, 0.0, 0.0], dtype=float), array([0.0, 0.0, 0.0, ..., 0.0, 0.0, 0.0], dtype=float))
>>> ulab.ifft(*_)
(array([1.0, 1.0, 1.0, ..., 1.0, 1.0, 1.0], dtype=float), array([0.0, 0.0, 0.0, ..., 0.0, 0.0, 0.0], dtype=float))
``` good progress so far ! @velvet idol @meager fog
@tidal kiln hi can u give me the mask bmp for hearts project
gmail got terribly confused 😄
@meager fog
@prime flower have you looked into sharing sockets in adafruit_requests?
so we don't need to create a new one every time
@slender iron I havent
k, I'm going to look into that today. seemed like most of the issues I'm having are with slow starting of the socket
@meager fog also added in basecamp if you want to grab from there
got it! thanks 🙂
Tested successfully on CLUE using display_text color setting with tuples. Thanks for the fix!
@tulip sleet Should I merge the tuple PR?
pdmin can't record to a ulab.array, I wonder why
no error, just .. no values filled. Doesn't "implement buffer protocol"?
@tulip sleet an update regarding the CLUE strangeness yesterday: I believe I reproduced it on a CP BLE though it's less certain because it doesn't have a screen to send REPL output to. I have pictures of the phantom typing I'm getting on the CLUE though I imagine I should probably open an issue
@idle owl sure please do
@pastel panther yes an issue would be great
I'm debugging a MicroPython vs CircuitPython difference right now. This causes crashes on CircuitPython. Will update here when I understand more.
My test program prints the peak audio frequency detected:
import audiobusio
import board
import ulab
import time
audioin = audiobusio.PDMIn(board.MICROPHONE_CLOCK, board.MICROPHONE_DATA, bit_depth=16, sample_rate=16000)
b = array.array("H", [0]) * 512
def maxel(values):
return max(enumerate(values), key=lambda x: x[1])
t0 = time.monotonic_ns()
while True:
audioin.record(b, len(b))
u = ulab.array(b)
f = ulab.fft(u)[0] # Take real part
...
@caternuson ya might find this useful!
Fixes #2149 for vfat.
>>> open("foo")
Traceback (most recent call last):
File "", line 1, in
OSError: [Errno 2] No such file/directory: foo
Looks like a waterfall display of drift+noise
I played a frequency sweep with audacity and spectrum-analyzed it on clue
Cool!
@onyx hinge terrific fast job on ulab. we could enable it on a bunch of boards (all nrf, maybe all m4?) How big is it?
@tulip sleet about 35kB on clue I think
REALLY, I thought it would like 100kB
I'd say let's enable it for m4 and nrf. this is a huge thing. I could include it in the beta
let me double check
"Huge" as in great
My pull request: 499692 bytes free in flash firmware space out of 839680 bytes (820.0kB).
Latest(?) master: 535800 bytes free in flash firmware space out of 839680 bytes (820.0kB).
I will work on enabling it in m4 and nrf. I think SOME m4 boards will be close enough to capacity we'll have to back it out, but let's see.
should be ok on anything with external SPI/QSPI, I think
did you get in touch with Andrew Gatherer?
Also could add to the boards he is targeting (kicksat and whatever the other one is); i think they do not have external qspi
no, I pinged him here on discord but didn't do anything more than that yet.
@pastel panther Soaked the usb port end of my clue in acetone and the usb port is now working again
that's good
@trim elm When you said debacle, you meant it.
ooohhh yeah. I got superglue and then acetone all over my desk
@trim elm ya, you're rivaling my ability to create problems that can only be solved by acetone or other similar strong solvents
lesson learned: putting acetone on a problem always fixes it
@trim elm It was good timing on your part, I considered using super glue to fix my CLUE display.
At the moment there's a piece of twist tie tucked under the cable in the back that kind of shims the display down.
I think that the gel super glue might actually work. The super glue I tried had turned completely liquid for whatever reason
Also, a bit of hot glue that is then filed down would probably work too
just on the edge
Ah fair enough. There are super glues that are entirely liquid too.
I think it comes up enough for doublesided tape but I wasn't sure whether that would affect the functionality or not.
mine I mean, comes up enough for that.
Doublesided tape is mostly clear?
hmm. I might try some on my pyportal that's having the same problem
to affix the screen to the pcb? why would it be important to use a clear doublesided tape?
To attach the screen to the metal part
@tulip sleet metro m4 express 192148 bytes free -> 157124
that's still very fine
Isn't the backlight separate from the display? It was confusing to me when I peeled it up
I thought putting something not clear in there would block the backlight
but it's so bright with it on, I couldn't tell what was where
if it's between the backlight and the lcd, for sure
I can't open the screen on my clue, but on my pyportal pynt, it looks like you should be fine to put anything back there. I'm gonna test with just single sided tape
I have a role of scotch doublesided tape somewhere around here.
As requested by @dhalbert this is now enabled for all nrf boards and most samd51 boards.
@idle owl Yeah, I think that if you tape the white part to the metal part it should be fine
@tulip sleet there are ".rst" docs in ulab. any idea if/how we can slurp those in ?
Fair enough @trim elm
I think the issues happen when it gets in-between the white part and the rest of the screen
This ready for another look?
The mac is trying to repeatedly start the external mass storage device back up and then timing out. It shouldn't crash like it does.
oh should have used ulab.spectrum directly, not fft
@tulip sleet sadly, it doesn't fit on kicksat. /usr/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: region `FLASH_FIRMWARE' overflowed by 16556 bytes
My CLUE board is experiencing some phantom input and is going into the REPL when a program is done running without input from me. I suspect the two are related.
Test setup:
MacBook Pro 13" w/ touchbar running Mojave 10.14.6 (18G87)
Micro USB cable from adafruit: https://www.adafruit.com/product/4148
CalDigit TS3 Plus Thunderbolt 3 Dock
I was testing Dylan's code by copying over files using cp -R from his repo, as well as some libs from the bundle. When it first occurred I hadn'...
@onyx hinge they can do some squeezing 🙂 but i'm really happy it's on most everything else
The above images will appear right side up when clicked
Thank you for this first draft! I've replied with a couple high level questions.
How is this different than struct? It'd be great to separate the implementation of these functions from the definition and arg parsing so that they are better documented. Right now, it is unclear what the _eve module would contain.
I'd recommend calling this _eve. The _ prefix in Python denotes that it is private and the api may change without warning. Then you can call the high level library eve.
This ready for another look?
Yes, it didn't give me the prompt to ask for your re-review. It's all set.
@onyx hinge I'll approve after the build is fixed
@tulip sleet OK, I'm also trying to incorporate the docs
circuitpython libraries now used in our media players for lighting control. BLE is next
though they are not particularly well aligned with circuitpython's style
eventually the waterfall demo gets an exception because fft resulted in a NaN. huh.
@tulip sleet @onyx hinge how much room is left in most builds?
the lib is about 35kB
metro m4 express and airlift both have about 150kB flash left with this PR
@hierophect Please always add a comment mentioning me. They are easiest to see.
(for en_US)
i'm checking pinyin
141kB pinyin on pygamer
I was thinking we need an adafruit.io dashboard of build sizes
yes!
internal filesystem
it doesn't have spi flash
ah
is ulab meant to be a subset of numpy?
functionally, yes, a tiny subset, i don't know how the API differs, but it tries to be roughly the s ame
"conforms to numpy as much as possible"; I don't have enough numpy experience to really say
@onyx hinge can ya give me a CLUE uf2
@meager fog yeah!
it's a lot of work to shared-binding it, and we'd break pulling from upstream. I think that's a good long-term goal, and it can be done invisibly later
just move the __init__.c across and document it
you don't need to worry about splitting the implementation
I gotta go 🌮 but I'll be back
Nice job on this! I'd love to see the init.c moved to shared-bindings with the docs copied in. That way it'll appear here like other modules: https://circuitpython.readthedocs.io/en/latest/shared-bindings/index.html I don't expect the functions themselves to be split. Let's just document it in our standard way.
@slender iron @onyx hinge it will be no worse than json and re are in their current form
they should be improved too
I don't think its more than a days work to move everything around
sure i agree with that
the docs are already here: https://github.com/adafruit/circuitpython-ulab/blob/master/docs/manual/source/ulab.rst
a numpy-like fast vector module for circuitpython (forked from https://github.com/v923z/micropython-ulab) - adafruit/circuitpython-ulab
so can't we just link to the .rst instead of pulling it into __init__.c ?
I'd rather not because the rst isn't structured well
functions aren't marked as such for example
Try reproducing it without the dock too. It feels similar to modem manager even though this is a mac.
we can PR improvements back to upstream, but I don't think that should be a blocker to incorporating it. I'm worried about making changes now without a plan as to how to keep compatible with upstream
I don't think it's useful until it is well documented
linking to their own read the docs leaves confusion about what version we have
we have forked it, so we can link to our readthedoc
for the fork
i have used numpy. for someone familiar with numpy it is pretty well documented
tested mic waterfall - works great! will be interesting to see what other projects we can do :)
I'd rather just reformat the docs now so that it's done. having the shared-bindings document structure gets us much closer to generating stubs for IDEs as well
@slender iron @tulip sleet As I work on the core temp and VREF functions, I'm noticing that a VBAT read is kind of conspicuously absent. Is that something that's implemented elsewhere or just not priority?
folks who haven't used numpy should be able to use it based on our docs
we don't have to put it in the imminent beta.5
i'm not sure that's necessary, since we don't document core python stuff either; we refer people to the CPython doc
we don't need ulab in beta.5 either
I don't want to rush it in
its not much work to get the docs in standard form
i agree we could wait a bit. if we could pr the doc changes back to upstream that would be good
@ionic elk do you mean reading from the voltage divider?
we do document the subsets of cpython modules we implement
there are some python examples about how to read the VBAT voltage divider
with analogin
@tulip sleet no, from a dedicated VBAT pin. Which on looking, I guess the SAMDs don't have, so that answers that question.
Thought that was an ARM specification thing but I guess not.
nah, it's just a voltage divider fed into an available ADC pin
and then i think convention is to name that pin VBAT
Yeah the STM32s have a bunch of register settings and stuff related to it so I thought it was more of a core feature.
I could add the functionality if desired, might be nice for battery using people.
M105 was a model of Palm... https://en.wikipedia.org/wiki/Palm_m100_series seems unlikely but if ya had the sync manager on that would probably send something like "M105" over and over :D
@slender iron I'll look at drafting documentation in our "style" in a __init__.c file, reusing text from ulab.rst where possible. That seemed to be the conclusion of the discussion?
yes, i was chomping at the bit, but we can clean it up more first
I like knowing that others are enthusiastic but there's no reason to hurry
@onyx hinge that would be awesome. I don't think it's too much work so I think it is worth doing
consistency is very helpful
Upstream docs are 3300 lines so.. I am not sure it will be instant
micropython veterans: do you know the difference between adc.c and machine_adc.c? They seem completely redundant.
@ionic elk machine_whatever.c is probably for the machine native module. I don't know why there are two.
@onyx hinge true. but hopefully faster than writing it yourself
It's all good, I'll know the markup much better by the end too
Hi, I made a "thing" that fetch Cheerlight color in JSON and beacon it in BLE: https://twitter.com/DavidGlaude/status/1224816939173908481 .
The nRF52840 Feather Express use the AirLift FeatherWing to get the current @cheerlights color in JSON, then it advertisement in BLE the new color that is displayed on an ItsyBitsy nRF52840 and a Circuit Playground Bluefruit.
All this written in @CircuitPython.
Code avail...
I believe this should have been the ultimate demo...
I will try to document this a bit better.
Hi folks, is this the right place to ask dumb questions about porting CircuitPython? Specifically mimxrt1021?
I'm whacking into a hardfault in flexspi_nor_flash_init but I don't really understand how the XIP is being handled while the FlexSPI is undergoing brain surgery in those routines. My board is losing it's marbles somewhere inside the flash init process. Unfortunately it's a custom board with the flash on the alternate pins (so no DQS available) otherwise I guess it would've come straight up.
@fallen anvil I find that when working with something new, it is best to work with the standard configuration a bit before jumping into something super custom. This has saved me many headaches.
I have the standard configuration working fine on a Teensy4, its the leap into the unknown thats got me fooled.
(Teensy4 is 1062, but it's close 🙂 )
@fallen anvil Ah, OK. Those unknowns are where the fun really starts though! 🙂
he he...tell me about it!
I just don't see anywhere where the XIP is switched off or otherwise accomodated while the flash is reconfigured. I guess I'm missing something, but I don't see what.
Is there an example for the configuration you want to use that you can refer to?
I'm starting from the 1021 config. There should really only be one thing to change (famous last words)..changing kFLEXSPI_ReadSampleClkLoopbackFromDqsPad to be kFLEXSPI_ReadSampleClkLoopbackInternally . Certainly that gets me booted and into running code, but then I hit a wall again when the flash comes to be reconfigured in the main startup code.
I will not be any help there, sorry. I am just trying to point at things that have messed me up in the past, like not looking for examples. Sometimes, even within a family of parts there can be differences.
@fallen anvil @indigo wedge would be the one to talk to about i.mx rt stuff.
Oh, there are certainly differences amongst this family! Thanks for trying. Hopefully we can leave this hanging here and if arturo has more info they can ping later. I'm just worried that it might be relying on the Instruction cache while the flash is reconfigured, which would be bad mojo....but I can't believe that's the case, I've just missed something somewhere.
@tulip sleet Was it you who suggested the gamepad module to me yesterday?
Speaking of the gamepad library, are there any examples on how to expand use from one button to up to eight buttons? The one button example is a great starter, but it is difficult to figure from the docs how to expand that.
It does look like I will be able to use gamepad for all my switch related needs though. It works much better than I thought it would!
@timber mango yes, it was me. @stuck elbow wrote the library. The constructor takes a variable number of arguments, so you just add one more arg for each button. See the example here: https://circuitpython.readthedocs.io/en/latest/shared-bindings/gamepad/GamePad.html
That is the example I used to get it implemented into my script, since I am just using one button right now. But, how would I check for the second or third buttons? That is not clear to me at all.
At least now, I will not have to reconfigure and restart my script when I go to bed. I can just toggle the display off. 🙂
Bye for now. I will return later.
@fallen anvil ideally we wouldn't reinit the flexspi at all and rely on the boot rom to get it going
Hiya. Yes, thats what I've done now, and it's working fine. Not sure why it's being reconfigured in the setup code, which is what I really wanted to ask about
There doesn't seem to be any provision for preventing XIP doing a fetch from the Flash while its being reconfigured, which isn't a good thing, if my understanding is correct.
ya, that is my understanding too
I believe those flash functions are placed in ram though
so as long as interrupts are off it should be fine
Then I think we'd better clean it up, but I don't want to go blundering through someone elses codebase making changes and submitting patches without some discussion first to make sure I understand.
For me, at least, those routines are in flash. Perhaps I banjaxed the linker, I'll check...getting late here now.
I'm happy to discuss it. I'd love to see another person working on imx
I redid the linker stuff
to get the TCMs going
I've spent a long time on imxrt, did a fair bit of work bringing NuttX up on it. Would be nice to see this running well.
I have a custom board with a fair few perhiperals which can be open sourced if its useful to anyone....CAN, Ethernet, RS485, RS232, RTC, SD Card, ADC, WiFi and a Pi expansion header.
we'd be happy to have the code for it in circuitpython and having schematics would be nice to have too
you can have the KiCad if it's useful...what goes around comes around
Code looks good to me! @ladyada is testing it
nice!! very cool
I'm in seattle and will try to respond to you early tomorrow in case you want to sync up
feel free to pr any code changes you have
OK. I'm UK so on GMT at the moment. Will try and sort this out now I have some idea where it's at. I propose to move the flash configuration into the boot_hdr.conf section and away from mainline code, which also serves to solve my other problem that I don't have DQS available on my board....but let's see how tomorrow goes.
👍
@half sedge nice! 
why would my clue's status LED be changing between red and green while running my code, if I'm not otherwise doing it on purpose?
@onyx hinge I have nothing but snarky retorts.
huh, I guess if nobody else can help me I'll take that instead
it's trying to give you a holiday clue
or play a tiny game of red light green light
and you're not playing along.
sorry
Don't apologise to me, apologise to the CLUE.
@onyx hinge seriously though, what code are you running?
this fft spectrogram code
oh hmm.
no intentional neopixel use
the ulab code is pretty complicated anyway
no, because the display doesn't reset, it keeps on working
How fast is it changing?
and if you introduce intentional delay in your main loop does it affect the speed of the neopixel changing?
it was doing it a few times a minute maybe?
I started heavily revising the code and now it doesn't run 🙂
feature!
Ah, definitely been there
Yeah, it's like the bob ross "happy little trees" of programming
@onyx hinge the status led flickers red on disk access
oh maybe linux is doing something behind my back
https://www.youtube.com/watch?v=B8MQhlYXZjk @meager fog much more fluid display when not scrolling!
CircuitPython can do real time audio analysis (like FFT) with the upcoming incorporation of the "ulab" numeric library.
Haven't gotten this one before: You are in safe mode: something unanticipated happened. CircuitPython core code crashed hard. Whoops! Nordic Soft Device failure assertion.
@onyx hinge if only it was running 90 degrees to that and we actually used the display's scroll
@slender iron I can tell you are already working on displayio 2.0 in your head
there are always things I want to do
I think the next display thing will be supporting 24bit output peripherals and bigger screens
it seems like a real challenge getting good framerates and memory usage for so many different use cases
I'm starting to appreciate that fact more the more time I spend with it
the way the original scrolling style display was coded I think gets a "wow clever", but it does not hit a fast case for the refresh code. It makes a TileGrid where each row of the screen is one tile. So to scroll, you just reassign the tile indices. But of couse behind the screen it becomes necessary to refresh the whole screen.
the displays are designed to scroll in one direction
we just don't take advantage of it
to change a row content you assign to the bitmap, but I think that also causes the whole containing TileGrid to be redrawn, so the fast non-scrolling version uses a bitmap where there's 1 pixel with each value 0..len(palette)-1 and you assign the TileGrid elements to change the display. That's the most performant way I came up with
no general bitblt in the LCD controllers yet? 🙁
the tilegrid should have a fast path for updating a rectangle over the pixels you've changed
when I assign tile grid elements like grid[x,y] = 37
I agree, that's what I think I see happening
that should keep a bounds of the tiles updated
there is a fast path for a tilegrid with a single bitmap
what I think the original fft demo was doing was assigning bitmap[x,y]
should that be a fast path too, and maybe I'm mistaken in what I thought I was seeing?
editing the bitmap should only cause the damaged area to update
in the case where the whole TileGrid is 1 tile only? This is 1x120 tiles (WxH) or something
I didn't test the 1x1 tiles + assign to bitmap[x,y] case
right, 1x1 tiles
ok
yes, that scrolls fast too. Thanks for the tips!
that's the more "natural" way to do it?
¯_(ツ)_/¯
@onyx hinge yeah not scrolling is what i recommend
@onyx hinge do you want to gimme new code
jas!
if you really want the slow mode, you can hold down the A button while turning on / resetting
probably should just remove the scrolling version entirely
yeah i dont think its necessary
like there's no strong UI need for scrolling
you found that its fastest to do with tilemaps instead of assigning bitmap elements?
not exactly
there was a combination of using tilemap + assigning bitmap elements that was just as slow as scrolling
so we won't use that one
scott didn't seem to care which of 2 fast ways of updating a row at a time I used
they seem about the same speed. to me, the one which modifies the bitmap makes a bit more sense.
npnp
@idle owl I am going to do the beta soon. Was waiting for merge build to finish before I make a release
@tulip sleet No worries, I dug up the latest on s3 for CLUE and it's working. I loaded Arduino on it and realised I didn't remember which of the firmware.uf2s was the working one for CP.
I'll keep everyone updated about how quickly it goes.
we can whet appetites on the Wed shows
upstream has a lot of verbage, I have a feeling what we do will be smaller and more focused; and they have a readthedocs so we can potentially link to it especially if people want more background on things.
LaTeX equations about FFTs & such
Automated website update for release 5.0.0-beta.5 by Blinka.
New boards:
- feather_bluefruit_sense
- ndgarage_ndbit6
- meowbit_v121
- teensy40
- imxrt1060_evk
- imxrt1020_evk
clue was in beta4, or is the list wrong?
right, it was already in beta 4
i forgot about the others. But the beta.4 CLUE was not Rev C (the alpha)
(oops typing in wrong window)
@tidal kiln using the fft ^ with the recorder you can see why its hard to know what note is being played!
there's lots of harmonics
while not working on docs tomorrow I'll see if ulab can speed my "1d wave simulation" neopixel demo thingy that already got an FPS boost from pixelbuf...!
I think it should be adaptable to use ulab for the heavy math but it'll be a learning experience 🎒
I think this is being caused by Cura:
https://ultimaker.com/software/ultimaker-cura
I'll double check tomorrow, but my CLUE was behaving for most of the day, and shortly after opening Cura it started having the issue I reported again.
It wouldn't surprise me if Cura is doing some sort of scanning for serial ports that look like printers.
All builds finished without error, but we'll see about the uploads.
Not with a CLUE, but I have also witnessed Cura cause interruption and other weirdness with connected Circuit Python devices.
technically - its anything based on Marlin https://marlinfw.org/docs/gcode/M105.html
updated faster non-scrolling version : code.txt
@onyx hinge I'm trying out the new Mixer and WaveFile from 5.0.0 beta.5 with this NeoTrellis M4 tone generator https://github.com/FoamyGuy/NeoTrellis-M4-CircuitPython-Music-Fun with the new version I get an extra pop sound when I play on voice 0 of the Mixer. If I alter the code to not use voice 0 but still play the same wave file I don't hear the pop. On beta.4 I had no pops on any voices or any wave files.
I am off to bed now but tomorrow I can try to replicate with a more isolated example.
Beta.5 - got it!
One of these weeks, I am going to have to declare a Circuitpython play week and tinker with all these new fangled gizmos. 🙂
I am especially interested in any Machine Learning stuff.
Unfortunately, I think I may have to replace my Jetson Nano. 😦
Hey @lone axle, have you hidden a MIDI sequencer in there anywhere? 😉
@jepler this might be a good one to pick up soonish (since ulab would be a good pairint)
@rhooper please try https://github.com/adafruit/circuitpython/pull/2583 - i think its the best general-purpose solution for FFT needs :)
https://blog.adafruit.com/2020/02/04/its-fft-tuesday-testing-out-mic-fft-on-circuitpython-circuitpython-adafruit-fft/
is it normal i cant set any frequency other than 100Khz and 250KHz? usually 400Khz and 800Khz are possible, not sure if its a divisor thing :)
@lone axle that's an interesting observation. "weird, shouldn't happen". Go ahead and file an issue if you don't mind
and yes if you can create a more isolated example that's sure appreciated
@onyx hinge will do. Is the proper place for that the main circuitpython repo?
yes, audiocore is right in the main repo
Ok. Ill work on a self contained example today and get it created. Thank you
@timber mango Hehe, no MIDI sequencer yet. This is essentially my first real dive into the audio world, still working with just a few tones atm. MIDI and sequencing are both definitely on the radar though 🙂
The STM32 port isn't being included in the module Support Matrix on RTD.
The port needs to be added here:
https://github.com/adafruit/circuitpython/blob/master/docs/shared_bindings_matrix.py#L29
Note: could possibly include additional tweaks here to handle chipset definitions.
I marked it as "Long term",...
I2C frequency setting was assuming wrong default, and also the logic was just wrong.
Ok, it appears kittenbot_meowbit was renamed to meowbit_v121 since kittenbot_meowbit no longer appears in the assets. @hierophect, can you confirm?
@makermelissa I've always had it as meowbit_v121 - where did kittenbot_meowbit come from? I'm happy to switch to that if needed.
Thanks @hierophect. I probably saw it was named that in the circuitpython boards at some point. No problem, I can change it on my end.
Renamed meowbit to the correct name. Also, added a very basic template for ndbit6, though there is pretty much no searchable information I could find about it, but this is better than it saying unknown.
Fixes #399.
hum ulab will have some bug work to do too unless this is a deliberate difference ```>>> len(numpy.linspace(-10, 10, 201))
201
len(ulab.linspace(-10, 10, 201))
50
201
``` requires num= to be a named argment I guess
Sorry, I haven't done much docs stuff. STM32 is pretty close to NRF in terms of how mpconfigboard.mk is laid out. Is there anything else that I need to change, beyond adding stm32 to this file?
>>> ulab.dot(ulab.zeros(3), 0)
Segmentation fault
Moves moves the main hero images to their own folder and adds a _config.yml setting to set the hero image that is currently active.
@tidal kiln FORGOT TO CALL SHOW() AGAIN. 🤦
careful. python is case sensitive. 🙂
(╯°□°)╯︵ ┻━┻
table.auto_flip = True
table.show()
@hierophect no need to be sorry, in my opinion. Its a largely undocumented step, and not easily visible. Could probably be added to the "How to add a new board" learn guide.
Adding the port's folder name to the SUPPORTED_PORTS list is the starting point. Then I would build the docs and check that everything is correct. If not, the Note above is probably related to the failure point. I haven't been following the STM code-base that closely, so I'm not immediately aware of any idiosyncras...
@meager fog totes! and some notes worse than others.
@tulip sleet thanks for releasing beta.5!
@tannewt thanks for these - I'll get started on them later today.
For now I am stuck on what I think is an internals difference between MicroPython and CircuitPython. I wonder if you have any ideas on what might be going on.
I'm using this reduced module for testing, which makes a class EVEL with one method, "flush". The problem is that when EVEL is subclassed, the "self" that flush receives is not an EVEL.
Demo case:
from eveL import EVEL
print('works fine: EVEL')
...
@onyx hinge fft and waterfall demo are awesome!
yay default freq is now 400khz
Is there a set of instructions for building the docs locally?
@raven canopy do we need to automatically create personal access tokens for adabot still? https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api/#authenticating-using-query-parameters
This PR adds the core temperature and core voltage measurements to the Microcontroller module. Resolves #2194.
Also includes some standardization of the mphalport files to match the other ports, though I admit that's just cargo-cult programming on my part. It's essentially a micropython compatibility layer, correct?
@tidal kiln 👍
Apropos of nothing; I recently had to manually set a TIM3 interrupt on the stm32f407 and found out that the APB1 clock is 42 MHz except when the TIM3 prescaler is not 1, then it's 84 MHz.... Had me searching for a while. (Same for every timer on apb1.)
@slender iron for the calls to the API, yes. its the access_token query string that is now deprecated. it needs to be changed to use the HTTP Authorization header. it lies in the github_requests.py function, from when i looked last night when Kattni pointed it out to me. i plan on working it here in a few; i'm playing hookey today. 😄
Yes, this is a deliberate difference. We want native code to be able to call functions on a subclass. (_pixelbuf needs this) To get the native struct do something like: mp_obj_t native_pixelbuf = mp_instance_cast_to_native_base(pixelbuf_obj, &pixelbuf_pixelbuf_type); (from here)
@raven canopy cool thanks! go back to hookey 🙂
hookey days are spent writing code! usually. 😉
I've always just opened and copied the CI step. 🤣 https://github.com/adafruit/circuitpython/blob/master/.github/workflows/build.yml#L63
Python environment can be tricky. IIRC, I have a pyenv setup for building. Here are the deps:
pip install Sphinx sphinx-rtd-theme recommonmark sphinxcontrib-svg2pdfconverter
Sounds good, thanks for the advice. I'll set up an environment and see how it goes.
@timber mango that sounds like the item documented in the PWMOut.c file in the ST port:
// If the APB prescaler is 1, then the timer clock is equal to its respective
// APB clock. Otherwise (APB prescaler > 1) the timer clock is twice its
// respective APB clock. See DM00031020 Rev 4, page 115.
But it sounds like you're talking about the Timer prescaler, which is confusing?
@ionic elk Ah ok, nice. Yeah i found it in the reference manual.
Oh! Errrr, yeah timer prescaler i thought.
I try to document weird stuff like this in the code itself! Or carry it over in cases where Micropython made note of it, as in this case
So it's probably a good idea to go check out the module c file first, before diving too deep. There might be an explanation right there in the code.
ST has LOTS of weird little cases like this.
Cheers & good luck
Hmmm. There's a translations failure in the CI, doesn't look like it's anything to do with my additions.
In fact I can demonstrate the same problem the existing socket.socket class - here:
Adafruit CircuitPython 5.0.0-beta.4-130-g8347f2b5c-dirty on 2020-02-05; Adafruit Metro M4 Express with samd51j19
>>>
>>> import socket
>>> u = socket.socket()
>>> u.settimeout(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 128] ENOTCONN
>>>
>>>
>>>
>>> class Bar(socket.socket):
... pass
...
...
...
>>> v = Bar()
>>> v.se...
hmmm it looks like the way ulab was configured it is using double precision. Should probably NOT do that
Aha, that's what I needed. Thanks.
Sat down with a serial sniffer for a while and found Cura is doing a bit of hyper-specific handshaking when it connects to a device. One of the packets it sends is "IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_TIMEOUTS" which contained "00 00 00 00 00 00 00 00 e8 03 00 00 00 00 00 00 80 96 98 00" when this message is played back from a python script I wrote, we get kicked into repl every time.
I suspect that "\x03" in the center of the message is the issue. Cura is sending Ctrl+C as part o...
wow good detective work :D i think we just have to warn folks Cura is very 'nosy'
I am using all pins on the ItsyBitsy M4 and would need more...
So I tried to do this:
BTSelect = digitalio.DigitalInOut(microcontroller.pin.PA30)
And was very happy that I can also use PA30 & PA31 (the SWCLK & SWDIO pins on the "other end" of the ItsyBitsy)
But now when I am using them after powering on a runtime error happens on the first boot.
If I the do a reset all works fine!
Is there a way to "Deinit" all pins at startup of a script?
Can I somehow deinit a pin even thou...
How is this for sensor node code?
"""This is a basic sensor node that uses the internal temperature sensor."""
import adafruit_ble_broadcastnet
import microcontroller
import time
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
last_temperature = None
while True:
temp = microcontroller.cpu.temperature
# Round the temperature to the nearest degree to reduce how often it is
# broadcast.
temp = round(temp, 0)
if temp != last_temperature:
measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
measurement.temperature = temp
print(measurement)
adafruit_ble_broadcastnet.broadcast(measurement)
last_temperature = temp
time.sleep(10)
Is there any way to reset a pin from circuitpython itself? I was typing a reply to that issue and realized that I don't think any of those functions are actually exposed.
reset a pin like deinit?
Can you de-init a pin without it being part of anything?
all pins should be deinit before the VM runs unless it is used by the supervisor
@slender iron the question is whether you can manually remove a pin from never_reset from circuitpython itself
Is that something that's a hazard to add? I've also sometimes wanted that functionality, to manually release a pin when it was claimed by something I didn't want enabled.
you shouldn't need it
The above case is reclaiming a SWD pin, for instance
which is added to Never Reset at startup and cannot be released
protecting SWD is intentional because debugging is much more difficult if it is used
this effect would go away on reset, though, no?
yes but only until the code reclaims it again
Well, if you're sure, I'll tell this guy there are no plans to add it
I can reply too. the better response is pointing them to where its done and suggesting they compile it themselves
true
Just saw the fft demo based on micro python ulab, how did this get included in circuitpython? Does it need to be compiled with the whole circuitpython src?
@slender iron thanks! I’ll have to update my waterfall code with this faster fft
I think @onyx hinge already has 🙂
@arctic dome Hi! I was about to step away, but I'd be happy to share my code with you before I go.
and thanks for the original version, it was really easy to build on top of
Ya thanks!
@slender iron I'm not sure where atmel even disables the SWD pins so I guess I've got to defer that one to you
kk, I'll reply tomorrow when I circle back to email
I think it's a function of the pinmux
@arctic dome you are Thomas S. ?
Ya
okay, didn't know your Discord handle
Same as twitter
It's time to do some cooking but if you mention me I'll be sure to read it. ttyl!
The SWD pins are intentionally protected on startup, as debugging is very difficult without them. There isn't really an interface for releasing them either (I'm not sure why they're even available on your first startup). But you could try removing them from the protected list and rebuilding circuitpython. I'm not sure where the list is for Atmel-SAMD but @tannewt should be able to help you out tomorrow.
@slender iron I would bring last_temperature=temp under the if.
@timber mango why?
Only needs updating if different
👍
When we are mentioned and we are no here, how do we get the mentions when we come back?
@timber mango For the most part, you have to scroll back to find it. However, the search function has a mentions: option which means you can search for mentions:geekguy with your full handle, and it should bring up the messages.
@idle owl Oh, OK, thanks!
Here is a more complex sensor (Clue): https://gist.github.com/tannewt/a471dfa780617b0973a32f19bb727e90
@timber mango ☝️
@timber mango on the desktop client there's an "@" in the upper right corner, clicking that should get you your mentions
Per Phil. He stated that such documentation should be in markdown on circuitpython.org itself.
In this PR, no accompanying images are used. If images are desired, we will need to determine where to put them. Under /assets or under /doc or somewhere else.
@slender iron nice sensor node - could also try kattni's lovely new library, would save ya some init's 🙂
Images automagically compressed by Calibre's image-actions ✨
Compression reduced images by 32.6%, saving 4.07 MB
| Filename | Before | After | Improvement |
|---|---|---|---|
assets/images/boards/large/clue_nrf52840_express.jpg |
323.71 KB | 96.22 KB | -70.3% |
assets/images/boards/large/feather_bluefruit_sense.jpg |
260.22 KB | 137.83 KB | -47.0% |
| `assets/images/boards/large/imxrt1010_evk.... |
I didn't ask GitHub to do anything with the images, must be automatic.....
It is! And it's ok for this PR I think, it's simply optimizing the file sizes (the new heroes are much smaller).
The issue I think is that normally it doesn't run properly as we push forked PR from our own repositories, so it suddenly has a bunch of images to optimize from previous pull requests. I'll look into that, as I'd like it to optimize images on each PR that comes in with new images.
While working on the electronics for my Little Red Rover, I realized that I have the starting point of other possible projects, including a NEST-type thermostat, and even a master for a home control system.
I have not figured out how an IMU could be useful in that though. 😃 😉
Will there ever be a Bluetooth module that will work with any Express or other board and Circuitpython?
Added reviewers as PT stated he would look at it after merge.
@meager fog @slender iron could we connect on priorities at some point this week? I've got the Espruinos on my list but beyond that it's kind of open - could do QSPI, flash improvements, PulseIO, audio, etc.
yep how about tomorrow?
sure
ok when scott's around we can figure out a time - afternoon ET is best for me
@hathach the _usbd_dev object is empty - where should I poke around to try and find the root cause of that?
p _usbd_dev
$2 = {{connected = 0 '\000', configured = 0 '\000', suspended = 0 '\000', remote_wakeup_en = 0 '\000', remote_wakeup_support = 0 '\000', self_powered = 0 '\000'}, itf2drv = '\377' <repeats 16 times>,
ep2drv = {"\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377"}, ep_status = {{{busy = false, stalled = false}, {busy = f...
@hathach the _usbd_dev object is empty - where should I poke around to try and find the root cause of that?
p _usbd_dev
$2 = {{connected = 0 '\000', configured = 0 '\000', suspended = 0 '\000', remote_wakeup_en = 0 '\000', remote_wakeup_support = 0 '\000', self_powered = 0 '\000'}, itf2drv = '\377' <repeats 16 times>,
ep2drv = {"\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377", "\377\377"}, ep_status = {{{busy = false, stalled = false}, {busy = f...
Drat! An M0 Express does not have enough memory to use the ESP32-WIFI FeatherWing.
Doc sometimes say "no M0" and sometimes say "M4 or nRF52840". But that was before so many more board were added...
@meager fog Now, I am going to have to solder stacking headers on my other Feather M4.
For CircuitPython use, a Feather M4 or nRF52840 works best - the M0 series does not have enough RAM in CircuitPython.
geek, you could use a doubler
@meager fog I know. That is why I am only buying M4 boards or later ones now.
Looks good! One formatting note below.
Requesting the addition of my 2 CircuitPython boards.
@timber mango @idle owl you can also click this to see a summary of mentions
ok ya just need to add the build lines to build.yml, goes in alphabetical
circuitbrains_deluxe_m4
circuitbrains_basic_m0
Thanks @split ocean!
Is there a way to find out how much memory a script and loaded libraries are using?
@split ocean Yeah Jeff pointed that out too. I was entirely unaware of that. Thanks to you as well.
Thank you for the explanation.
I have one more observation:
- I can catch the error I am getting in a try: except clause.
- If I do in the except part: microprocessor.reboot() I get into a "reboot loop"
- If I do in the except part: a supervisor.reload() I can see in the serial console the system constantly reloading...
So far so good; understood and reproducible.
But if I break the supervisor.reload() loop, by pressing the "reset" switch on the board the code will work fine.
No er...
@split ocean ah, I didn't know about the @!
@meager fog @ionic elk I'm around tomorrow except for lunch with a friend 11:45 - 1:30 pacific.
@gilded cradle Is CircuitPython_Display_Shapes in a usable state? I thought I remembered it being WIP.
As far as I know it is. There's only a few shapes right now and it should be stable, but maybe the WIP idea was because there had been discussion of adding more.
Fair enough. I need circles. Looks like it has circles.
yep
Ok right on, thanks. I will probably be pinging you with questions.
🙂
I used on on an Edge Badge a few months back to make a simple pong implementation. I didn't run into any trouble with it.
Nice, thanks for the confirmation.
@idle owl Hi, I just found kattni_debug_i2c.mpy in the bundle, not sure this is "normal".
@half sedge It's probably not. Means it got added from the wrong submodule.
I'll look into it.
@slender iron @meager fog 10am or 2pm would work well for me tomorrow, but anytime is fine, really.
@half sedge Thank you for catching it - it was accidentally included in a new lib, and therefore included in the bundle. Should be resolved in the next couple of days.
I'm now getting this same issue on the Espruino, but it doesn't occur on fresh feather builds, so I'm really puzzled as to what's up.
Found it, was just an oscillator oversight. Sorry for the trouble.
@tannewt this is tested and ready for review.
@tulip sleet nrf i2c on clue isn't working for me with a master build
OSError: [Errno 5] Input/output error```
limor and i noticed flakiness earlier; we are still debugging it;
kk
@tulip sleet how can I disable the default scan response? the SD can't do extended advertising with scan response
you mean disable via SD API or in the library?
i don't know the answer to either off the bat
I was thinking the library. I can modify the library so it doesn't do it for extended advertisements
ok, got it
ok great
Thank you to all of #circuitpython-dev for your help with all the XAC and other AT projects... this video shows LOTS of your code being used in great ways! https://youtu.be/bdDb-l_-ZYw
If you missed ATIA 2020's Maker Day, you missed a LOT! Here's a quick walk through -- join us next year in Orlando!
@slender iron I hate that Error 5! I have found that it is often a bogus error and after pressing Ctrl/D to restart enough times the script will start running perfectly.
Is there a way, from inside a running script, to find out how much memory it is using?
if that is on nrf then it sounds like dan is on the trail
there is a gc module
and it has gc.mem_free()
it doesn't account for fragmentation though
I get that error 5 a lot.
on nrf?
The SD can't do extended advertisements at the same time as scan response.
hrm. I haven't seen it there. are some sensors worse than others?
I get error 5 no matter what I am working with. I just keep restarting the script until it starts running normally. It really annoys me and breaks my flow.
Sometimes, I do have to wiggle a sensor though, like the vl53l0x which I get it on a lot.
hrm, weird
The vl53l0x is the only sensor I have where error 5 has been valid.
Very weird.
Now is a good example. I just saved a script to CIRCUITPY as main.py, it restarted, and here comes error 5 right away. 😫 The script will run fine after I restart it enough times.
wow @AndrewTribble great job! Thanks for tracking this down.
I'm content to close this.
the clue library made it super easy to convert gizmo thermometer for use with CLUE. Excited to play with the rest of the sensors.
@lone axle I so want a couple of the CLUE boards, but I will wait until they are in a full production versions. I see many possibilities!
I couldn't resist the chance to play with it
OK, time for me to heat up my soldering station and put some stacking headers on my other Feather M4 Express. I want to play with the ESP32SPI WiFi Featherwing.
@lone axle That little CLUE would be hard to resist for tinkering!
- How is this different than
struct?
The methods in this module (e.g. _vertex2f) align their arguments on bit boundaries, not the byte boundaries used by struct. Also these methods append the binary commands to an internal buffer, avoiding the overhead of constructing an ephemeral bytes object for the binary command.
- It'd be great to separate the implementation of these functions from the definition and arg parsing so that they are better documented.
So taking vertex2f, w...
@onyx hinge after poking around a bit more with a more isolated example I'm less sure about the nature of the issue I mentioned yesterday being as simple as voice 0 vs voice 1 on beta4 vs beta5. I'll do some more testing on some other devices and create an issue if needed when I understand it better.
Well, bummer, it appears that I did damage my AirLift FeatherWing when I soldered the stacking headers on to it. Oh well, I had to try.
I really hate soldering headers on to Feather and FeatherWing boards! I may have to stop buying feathers because I keep messing them up and can not afford to replace them. 😫
@timber mango if you post good pictures of your soldering (especially the bottom of the board if you're using stacking headers) on the forum, our experienced support folks can make suggestions about your soldering and whether it might be recoverable.
also describe your soldering setup
@tulip sleet I do not think suggestions would help. I know how to solder, but my eyes just can not handle the close together pins on the stacking headers. I do fine when soldering to breakout boards.
do you have a good magnifier or is it a matter of steady hands? I use an Opti-Visor when soldering: https://www.amazon.com/Donegan-OptiVisor-Headband-Magnifier-Magnification/dp/B0015IN8J6
I do not have any magnifier. I wish I did. I am sure that would help a LOT once I got used to working with it and soldering.
i have to use it when plugging in breadboard jumpers too.
A cheap pair of strong reading glasses (like +2.50) would work too.
there are visor like that that are less expensive. I am old enough that I have presbyopia, and need several different strengths of reading glasses. Further than 6 feet away or so I'm better than 20/20, but not close up.
That magnifier really looks nice, and it would probably work with my glasses. I will put one on my want list. Yeah, plugging in breadboard jumpers gets me frustrated too sometimes.
our local job lots store has reading glasses for like $3.99.
I wear the visor over my reading glasses.
I have doubled up reading glasses in an emergency. Anyway, give yourself a present for these. They will help a lot for many things (e.g. removing splinters, sewing, reading fine print).
Cool. That is the way I want to go. I prefer the hands free approach.
i have a desk swing lamp with a big lens and surrounding light, but I prefer the visor, because it moves with me.
The good news is that it appears I did NOT damage the Feather M4 Express I soldered tonight.
That is why I would prefer the visor, plus hands free.
I still wish Adafruit offered ALL Feather boards and Wings with headers already soldered on, but that would probably be a bit of a nightmare.
@slender iron FYI, MicroPython discussing auto-formatting of C code to enforce style: https://github.com/micropython/micropython/issues/4223 was reopened
#if (MODULE_ULAB_ENABLED)```
Where am I supposed to define that?
I've tried mpconfigport.h and also boards\pyportal\mpconfigboard.h but neither of them work for me.
@wind trellis are you trying to build the PR?
Trying to build from the circuitpython-ulab repository. Is that the PR?
Is there an issue with better instructions in it?
no, that is just the library. It is a submodule used inside adafruit/circuitpython
@wind trellis you want to build from jepler's PR here: https://github.com/adafruit/circuitpython/pull/2583
but it's still in process; he's improving the documentation. We can probably merge it in a day or two.
@timber mango we added a placeholder
what do you mean?
still awaiting info from the board designer
👍
OK, thanks @tulip sleet. I'll try cloning that.
I just mean we added it so it can be downloaded, but we are awaiting images, feature lists, etc.
I'm doing a project with the W25Q80DV external flash, and it looks like circuitpython only supports the W25Q80DL version. It looks like they're nearly identical, except the DV uses a flash device type of 0x40 instead of 0x60. I updated the code so I could use it for my project. I was wondering if it would be worth making a PR to integrate these changes, or if there was a reason only the W25Q80DL is supported.
Currently, we only support external flash device W25Q80DL. This adds support for the W25Q80DL. They are very similar, but they are not interoperable because of a different memory type.
See #2593
This is my first PR in this repo, so let me know if I need to make any changes!
Yay, success cloning and building ulab. Thanks again @tulip sleet. It's running now on my Pyportal and I'm logging the deltas I see vs real Numpy. Is there a preferred place for collecting them?
Thanks @tulip sleet I’ll chime in tomorrow. I think jimmo and I have the same sensibilities since we’re both ex google.
@lgnashold As far as I know, the only reason it hasn't been a board that needed it yet. Additions are welcome; perhaps even consider making a PR to add your board as well :)
For the sake of documenting the connection, this is issue in the Cura repo seems to be the one that represents the underlying issue:
@wind trellis you can attach them to our PR to add ulab. But I'm not sure how many we will address over time.
@wind trellis if you find places where ulab-micropython and numpy match, but ulab-circuitpython differs definitely report that to us
@lone axle When you put in a PR, since you have write access to the library repos, please request a review from CircuitPythonLibrarians using the review request link on the right side of the page. That way it notifies the review team. Otherwise, it can get missed. Thanks!
@onyx hinge How solid is your displayio
Nothing expert. Want me to take a look at something anyway? I do have a meeting to leave for in 10 minute though
It's a quick question that you may or may not have an answer to
Do you have any idea how to decide how big to make the group max_size?
I make it a number, sometimes it fails group full so I increase it arbitrarily, but I have no idea how to really determine that
hmmm
if you can exactly count the number of items you'll insert, then you could pick that number
sounds like that's not feasible
I don't know what items means though. Because I don't think it's related to the number of things you append to it
(insert? add? append? whatever we called that method)
what's the traceback look like when you get the message?
I haven't gotten it in a while, so I'm not sure
let me decrease it and get a traceback
Not exactly useful: code.py output: Traceback (most recent call last): File "code.py", line 17, in <module> RuntimeError: Group full
is it your "main group", or is it happening say when you are updating a label text? those are also size limited and might give the same message when you send a label that is too long (max_glyphs of Label) .. but no, that's not it
fails on the third append, with a group max_size of 2.
that at least makes sense
This is main group, but I'm appending shapes this time