#circuitpython-dev
1 messages Β· Page 237 of 1
powered it down and now it's using my spoofed time.
Ok, cool
or wait, maybe me trying to spoof "12:00" was a bad test, and that's what it defaults to.
lol
like a VCR
yeah, seems that's the case. I need to look closer at the openweather_graphics.py and see where it displays the time. Is this the esp32 deciding?
I think the esp32 is just grabbing web data whenever CP tells it to
It looks like PyPortal does an import rtc and then sets the rtc via rtc.RTC().datetime = now in the get_local_time() function
ah, looks like it there's the 12:00 in the update_time function.
Yeah, it looks like it's getting the time from time.localtime()
oh, sure enough.
Looks like it would be easiest to create a time.struct_time(), set the rtc with your spoofed time and go from there.
Just use
now = time.struct_time((year, month, mday, hours, minutes, seconds, week_day, year_day, is_dst))
rtc.RTC().datetime = now
and fill in the variables with the spoofed data
week_day is 0-6
is_dst is 0 or 1, etc
You just saved me so much time as I was about to dive into what that struct_time() format needed to be :)
Cool. I did a bunch of struct_time stuff with the RTC featherwing
@tulip sleet current master build allow me to mount/access the SD CArd with displayio active ```
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
Adafruit CircuitPython 4.0.0-beta.2-195-g233cfcd4a on 2019-03-05; Adafruit Feather nRF52840 Express with nRF52840
import sdmount_lib
import hello
Howdy
some progress with current master build and SPI
current master build allow me to mount/access the SD CArd with displayio active
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
Adafruit CircuitPython 4.0.0-beta.2-195-g233cfcd4a on 2019-03-05; Adafruit Feather nRF52840 Express with nRF52840
>>>
>>>
>>> import sdmount_lib
>>> import hello
Howdy
>>>
``` in the above case hello.py is on the SD Card
sdmount_lib.py
import adafruit_sdc...
@gilded cradle OK, that worked great, thanks again.
Sweet. Glad I could help.
@pastel panther lemme know if yr around we can looka @ ina
i can fix register and you can test
@solar whale it can work somtimes, but the fundamental problem needs to be fixed still
slideshowsd works on the pyportal π at least this time
@meager fog I'm afk until the afternoon but I can ping you when I get back
I don't wanna block you so either you can give it a go and I can test later or I can hack on it when I get home
i think we sorta have to do it in tandem
@pastel panther do you have a rough ETA you'll be around?
i can def start
but i just knooooooooow itll need a tweak from u
Of course. Lemme check the schedule
Should be back around 430 EST, later if the trains don't cooperate, earlier if they do
Success or failure of starting a display-bus transaction is now checked. For some routines, we busy-wait for the bus. For the background display refresh task, we just give up if the bus is not currently available.
Meant to fix #1612 and #1619.
That feeling when you're hacking and the code flows smoothly from your mind, out your fingers, and into the editor.
Haha
sometimes
It's like writing.... dump it on paper as fast as you can... edit later
It also assumes you have the design fleshed out in your head already.
Ran a test on a feather_nerf52840 with a TFT featherwing --If I configure displayio then run the stmpe610 test using SPI, the stmpe610 test runs normally, but it causes the display to be deactivated -- that is I no longer see REPL output on the screen and even after a soft reboot, I can't get the REPL to show up on the screen again. If I run the slideshow - it does not show any images. No erros, but no images. If I hard reset, the slideshow (non-sd) runs normally. The slideshow from the SD c...
on a pyportal slideshowsd seems to run fine
@tulip sleet I hope my comments were clear enough -- with pr 1620 using an SPI device after setting up displayio seems to work, but it effectively disables the displayio device
sort of like doing displayio.release_displays()
but I can't get it back with out a hard RESET
@timber mango I'm a regular tuber
@solar whale that is helpful - I only tested on a pyportal. I'm pretty sure issue is that the stmpe simple test grabs the bus and never releases it, whereas displayio is better behaved. The simpletest should probably be fixed. Does this make sense to you?
it's not polite to hog the bus
looking...
I'll have to see if the driver support the context manager -- there may be drivers that do not have de_inits ...
yes, I'm confused about that, the read_data() should be releasing the bus...
_read_register() and _write_register_byte() are using the context manager, but maybe they're running so fast that they lock out the displayio tries. Could you try to put a delay in the read_data() loop?
the pyportal does not have an issue with SPI and the esp32
it uses separate SPI buses to talk to them, I think.
ah -- and no easy way to connect an SPI device to it.
Ok -- I'll play with the STMPE driver -- I can also try some other SPI devices.
actually, pyportal uses an 8-bit bus to talk to the display, not SPI, and ESP and touch have separate SPI buses
so my test on pyportal isn't very interesting
i forgot scott switched to ParallelBus for PyPortal
ah -- so not comparable -- I'mm also puzzled why SDCard slideshow does not work with the featherwing
also kills the displayio output
could also be contention on the SPI bus, or maybe I've made an error in my PR.
nah -- that could not be it π
in there, could try a pause after reading the file.
ok -- I'll try some tests
wait, hmm, I'm thinking of a possible error I might have made, that when the display update is called in the background, the SPI bus has been grabbed by the code that displays the image, and that's locking out the background task. I'll take a look soon. I'm in the middle of writing up the release notes for the next beta release.
np -- no rush
also as in #1612, with this PR I can still mount/access the SDCard with the displayio device active -- teh REPL is echoing all the activity running a script from the SDCard.
@tulip sleet a delay in the stmpe610 read loop does work -- the screeen keeps updating the REPL even after control-C out of the program
it's not a great way to run the stmpe610, but it does not hang the display π
as suggested by @dhalbert Tried adding a delay in the stmpe610 read_data loop. Added a .25 sec delay -- this works -- the display continues to echo the REPL throughout the test and after the program is stopped with a control-c.
@gusty topaz looks like $20 for 3 boards if you want to get them from OSH Park (https://oshpark.com/shared_projects/7xQbrUxa)
Keep in mind you'll also need to buy components if you don't have them on-hand. See the github's interactive parts list for those details.
@tulip sleet FYI ran into thsi build current master ```
Build metro_m0_express for de_DE took 16.40s and failed
make: Entering directory '/home/jerryneedell/projects/adafruit_github/circuitpython_master/ports/atmel-samd'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
-32 bytes free in flash out of 253696 bytes ( 247.75 kb ).
24076 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).
Too little flash!!!
Makefile:308: recipe for target 'build-metro_m0_express/firmware.elf' failed
make: *** [build-metro_m0_express/firmware.elf] Error 255
make: *** Deleting file 'build-metro_m0_express/firmware.elf'
make: Leaving directory '/home/jerryneedell/projects/adafruit_github/circuitpython_master/ports/atmel-samd'
@solar whale π±
bleh, we'll have to squeeze a little bit more
did travis complain?
hmm, no
odd -- so far -- just the German Metro_m0
i get -52 bytes free, quite odd
finished initial draft of release notes, will look at SPI contention now
may well be the stmpe610 driver that is misbehaved -- the delay helped a lot.
it get a big buffer of data when touched and does a lot of reads.
I have to go AFK for a bit -- let me know if there is anything you want me to try.
hey @meager fog I'm back online if you have something for me to test
heya @pastel panther that was fast
ok yeah lets take a look
for register (plain) you can use "<H" or whatever, right?
RWBits first, then RWBit
can i give you RWbit first π
ok π
I know those feels. Then I don't want to have coffee 'cause I'll be up till 4
That's why we have sweet tea in the south. π
I love sweet tea but it's still full of caffeine. Don't let them fool you! With their mint juleps and boiled peanuts!
:non-existant-shifty-eyed-emoji:
that'll do π
@solar whale I'm not sure there's anything wrong with my code, but both the SD library and the SMPTE are good at hogging the SPI bus. The displayio background task can't do much if the python code running is holding on to the bus most of the time.
@pastel panther ok i commited a fix for RWBit
ok, let me grab it
I can try calling the background task as soon as someone frees up the bus, maybe.
i'll set up a slideshow on a featherwing tft and try that
@pastel panther but that's why the sugar is added. to counteract the caffeine! π
not sure that's how that works but π
hehe
I thought it enhanced it
resists urge to paste Super Troopers gif
π
@meager fog
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "adafruit_register/i2c_bits.py", line 58, in __get__
File "adafruit_register/i2c_bits.py", line 58, in __get__
File "adafruit_bus_device/i2c_device.py", line 167, in write_then_readinto
File "adafruit_bus_device/i2c_device.py", line 97, in readinto
ValueError: Buffer must be at least length 1
from calling this guy:
ok bits isn't done yet FI
duuuuuhr
also its confusing but you need
(self, num_bits, register_address, lowest_bit, register_width=1, lsb_first=True):
so you have to swaperoo
i think i jus did bits
python is amazing
I just used the wrong name
you can do ridiculous things
if not self.lsb_first:
order = range(1, len(self.buffer))
for i in order:
reg = (reg << 8) | self.buffer[i]```
oooh, thats nice
you can do reversed(order) BUT you cannot reversed(reversed()) so i have two ranges
ok commited RWBits
try it out!
looks good:
>>> bin(ina.config_raw)
'0b110000100100111'
>>> bin(ina.config_avg1)
'0b0'
>>> bin(ina.config_avg2)
'0b0'
>>> bin(ina.config_avg3)
'0b0'
>>> bin(ina.config_0)
'0b1'
>>> bin(ina.config_1)
'0b1'
>>> bin(ina.config_14)
'0b1'
>>> bin(ina.config_15)
'0b0'
>>>
i tagg'ed ya on the commit
thanks
@idle owl it shouldn't have affected yr code
Ok
@meager fog I made a NeoPixel color picker with PyPortal where you set the colors as variables and it makes the buttons the color that it will change the NeoPixels to. it's a bastardised version of your soundboard code.
I guess I missed that part but tbh I was skimming somewhat
@idle owl sounds lovely!
once we get button merged you can write it up
that is blockin' on a textarea change
sounds good. One request: allow fill_color to take a tuple.
welp, I just I know what to watch out for in the future now π€¦
@meager fog works great, thanks!
I also have an api question if you have a sec
which do you prefer:
ina.mode = Mode.SHUTDOWN
ina.mode = Mode.CONTINUOUS
ina.mode = Mode.CONTINUOUS
# or
ina.shutdown()
ina.trigger_measurement()
ina.measure_continuously()
or something else
top
@meager fog sure i'll see if I can figure it out
more exttenadle
I was just thinking because the sensor actually does something when you set the triggered and shutdown modes the later would make more sense
yeah you're changing the mode
ya, but changing to triggered actually triggers it. I guess I could explain that in the docs
does it trigger and return? you could break that one out from the other two. non-standardish...but.
@tulip sleet so - I guess we need to look at any drivers for SPI and try to make them play nicely. I'm not sure there really is a problem with SDCard in general -- may be with slideshow -- I'll be happy to look into stmpe610 and slideshow to see if I can find where the ise issues are -- clearly stmpe610 can be improved - the delay showed that. I suspect the slideshow issue is something like that as well.
ahh. then, yeah i'd just make a note that it will cause the INA's buffer to change.
I am trying a feather m4 with tft featherwing. I get an I/O error when trying to use slideshow with it. It can list the files properly but then fails doing OnDiskBitmap
is that what you saw?
@solar whale never mind, that is with master, which I know is broken. need to test with PR 1620
I don't get any errors now -- It just seems to hang or run but not display -- in "advance" function in slideshow when I control C out
I am using nrf52840 though, not m4
I may add some delays various places. The sdcard code uses python to read from the card and locks the SPI bus for a significant amount of time. the problem is compounded becuase OnDiskBitmap is constnatly reading data from the file to display the image, since it can't fit the whole thing in memory. It does read a 4k block at a time, but there are a lot of them in a 230k image
I won't be able to do much more until Friday -- then I should have some time to dig int things better. I'll keep up with the issues and discussions until then. Good luck! Let me know if you need any information from me.
@meager fog I'll be offline for a bit but I should be able to wrap this up tonight
I wasn't sure if it re-ran after your lint fix so I started it again. I'll check on it again when I get home and review/merge/release
@solar whale thanks for trying all this - this is difficult; I'll discuss it internally this evening. When Scott is back I'll also talk with him
:choo: :choo: π
@meager fog Thanks for the heads up, ordered a GC + a bunch of long-awaited goodies.
So to answer your questions from before:
- The only developer mode I thought I enabled was to turn on the linux BETA for chromebooks https://support.google.com/chromebook/answer/9145439?hl=en Other than that I don't remember ever turning on developer mode.
- Looking at dmesg I dont see anything new added after plugging in and out. Link to before and after messages here: https://drive.google.com/open?id=188NloJ0XiLJDcyqcyPmNYEzbGWYvtZpx
- I have tried this with the 4.0.0 0 and 4.0.0 ...
SHOW AND TELL is LIVE NOW #show-and-tell - https://youtu.be/yfiu2-nHhZI
To show and share your project at 7:30pm today, view the chat here or in discord https://adafru.it/discord and look for the JOIN link to join the Google Hang...
@jerryneedell I fixed some remaining problems, and tested on PyPortal and a TFT FeatherWing with Feather M4 reading from SD card. Seems to work now. Might work better with SMPTE also.
Feel free not to test tonight :)
@tannewt Besides some general cleanup, this fix locks the SPI bus as necessary, but unlocks it between buffer writes, which gives the SD card code the access to read image data.
I replicated the problem with a Trinket M0 and a circuit playground express.
The serial device and the CIRCUITPY drive never appeared. TRINKETBOOT did appear when I reset to the firmware upload mode.
The kernel logged errors after starting to enumerate the HID devices then disconnected the USB device. Which was then detected and the process started over.
I recompiled the same CP version with CIRCUITPY_USB_HID=0 and then the serial port and drive both appeared on the chromebook. I was...
It is definitely USB HID issue, I remembered that CPY doesn't support boot protocol for keyboard. Maybe chromeOS trying to switch protocol to boot mode, and doesn't receive correct response from CPY. Hard to tell for sure, but it is a possible cause. I haven't used chromebooks before, could It be run with virtual box to troubleshoot the issue, if yes, please tell me which version chromeOS I should download to begin with :D
Tested on feather_nrf62840 with TFT featherwing:
slideshow from SD Card worked normally!
stmpe610 test worked with one issue that is more a problem with the test than CP.
When the displayio device is in use, there is a noticable slowdown in the execution speed at the REPL. You can see it just typing. the response is sluggish.
For a device like the stmpe610 that buffers data quickly, this resulted in some significant lag issues. But that will likely have to be addressed by the user code.
...
@solar whale if you're around, could you re-approve the PR1620? I fixed the German-too-big issue. If not, np, I'll wait for Scott.
tnx!
Github&Travis seem confused. Both builds have finished, but one is still marked in progress. I re-ran it and it was fine.
np -- will do it now -- I can't test it, but I can approve it!
only change was to shrink the metro m0 build
Travis is confused: both builds have finished successfully, but it hasn't noticed.
https://github.com/adafruit/Adafruit-TPA2016-Library/issues/4
we forgot to do this one :) @kattni i will tag you for this one, its a nice easy library
nRF24L01 library has been discussed here: https://github.com/adafruit/Adafruit_Blinka/pull/85
@rhthomas Let's continue any GitHub discussion here. You're still welcome to ping me on Discord as well with any questions.
What's the summary of the behaviour now for M0 and M4 boards?
If I do
play whole sample 1
play whole sample 2
and they both start/end with 32768 will it play them back to back without any additional delays? If sample 1 ends at 0 and sample 2 starts at 65535 how long will it take to ramp from one to the other and is this controllable from CircuitPython program?
For this scenario,
play very short sample 1 looping
stop sample 1
play very short sample 2 looping
is t...
Howdy ya'll. I'm working on a CircuitPython driver for the TMC5130A motor control chip, the TMC5130A-BOB (breakout board) to be precise. So far I haven't been able to successfully communicate with the chip, and I'm wondering if it has anything to do with "SPI Mode 3", the CP documents suggest that everything works, but can anybody here tell me if there are known issues in the SPI communication tools? Thanks.
https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC5130_datasheet.pdf https://www.trinamic.com/support/eval-kits/details/tmc5130a-bob/
As a fun thing, It does work 100% correctly with the same cable and device on my Windows 10 machine. Do you think If I removed the HID library from the device it would work on my chromebook?
@pastel panther heya i have an arduino register library
It's not the HID library - the device shows up whether the library is there or not. I'm going to get some USB traces with a USB hardware logging device and see if something looks strange. It's also odd that it works OK with CloudReady - this is mysterious.
@meager fog nice! you have a repo for me to check out?
π
a wild Tannewt appears
achievement unlocked: caught up on discord
@slender iron π
"Mark As Read" doesn't count... π
I did a mix π
@tulip sleet
* 6 closed issues by 2 people, 6 opened by 5 people
* 151 open issues
* https://github.com/adafruit/circuitpython/issues
* 5 open milestones
* Long term: 94 open issues
* 4.0.0 - Bluetooth: 16 open issues
* Handheld Gaming: 6 open issues
* 3.x: 1 open issues
* 4.x: 19 open issues
* 15 issues not assigned a milestone
going to tweak a bit, but should be in tonight.
Nice
@raven canopy very nice! thank you!
What sort of little utility libraries would people like to see for CP?
@modern wing I should have the Pirate translation PR in tonight after Gotham. Took a while to read through the IETF spec to decide on a legit language code. π π΄ β΅
Looks good to me too! Thanks for fixing this while I was away.
@raven canopy Gotta build that submarine first π
Please also add a milestone. I may miss it if it doesn't have one even if it is assigned to me.
The slew rate is not controllable from Python. It is 50 us per 49 DAC value.
I recommend samples start and end with 32768 for best results. The ramp will be zero length in that case assuming 32768 is also the quiescent value.
There isn't a way to stop after the end of the sample. That would be a great feature though so please file a separate issue.
@umbral dagger not sure if this counts but a way to easily keep my local copy of the library bundle up to date with the current release would be amazing
@pastel panther Should be able to do that with a cron job
Kick off a little python script to fetch, unzip and copy into place.
We should add a function to Group that returns the child with the opaque pixel from a given coordinate.
@pastel panther But, yeah, that wasn't the sort of thing I was thinking of π
@umbral dagger is there a stable url that one could fetch for the latest bundle release? If I can avoid scraping the releases page that would make life a lot easier. I didn't think there was otherwise I would have done something along the lines you suggested
@pastel panther the release page is the only location. other than version changes, the only difference in the filenames is the date. assuming adabot and travis are playing nice; which they've been stable this week after my last fix to the yaml.
easiest way, if i were to do it, is to use the GitHub API to grab the latest release, compare local filename, and download if needed. https://developer.github.com/v3/repos/releases/#get-the-latest-release
@pastel panther @raven canopy there is : https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest, etc., which redirects
Agreed, "fetch", "pull", "of"?
yeah, that works too. just have to scrape the links. the API aids by giving the asset URLs in JSON. 6, or half a dozen. π
you could take apart the redirect URL (just fetch the header with curl and find out the redirect URL) to get the tag, and then use that in the API call
oh, i see it's already in the API, ok nvr mind
Obviously, Pirate is not (yet) an official language. However, I think its a fun idea that @CedarGroveStudios inadvertently suggested.
This is meant to be a community effort. I only did a handful of translations just to get it started.
Mr. Certainly has expressed in interest in helping, and @ATMakersBill mentioned he has an affiliation with ITLAP.
For the IETF language code, I used en_x_pirate, utilizing the "private-use" subtag.
Lastly, f...
@modern wing ^^^
thank you @raven canopy -- please bear with me, as this is my first time working with github. :)
Wait.... β Thank ye Captain @raven canopy --- this be me first time drudging through the briny deep of github. Show me some quarter, matey! β
haha. Quarter be granted!
@modern wing i would wait until the PR is merged, then pull from the adafruit repo to do yer work. I mean, you could conceivably just push to my branch, but no need to make it more difficult and keep that PR open longer.
gotcha @raven canopy
Thanks @river quest 
I have more data but no solution.
I tested on a CentOS 7 system with a Redhat patched 3.10.0 kernel.
kernel version 3.10.0-229 (the 229 is Redhat's patch number) did not work.
kernel version 3.10.0-327 did work.
Redhat backports fixed from later kernels into the RHEL/CentOS kernel. I'm guessing something is tickling a bug in the kernel.
Red Hat's changelog can be found here:
https://git.centos.org/blob/rpms!kernel.git/c7/SPECS!kernel.spec
I also did some more testing on the chrom...
I think the grand central will become the core of module playground v2, but I will do a v1.1 first to test a few things.
with feather m4
@umbral dagger I am going to need to download groups of files to the PyPortal. Ideally an Unzip utiltity would be amazing. Because the compression might be troublesome, even a TAR-file reader would be helpful.
@ruby lake That's awesome! I always meant to put together a version of the V1 but never got around to it. I've been feeling the lure of the EuroRack recently so maybe this'll push me over the edge
Will the v1.1 be making an appearance on your github?
@pastel panther eeventually, I need to build and test one first π
@pastel panther ok
so here is a thing
and an example of usage
you can try it for INA260 - its nearly identical to circuitpython style
with the usual C++'isms
ah, that't the arduino version of the thing kattni did
yeah its a fairly complete library
cool
it was easier to add full coverage
thanks for crankin' those out!
π
i only wish there was a way to have a member object of a class that you can call functions of but you can't replace
not sure if such a thing is possible in C++
hmm... not sure
im going to π€ but you can try out the C++ library for iNA260 now
okie dokes, have a good sleep
For future reference, the related forum discussion: https://forums.adafruit.com/viewtopic.php?f=60&t=148191
It would be useful to allow audio samples that are playing with the looping feature to be optionally terminated after a complete sample, e.g. to an integer number of samples will be repeated. I've not considered the case for non-looping but perhaps that would also be a desirable optional feature for some use cases.
A carefully constructed looping sample this would start at "0" (midpoint would be 32768 for 16bit dac) and end at or very near there. The current system stops immediately and ...
Has anyone picked this up? I can give it a shake to try and get it off books.
why can this never go smoothly... π§
>git submodule update --init --recursive
fatal: Not a git repository: /home/vagrant/source/circuitpython/.git/modules/lib/tinyusb/modules/hw/mcu/microchip/samd/asf4
Unable to find current revision in submodule path 'lib/tinyusb/hw/mcu/microchip/samd/asf4'
fatal: Not a git repository: /home/vagrant/source/circuitpython/.git/modules/tools/uf2/modules/hidapi
Unable to find current revision in submodule path 'tools/uf2/hidapi'
Failed to recurse into submodule path 'lib/tinyusb'
Failed to recurse into submodule path 'tools/uf2'
looks like its nuke time, again.
I took a look at it and was going to give it a go but I'm committed to other stuff at the moment so by all means have fun!
@raven canopy when I was looking at the mixer stuff a while back, I believe Scott has said no one was working on it so I'm going to assume that's still true
@pastel panther k. i vaguely remember someone saying they were going to jump on it, but couldn't remember who and if they were. at minimum, i'll at least get it up to speed on the new mpconfig stuff. π
well, once i can get this repo to act like a good-lil-repo. π‘
nuke it from orbit!
@raven canopy did you try git submodule sync then the usual git submodule update --init --recursive?
and were you facing East π
@umbral dagger Is your suggestion box still open? Maybe out of scope, but UDP classes would be very useful for easy NTP and other protocols.
woah, the PyCon schedule is huge (opens up excel)
@solar whale yep. I've tried all the tricks I know, some I don't, stand-on-one-foot left & right, turned in a circle 5 times, said "Candyman" in the mirror with the lights off. Nuke will be inbound...once my internet comes back up. #FridaysAreFun
I wonder what is the software developer equivalent to saying Macbeth in a theatre.... and if @raven canopy inadvertently did it.... π
@crimson ferry Always open.
@solar whale @pastel panther decided to give submodule deinit && submodule update --init --recursive a go before nuking. back to good-lil-repo status. guess .gitmodules got smashed somehow. joys of synced folders with windows, perhaps.
fun!
@pastel panther hihi im around today - wanna try that libray for ina260
i can go thru it with u
take a toooooour of the library π©
I gotta get to dayjob but I kinda started on it, mainly just installing the veml7700 and busio libs, and find/replacing veml700 with ina260 :p. It compiles!
as a side note is there a cookie cutter equivalant for arduino?
@meager fog I'll read through the lib again on my lunch and then ping you when I get home?
lol
there is not for arduino - other than this guide
arduino packaging is not as detailed as python
I plan on updating all my build aliases to use this but yea, I'm not sure it's worth the travis tax. We can still do builds for announced releases, right?
do we like this enough to pay the cost of longer Travis build times
Fair point. I'm not married to an ever-present Pirate translation. Maybe turn it on around International Talk Like A Pirate Day? A "target audience" in my head is the teaching community; "today kids, we'll be programming like pirates". Lofty goals, I know. :smile:
Is there currently a way to turn off any particular translation in the Makefile? I can gladly update it with this PR.
We could but not building on Travis means it may not build at release time.
Right now all assets are built and uploaded automatically. I think its ok
to turn on if you really want it. It only incurs ~10 seconds per board.
Adding a new board is more costly.
On Fri, Mar 8, 2019 at 10:58 AM siddacious notifications@github.com wrote:
I plan on updating all my build aliases to use this but yea, I'm not sure
it's worth the travis tax. We can still do builds for announced releases,
right?
...
@slender iron wrt ^^, just add -I "en_x*.po" to the $(shell ls locale/*.po)?
scratch that. re-looking. will type after full thoughts. π
It seems worth it as a vector for bringing in new contributors, and giving them an easy option to see their contributions in action. I think it could be a fun way to get more people involved, as sommersoft pointed out with education and so on. But I understand the choice to not include it as well.
@raven canopy that only impacts make translate I think
yeah. it was a partial thought. hehe
how much longer did travis actually take?
the passing one: Ran for 29 min, Total time 2hr 17m.
the last merge: Ran for 25 min, Total time 2hr 20m
but...they're all over the place honestly. total times are just under 2 hours, to a max of like 2hrs 25m.
there's also the list of boards to consider. i know that efforts are underway to make it easier, but that list is getting loooong
ya, I want the website available for 4.0 stable
I agree with @kattni. I think its worth the extra couple minutes of build time.
c4d627a inital commit for English Pirate translation - sommersoft
3a738af Merge branch 'master' of https://github.com/ada... - sommersoft
3f5559d outdated .po file was outdated. oops. - sommersoft
186e315 Merge pull request #1622 from sommersoft/en_ARR - tannewt
heh. i finally finished my thoughts on how to exclude. and the ship has sailed...
indeed.
β
@modern wing en_x_pirate is merged. Weigh anchor on yer translatin', me hearty!
I think we should get this in once the translations are merged. It should be good to go otherwise.
@idle owl does this actually work> https://circuitpython.readthedocs.io/projects/logger/en/latest/ I don't see the UartHandler in the code?
It was refactored to remove it, according to the PR. Ask @umbral dagger for details.
ok but then it should not be in the example should it? @umbral dagger ?
I thought maybe it was some Python magic I did not understand...
@pastel panther did you get a chance to try that neopixel code with a logic analyzer?
Skip line numbers because they cause diff churn. Also, keep sorting
by msgid to prevent churn from adding new files.
@tasm-devil please take a look.
@umbral dagger thanks -- would you like me to merge it?
@solar whale please do
merged
I'm seeing some interesting behavior with web server response headers, not sure where to put the issue. (#1) Somewhere, I don't think it's ESP32SPI but then must be either NINA FW or the depths of CP ... headers not served by the server are inserted back to the client (e.g., 'via': '1.1 vegur') - I see this on evewry GET from any site, but only in CP. (#2) In trying to demo #1, noticed that after pulling a couple of pages from disparate sources (via HEAD), headers from prior sites live on and get presented to the client for subsequent sites.
Nevermind #1, I think that's just an artifact of having hit worldtimeapi.or first.
@crimson ferry This may not be relevant - I am new to "get" -- but some of the examples reset the response to None -- I think this was to avoid some issues early on that may or may not still exist, see https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/blob/master/examples/esp32spi_cheerlights.py#L68
@solar whale That makes sense. The json/text/content comes back OK, but the headers are crazy... after hitting a couple of sites, you have an incredible set of headers being reported to the client.
That's good info @crimson ferry. It's possible that the WiFi Manager needs to be updated to clear out old data.
I just tried at the client level and it doesn't seem to make a difference. The old headers seem to be sticky deeper somewhere. response = None in the app doesn't clear the old ones (headers with same name will be overwritten with new values, but old unique headers still get returned next time.
But you say the problem only happens in CP?
As opposed to cURL? Yes. If I fetch microsoft.com before twitter.com for example, I'll have microsoft-specific custom headers in the twitter response.headers
Even with response = None between fetches
I mean I didn't know if you cooked up something that ran on Arduino. I was just trying to see if it might be the NINA firmware or something on the CP side.
On my Arduino stuff, I don't think I had the ability to see headers at the time,, so I don't know.
Perhaps file an issue under the ESP32SPI library and after digging in more, if it is in the firmware we can move the issue over.
@crimson ferry, I forgot to ask what your setup was. Are you running this on PyPortal or with a separate ESP32 in some configuration?
@gilded cradle PyPortal (I can also test on ItsyBitsy M4 with ESP32Huzzah). CP 4.0.0-beta.3, adafruit-circuitpython-bundle-4.x-mpy-20190307, debug is now on, I can put some example code and output in a Gist or something.
Ok, thanks.
Any CP librarians here?
Yes, I'm here.
@gilded cradle I need a review of https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/139
Ok
Thanks
Yw
Will this ever happen?
@kenidowa wanna help? how are you at reverse engineering ARM assembly :)
I've been seriously considering giving this a try. I have no idea how successful I'll be but I may or may not have watched your qtouch videos more than a few times and sought out an alternative to IDA.
Good money says I'll fail miserably but maybe I'd at least be able to tell someone more what not to try :)
lol could look at the new free ghidra?
Thanks, @gilded cradle you rock! It even works if someone forgets to close() (hopefully I'll get better at finding where in the code stuff is happening rather than brute-force black-box testing π
Did I get the push wrong again? I'm away for a few days but have laptop so can amend if necessary ...
-----Nick
Youβre welcome @crimson ferry . I had a few minutes, you gave great example code and it was a pretty easy fix.
I've wanted logging support in CircuitPython for some time so I finally wrote a stripped down on for it. It's a helper in the bundle now. A guide's in the pipeline. Thanks to @idle owl, @solar whale, and @gilded cradle for the help & feedback.
Where can I dind details on the changes to the builtin re module?
the only change was the name, from ure to re.
well, actually some features were added, but in a previous PR some weeks ago.
it was updated to the latest MicroPython version
Hmm.. I just updated from beta 3 to beta 4 and CircuitScheme stoped working.
CircuitPython Organization
@umbral dagger do you mean beta2 to beta3? PR 1544 happened during that time.
we often do stuff like this
try:
import re
except ImportError:
import ure as re
@tough flax Here's a guide page for updating your Feather nRF52840 bootloader so it works better on Windows: https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/update-bootloader. It's fresh out of the box so let me know if anything is unclear.
Still seems to be in the regex use...
On the plus side, C-c is being handled better now. (by better I mean the way I want it to)
maybe some new pattern chars need to be escaped that didn't used to be??
quite possibly. It seems confined to recognizing double-quoted strings
I'm amused by what you call tests
i didn't write them π
generally we just take core-language stuff from upstream
without much review
@tulip sleet Got it working again. Just needed some tweaks to the regex.
I put in a PR to bring adafruit/Adafruit_CircuitSchemem up to date
If anyone would like to have a look and ok/merge it
@slender iron site looks good to start! i would approve/merge PR #8, but no creds. π
@raven canopy just added librarians
website now at https://circuitpython.org/
CircuitPython Organization
@raven canopy https://github.com/adafruit/circuitpython-org/pull/9 has info for many more boards
Does the Trinket M0 support the use of the RTC library? - Making a simple digital clock
@lean hare yes, the rtc module is included with the firmware for the Trinket. https://circuitpython.readthedocs.io/en/latest/shared-bindings/rtc/__init__.html
@slender iron that padding fix to the CSS really helped the image/cell sizing. much improvement!
It would be nice to allow partitioning/splitting of the display with displayio such that you could use each partition as an independent display. For example, drawing graphics - buttons, shapes, etc. - on the top half while preserving the REPL output on the bottom of a single display.
I'm admittedly fuzzy on how the layering works with displayio Groups right now, so maybe we're not far from this capability, already.
I noticed in lib/adafruit_midi.py for control_change() it says controller number must be 0-15. But that's not the case, MIDI accepts controller numbers from 0-127 and the underlying code allows it, too. I've tested it with Apple Pro Logic X and it works fine for controller number > 15. Here's the MIDI 1.0 spec, btw:
https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2
THE MIDI ASSOCIATION, a global community of people who work, play and create with MIDI and the central repository of information about anything related to MIDI.
It's important in order to handle 14-bit controls. For example, controller 20 is the MSB and controller 52 is the LSB. So by reading an analog input w/ high resolution, we can encode up to 14 bits and transmit over MIDI in two separate packets.
I'm using this on the Grand Central, btw. Wonderful board!
I've opened a github issue for the library, but wanted to post it here in case anybody was playing with MIDI.
I'm seeing some rather non-deterministic behavior with creation of pulseio.PWMOut(). I've been discussing how to get the most PWM outputs on a Circuit Playground Express: https://forums.adafruit.com/viewtopic.php?f=60&t=148017. I can sometimes get four by using the same frequency and variable_frequency=False but not always! Example below is a variant of 4.0.0 beta 2 with no code.py/main.py and after a power off/on to rule out any accumulated-weirdness(tm):
Adafruit CircuitPyth...
@slender iron I like the site π I think it's a great landing point for CircuitPython. The downloads page looks better with the CSS fix as @raven canopy mentioned, but if I could make a suggestion -- I imagine someone who's unfamiliar with things would be overwhelmed with a large unsorted list of boards. It's a lot to scroll through.
I know I'm not that helpful as I don't have a specific solution (I'm not a strong web developer), but I think it needs organization of some sort. Either by brand, or by board line -- with a legend in the top/side hotlinking to that section.
Ya, it could go either "whoooOOoooooo LOOK.AT.ALL.THE.OPTIONS" or
"....lookatalltheoptions"
squeak
run
I don't think it's the worst but it's worth considering
I imagine in the future there will be dropdowns for filtering by brand, processor, etc. I'm biased/old/experienced but I think it's good for now
whaddaya know, it's on the list of todos on the github repo
First time git user... I'm getting an authentication failure trying to do a git push of a CP library change to my forked repo. I'm sure password is correct... tried "anecdata", private email address, and aliased email address as username.
using keys is suggested (and much easier in the long run):
https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account
@crimson ferry do you have OAuth/tokens set up? ^^^
if you do, you need to use a token for the password.
@pastel panther I wasn't even aware there was a list of todos in Github (still kinda new to this). Do you have a link to that page so I can read it before putting my foot in my mouth next time? π
Neither was I until I looked!
It's not a github feature or anything, just something someone added to the README
@raven canopy Not that I know of. I have one unrelated 'Authorized OAuth App', but no GitHub apps. No personal access tokens. I tried both with and without 'Block command line pushes that expose my email' checked. Username 'anecdata' and alias email (xxxxxxxx+anecdata@users.noreply.github.com) is set up in git. I have 2FA.
@crimson ferry are you wedded to using password auth? ssh keys are pretty nice...
@pastel panther I added a key to GitHub. It's not clear to me how git uses that. It still asked me for username and password.
@anecdata click ssh next to the clone link
@pastel panther @exotic pumice Done, but it's still asking for username. I'll scrub it all and start over, maybe a problem with the sequence things were done in. Thaanks.
@crimson ferry I think you may need to set a default username when connecting to github in you ssh configs; what OS are you using?
macOS
ok; lemee double check my config; it's been a while
on the git side, there is git config --global user.name <username>. not sure if the SSH part makes things different; never used SSH.
my ~/.ssh/config has this for my github config: ```
Host github.com
HostName github.com
User git
ya I think github figures out your account from your git email
I think user.name is your name name, not your username
i have both set. git config --global user.email <email>. π€·
If you want to use key-based login, add another entry for your private key to your config file: ```
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
@modern wing Ya, I agree the list is long. Its currently sorted by the number of downloads per board but only based on 3.x
The search does work
Thanks, all. I have a few things to try.... π
hehe. that's the name of the game, with git. "and now i'll try..." π
@crimson ferry glad to help. The github documentation is really very good so give it a thorough read through. I'm pretty sure the key is having your git user.email set to one that is associated with your github account
@raven canopy "Any sufficiently advanced technology is indistinguishable from magic."
exactly. i always refer to git as a "mystical land of rainbows and unicorns". π¦ π
I really think there should be a git subcommand that deletes the repo and re-clones
haha. that would be handy. although, git reset --hard works pretty good for me. π
@exotic pumice just make an alias to do it for you
btw, no I did not test the trellis yet but I'm at a stopping point with my driver so I can give it a try now
I've had instances where git reset --hard and git clean -f -d left me with differences, perhaps in a gitignored directory
ahh. good point. didn't think about ignore.
Thanks, I won't be able to take a look right away but I'll pass whatever you send along
Or do you wanna join our gitter and talk to the other guys working on the libraries directly?
sure?
kk
@exotic pumice If you have time later to make a different version of the previous demo that instead of setting the first or second leds of a 32 neopixel string, have it use strings of length one or two only
@crimson ferry "Any technology distinguishable from magic is not sufficiently advanced."
heya was about to ping you
I'm almost done with the arduino driver, just commenting and cleaning up
rad
i have some Ideas
so i think we may want to do a mix of CMSIS structs and the BusIO library
but BusIO only is also fine
googles
sure, one sec
thanx
Awesome site!
yeah this could def be handy - probably easiest to do by being able to define the size/location of the splash
@meager fog https://github.com/siddacious/Adafruit_INA260
Full of typos, I'm sure
@pastel panther tanx lookin now
I'm gonna run down to the store for a minute; bbias
Thanks @fluid helm ! Want to review π ?
Yeah sure! @slender iron
thanks! a comment is enough if you can't approve approve
I'm thinking it'll be more like a second terminal output that you can connect to the "stdout" of CircuitPython. I want to make the input and output streams more generic in the future. (For example, keyboard support is the reverse of this.)
@meager fog back! Ya that code I pushed needs a bit of cleanup anyways, just wanted to share my progress. I'm interested to look at CMSIS structs but I don't know much about them.
Is there some reading material you can point me to?
ok yeah
soooo
the thing is - with registers being objects, they take a lot more memory
i can squeeze em down a bit because i have some extra member variables but it definitely adds up
the way we did 'bits' before is with a struct
i gotta get a clang linter at some point, too many tab/spaces issues
but basically you end up splitting the register's uint8_t or whatnot, into a struct, instead of a definition of a register object for each bit
ah
but i think for now lets stick to what we gots
okie dokes
i think if you get to like 6-8 RWbits then we should look at maybe using cmsis
@pastel panther nice
@meager fog I'm gonna head out for a bit to enjoy the break in the rain but I should have something later tonight
Got the git / ssh process working, one final (I hope) process question... I assume the best place for me to test my change is while I have my branch checked out, changes just made, git status = clean tree, probably after last anticipated commit before PR, but definitely before push back to my fork. Testing by copying changed file(s)/lib to my device(s). Or is there a better flow?
@crimson ferry Testing anywhere along the way is good. I'm bad about iterating within my git directory and instead often do it on the board (Which can lead to losing code if something goes wrong). What you're suggesting above is an excellent workflow.
Thanks, @idle owl. I was following your Guide but don't want to get too far without confirming it still works π
For sure, it's still exactly what I do π
@pastel panther β
why must sheets do this to me. "Section 3: route feeding lines in the Tx layer" - "Section 6: avoid routing feeding lines in the Tx layer". π΅
actually...i may be reading section 6 wrong. sorry sheet! didn't mean to blame my duncery on you! π€¦
@idle owl @crimson ferry I have a "deploy" alias defined that copies *.py in the current directory to my CIRCUITPY drive and does a sync (to make sure everything finished writing). I work in my working dir and deploy to test (the auto-reload causes a restart when I deploy).
i git clone directly in and then commit when its in a good spot - kinda funky tho π
@pastel panther ok I will when I get home
Tested boards: pca10056, pca10059
Steps to reproduce the errors:
- take a blank board, connect it to a computers USB, put a simple main.py on it (LED blink, or such) and run it
- create a subdirectory on the virtual drive (e.g. /lib)
- copy some CircuitPython libs into the subdir (a few 10kB of files are usually enough, but sometimes more is needed)
The following errors occur, sometimes immediately, sometimes after disconnecting and reconnecting the board from the USB:
- script crashe...
@pastel panther this one only uses 3 neopixels, I think we've identified the problem as a slow timer
oops wrong file
in other news, I got this lcd that is most definitely not an ili9341, and the code for the controller it actually has only works on avr arduinos it seems https://www.aliexpress.com/item/5pcs-lot-2-4-inch-TFT-touch-LCD-Screen-Module-For-Arduino-UNO-R3-Free-Shipping/1814766122.html?spm=a2g0s.12269583.0.0.6bacbebcdBJiVu
Smarter Shopping, Better Living! Aliexpress.com
not sure what to do with it
Looks like an HD44780 pinout to me.
Then again, the listing says a spfd5408 controller.
also says ili9341π
Yeah, title says one thing, description says another
Probably not too hard to fold SPFD5408 support into the adafruit_rgb_display library.
@pastel panther https://twitter.com/bascule/status/1104600470725656577
Finally resolved some timing issues with @rustembedded on the @Adafruit Neotrellis M4 driving the NeoPixels and theyβre finally cycling correctly /cc @dwrensha https://t.co/lUicri0qCv
yaaaay!
yeah, this is using the assembly delay version, with link time optimization disabled, and compiler optimization set to "s"
it would be nice to get the timer version working too
because then people can run with whatever optimizations they please
we discovered our timers were only running around 500KHz
or actually, timers running at 1MHz, a toggle on two different ticks was 500KHz
I have no idea how that was working on Metro M4
must be some super tolerant neopixels
I'm using a Feather nRF52840 Express. I have used it extensively for 2 weeks. I coded a small game and everything was working great. I upgraded to beta 4.3 and now the board is consistently crashing without giving any kind of debugging messages in the serial console. This never happened prior to 4.3. The crashing started instantly after the upgrade without any mods to my previously working code. Prior to the upgrade I never experienced any crashing with the Feather nRF52840.
After cr...
Is there any way to work around this, short of modifying that function and building my own custom firmware to use?
If you were running 4.0.0-beta.2 before you upgraded to beta.3, then reinstalling beta.2 would revert things to as they were: there's nothing "hidden" going on. It's possible a new bug was introduced in beta.3, or perhaps something about your operating conditions have changed. Please give us more information:
- Source code of your program (attach as .zip or .txt)
- More complete description of when the error happens. Can you reproduce it consistently, and how
- Complete text of error ...
How "open" is the circuitpython website? I was trying to create a Jekyll grid system for my learning portal and it seems like i could build upon the system the site uses. Obviosuly i'd include full credit
@fluid helm I don't see a license but it's adafruit so I think it's safe to say it's open source. Plus, it's based on jeckyll which is open source so by all means do whatever you want.
Ok, just wanted to be cautious. Thanks @pastel panther!
I have a Itsy Bitsy and just starting out
at this point I have up and running and now I need help on where is the best place to start learning on how to make code and simple projects thanks for any help.
hey @void void I responded to your message in #help-with-circuitpython . Posting in just one of the two spots is usually enough. Let's talk over there
Hi
I have recently upgraded my CPX to 4.0.0beta3.
I am working on a project where I need to log data to files on the file system (requires storage to be mounted as writable from boot.py).
In order to optimize the debugging I am using uPyCraft which is an IDE which allows to upload files to the file system through the REPL.
The code send by uPyCraft to the REPL is:
`myfile=open(filename,'w')
myfile.write( ...data... ) # data is a 128 byte string where end of line are all '\r'
.. repea...
There is no native build for ESP32. However, we have a good library that supports using the ESP32 as a co-processor: https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI. This library is used for the PyPortal.
Using the ESP32 as a co-processor is advantageous in several ways: we don't need to port CircuitPython itself to the ESP32, which is a major task; we can substitute another Wifi-capable co-processor if another good one comes along, and having another core running the network c...
@pastel panther hihi
heya
im going to give you access to our PCB repo now
ok check ur email - did i do it right?
I just saw your response to my email but didn't see anything from github or elsewhere
there it goes
ok yay
so i think you can stick it in...
Development/Battery and Power
under a new directory INA260
ok
we like to have a folder per rev, so make a subfolder Rev A
rename the PCB to include Rev A in the name
will do
sounds good. Spaces in names are preferred? I normally default to underscore but whatever's clever
spaces are fine - they're files not code π
we commit directly, no PRs
since you can't really review em anyways
makes sense.
ok next up wanna move the libs to adafruit?
sure
alright plz try!
wait, by libs you mean drivers or switch the board to use adafruit libraries?
sorry - umm i mean move https://github.com/siddacious/Adafruit_INA260 to adafruit
right
I don't think there is a repo... do I have that ability or can you make one?
can you 'move' the repo?
you can move it to me ladyada
then ill move it to adafruit
transfer maybe
I didn't know that was a thing... lemme try
itz a thing
It says I don't have perms to create adafruit repos
I was also disappointed that part of the github ui didn't play kenny loggins
k, that works
ok all done!
It turns out I did not revert far enough. I loaded Adafruit CircuitPython 0dc2600 on 2019-02-20 and everything is now working! Unfortunately, Adafruit CircuitPython f3e50b9 on 2019-02-21 does NOT work.
- Attached is the source code and a schematic.
Mario Working 2.zip - By βlock upβ, I mean the program halts, the serial stops functioning and the feather drive disappears. It happens consistently with f3e50...
so my swd pi died but it turns out I can use upstream freedap with a few modifications as an swd debugger on feather m0, while Adafruit_DAP only supports programming
J-Links, who needs 'em?
@pastel panther ok wanna fix up the repo to have our 'style' of travis and stuff
it also seems that openocd has merged samd51 support
sure
@pastel panther ok try following the guide?
ok
So I'm playing with PyPi packaging today.
@meager fog I was going to do a few cosmetic tweaks to the board; should I wait until they're tested more or go ahead and do them now?
@pastel panther do em now!
@meager fog is there a standard pitch for mounting holes?
kk
im writing text stuff so ping me if you have Q
ok, thanks
So, I asked about Touchio because I found it really usefully for standalone application of a TrinketMO but when I tried using it on ItsyBitsyMO on larger applications I ran into code space issues. So, moved to ItsyBitsyM4 but then found it doesn't have Touchio. So, after watching 2yr. old video of yours on it. Is it that the SAMD51 touch is so different from SAMD21 or is it the amount of code space it requires in the base that's the problem. Looking at data sheets, it isn't apparent to me...
yep, its completely different
Hi @tannewt
I am trying to port the mkr1010 together with the esp32_spi library
I have changed firmware wifinina of adafruit in the ESP32, but i have the next error
Traceback (most recent call last):
File "main.py", line 20, in <module>
File "adafruit_esp32spi/adafruit_esp32spi.py", line 309, in status
File "adafruit_esp32spi/adafruit_esp32spi.py", line 298, in _send_command_get_response
File "adafruit_esp32spi/adafruit_esp32spi.py", line 224, in _send_command
Fi...
we use different pins on the ESP32 firmware i think GPIO23 not GPIO12 so you need to use their firmware which has that pinout - but, honestly, i do not think samd21 can handle the WiFi core - it uses a lot of memory once you try to actually connect to sites :/
Oh ok the problem is MOSI in MKR is GPIO12 and in nina_adafruit is GPIO14 of the ESP32, but with arduino firmware it did not work either π€ - recommend WiFi Core only in samd51 or memory SPI in SAMD21 fine?
yeah SAMD51 or nrf52840 recommended! not sure why MKR1010 isnt' working for you either
spent the last couple days getting the MixerVoices PR back to compiling. needed to gen up some wavs to test with, and i dug out an old dj trick: millisecond desync = reverb. Only had a piezo handy, so had to tweak the audio post-production. π
DeanM did excellent work on this; i can't take credit for any of it.
No reverb sample: [2 voices; voice1 at 100% gain; voice2 @ 0% gain]
Reverb sample: [2 voices; voice1 at 100% gain; voice2 @ 90% gain]
DeanM rox
<@&356864093652516868> Reminder: the meeting is tomorrow at 11am Pacific. If you are outside the US, then it will be at a different time. We just entered Daylight "savings". https://everytimezone.com/s/b06e6a22
notes doc?
ah, thanks for the reminder
<@&356864093652516868> Notes doc is here: https://docs.google.com/document/d/1hT7itmWSzIk9uSf5Te_GlOitabAHis5PxbNpTJJVjEs/edit?usp=sharing
CircuitPython Weekly March 11th, 2019 Community News State of CircuitPython Hug Reports @kattni @tannewt @ladyada for helping me with my gameboy cart design. Tyler and Justin for circuitpython.org work @sommersoft for picking up the mixer PR Status Updates @kattni @ta...
@jreese Modifying is easiest. What are you trying to do?
@sabas1080 Do you still want to merge this?
One helpful piece of information would be how big the file you are sending is. My guess is that the IDE is overflowing the CDC incoming buffer. I don't think we correctly tell USB to slow down.
hi, anyone know how many of the A1-A7 outputs on the CPE can do PWM output?
@fierce girder CPX has PWM on the following pins: A1, A2, A3, A6, RX, LIGHT, A8, TEMPERATURE, A9, BUTTON_B, D5, SLIDE_SWITCH, D7, D13, REMOTEIN, IR_RX, REMOTEOUT, IR_TX, IR_PROXIMITY, MICROPHONE_CLOCK, MICROPHONE_DATA, ACCELEROMETER_INTERRUPT, ACCELEROMETER_SDA, ACCELEROMETER_SCL, SPEAKER_ENABLE.
There is NO PWM on: A0, SPEAKER, A4, SCL, A5, SDA, A7, TX, BUTTON_A, D4, NEOPIXEL, D8, SCK, MOSI, MISO, FLASH_CS.
thank you!
You're welcome!
Obviously a lot of that isn't broken out, that's from a script that checks every possible pin that's available in dir(board). But it does tell you the A1-A7 answer.
@idle owl so for the gator clip friendly pads, that is A1, A2, A3, A6 ?
Looks like it, yep!
great, thanks π
I had been looking in ./ports/atmel-samd/common-hal/pulseio/PWMOut.c and ./ports/atmel-samd/boards/circuitplayground_express/pins.c and was getting confused. I'll keep "dir(board)" in mind for next time.
@fierce girder If you check out that guide page, it has a script at the end that tries to setup PWM on every pin, and tells you whether it was able to or not. That's how that list was generated.
ah@
@fierce girder also note that some of the pins use the same timer, so it might be impossible to get pwm on all of them at once
at least not with different frequencies
I see it now. I need better glasses π
π
@stuck elbow ah, good point. i had been hoping to use them as independent PWM outputs. I'll need to wire up LEDs and see if I can control independently
you will get an error if you try to create pwm objects that conflict
ah. good to know
is there any reason why PA31 is always "in use" even after a restart?
https://gfycat.com/hairyinferioradeliepenguin is this a video of the circuit python 4.0? I like the new skin
Hi! Lurking on the call today, put a hug report in the doc π
Iβm text-only today. No microphone or speaker. Hugs and status in the doc.
Hey hey!
<@&356864093652516868> Weekly meeting starts in a few minutes!
I'm in hybrid mode today. May have to go text-only at some point due to background musical "noise."
π°
Skip? This is the only meeting I actually try to attend. π
oh @slender iron i am here and can do some of community
- add default pins for i2c, spi and uart
- add default i2c, spi and uart devices
- ignore usb pins
- tweak brightness and refresh rate of the display matrix
Re: milestone numbers - I noticed some off-by-one errors when comparing API & webpage. π€·
it could be how it counts PRs with milestones
CircuitPython Organization
https://circuitpython.dev works too
CircuitPython Organization
@river quest do you want to skip ahead too?
this week sponsored by Nyquil
NYQUIL IS A DELICIOUS ADAFRUIT BEVERAGE
π€£
I'm Lurking. Hug report out to @meager fog thanks for getting the TX2 compatible with the Blinka libraries. I will be investing time today to test!
lurking
nice - thanks @jolly egret plz put any notes on that PR
For sure!!
Lurking -- hug report in the doc π
- @DeanM for the great foundation with audioio mixer.
- @jerryn, @deshipu, @siddacious, & @danh for some great support in Discord.
- Group hug! I wish I could give you all an hour back, if you recently had one stolen from you.
Late and lurking...
Well spring has sprung.
I lost my Mike.
Status update
I finished the ovarian, finally. Next is to work on a mouth organ.
(dont email me...yet π )
< local music levels increased -- switching to text-only mode>
@errant grail might want to add a filter for the noise π
Oh, if it was only noise. It's actually classical music...
Decided to rework the Range_Slicer library this past week to make it more universal rather than limiting to positive integers and only ordered inputs/outputs. Had to completely start over from scratch three times (or was it five times?) to approach the algorithm from different angles (thanks to my HS Physics teacher for the technique he taught me many years ago). Finally found the one I was looking for yesterday. Itβs passing the tests!
Hereβs an example of how Range_Slicer can quantize a relatively noisy potentiometer input signal (input: green trace, quantized output: blue trace). The Slicer class linearly processes any range of input values into a set of indexed output values.
Tasks this next week will be to complete the GitHub documentation, experiment with non-linear quantization and floor versus ceiling versus truncation methods. Will continue to develop the hardware prototype with the goal of sending the PCB and front panel design to the vendors by Friday. Planning to get deep into displayio for the relatively complex control panel display.
Also, today is the big day for the CircuitPython-lighted UFO film miniatureβs 15 minutes of fame. Green-screen filming begins in an hour. Hope that the production team will let me post a few video clips for you to see.
@errant grail wow. cool. good luck with that!
π½
hi back if any q
@solar whale Good luck wrangling the cheerlights !
testing the fether m0 arduino/circuitpy thingy now
it should be at the baseline :P
@idle owl @gilded cradle thermal cam featherwing is essentially === to the breakout, so not sure it needs its own lib
Hi tannewt,
It does not depends on the file size. Even a small file such as boot.py failed.
When I look at the uPyCraft code (https://github.com/DFRobot/uPyCraft_src/blob/master/ctrl.py line 1044), I understand that:
- File to write is cut in chunks of 128 bytes
- Each chunk is written with a
myfile.write(...data..)REPL command - After each write, they wait for REPL response. (They do not explicitly check for
">>>"but they test for"Traceback"or"..."to decide for a failed t...
Last Week:
-
adabot.circuitpython_libraries:
- Fixed an issue with the list of repos received from GitHub API search. It was dropping the more recently updated repos.
- Added milestone remaining progress to core insights
-
Pushed my initial Pirate translation to get it started. Th' rumainin' will be finished by me hearties!
-
Started a board design for a Gesture Control FeatherWing. Using a MGC3030: https://www.microchip.com/wwwproducts/en/MGC3030
-
Started working on DeanM's MixerVoice PR (#1365, "add mixer voice objects and volume control"). I've brought it up to current master/config, after fighting some persistent compile errors. Got a working test up and running, late yesterday.
This Week:
- Continue with MixerVoice. Still learning the nuts-n-bolts of it. Then will start discussion on any desired changes.
3D Gesture controller
@meager fog @gilded cradle Ok. I'll talk to Melissa about the rest of the wings as well.
yaar
@raven canopy i actually made a MGC3030 breakout
a loooooooooooooooooong time ago
Py-rate?
The Adafruit Circuit Playground Express (CPX) board running CircuitPython 4.0.0 beta2 with a program reading MIDI over USB generating a variety of waveforms ...
@meager fog really? Sweet. I grabbed one months ago just to play with.
yeah i never released it
could be a good excuse π
will you be writin' a library?
Planned on it, yes.
@slender iron just verified a feather m0 basic with the latest UF2+S3 build -> arduino just fine on win7
IN THE WEEDS
- will there be a guide for new 4.x displayio stuff
- pin naming suggestion PyPortal.board.AUDIO_OUT -> .SPEAKER (to match SPEAKER_ENABLE, it's also .SPEAKER in CPX)
- PyPortal has a board.DISPLAY, why not also a board.TOUCH, instead of just pins
- and more...
I do
@slender iron anything else to test?
Absolutely, but it already has a terminal which I use screen with
^^ that
terminal is built into vscode*
hiya i tested the latest S3 build with the latest UF2 bootloader updated and it kicked directly from circuitpython to the bootloader within Arduino 1.8.5 on win 7 so i think this is fixed!
@meager fog not that I know of atm. take a look at the issue list
@ghhann please let us know if this comes up still with the latest version of CircuitPython!
@slender iron kk
Mu-like auto-connect to the repl would be great
If anyone is interested in sigrok, I found an interesting video (by the author of sigrok's PulseView gui app) talking about using sigrok with inexpensive logic analyzers: https://youtu.be/dobU-b0_L1I
Introduction and experiments with low-cost logic analysers and the sigrok software suite. Show Notes: https://opentechlab.org.uk/videos:001:notes Twitter: @O...
I usually open the CIRCUITPY device as a folder and edit files directly on there
so adding file management wouldnt be req'd as vscode handles it..kinda
@slender iron just to verify, im looking at https://github.com/adafruit/circuitpython/milestone/14
Possibly a settings configuration (unhide spaces/whitepsace, space size set to 4). VSCode's benefit is its configurability via settings files, should be documented ("Setting up VSCode for CircuitPython")
sorry just came back - is this about SWD pin directions?
I usually look this way: https://github.com/adafruit/circuitpython/issues?q=is%3Aopen+is%3Aissue+milestone%3A"4.0.0+-+Bluetooth"
kk!
I mentioned it in the force safe mode issue: check the cold debug flag in main.c, if not mux it to io
@tidal kiln you can check with me as you do it
i think we can start with displaying bitmaps first
We could use the PA30 and PA31 pins as normal GPIO pins (and also SPI and I2C and so on) in CP3, however in CP4 they are always busy when we try to use them. It would be great if we could use them, even if that was optional only for some boards and disabled debugging entirely.
@prime flower do you want to take a look at the Ethernet library?
since you're doing so much internetting
Iβve been finding the displayio stuff a little confusing too, so a guide would be great.
@meager fog Sure!
@raven canopy are ya around
w.r.t. https://github.com/adafruit/circuitpython/issues/703 where are ya at
touch can be differently implemented
resistive or a chip
@meager fog I just made the issue; nickzoic was working it iirc.
for example on a Metro M0 + shield, the shield could be resistive+display or capacitive+display or just display
touch also isnt a speed-bound interface
its slow to do and thats OK π
@nickzoic hihi do you have any idea about this or reproduce it?
the bundle will only get bigger n bigger π
Best party to listen too!!
π
please post channel
Thanks. I wasnβt able to jump on voice until the end. Will listen tonight.
@prime flower well - it looks like Ethernet might kinda work? maybe try it (featherwing + m4) and lemme know how it goes, if you can do a basic socket-get we can quickly turn our existing requests lib to ethernet
Thanks everyone!! Great meeting. Make it a great rest of the day for you all!
Thanks!
Thanks
@meager fog was looking at Nick's PR, I'll try it later today and let you know how it goes. eth time!
@slender iron @idle owl @tulip sleet yeah a brief catchup thingy
β
@prime flower we could then have adafruit_io ethernet support
This is simply to make things a little easier by being more consistent. Similar to naming the battery voltage sense pin. On the PyPortal, the two pins associated with the speaker are currently named:
board.SPEAKER_ENABLEboard.AUDIO_OUT
On the CPX and the Hallowing, the second one is called board.SPEAKER. So suggest either renaming or adding an alias for that as well.
Just linking an approach I mentioned in the previous "force board into safe mode" issue. Will gather/expand thoughts regarding this later.
https://github.com/adafruit/circuitpython/issues/990#issuecomment-403130037
aliasing board.SPEAKER sounds good - wanna try the PR? :)
I did further testing and I think the crash occurs on the first spi.write() call. This is line number 895 in method write_cmd_cpy() of my file ssd1351.py. Here's the line:
self.spi.write(bytearray([command]))
Thanks - I am seeing the same place. Am debugging with gdb via J-Link.
Downloaded and tested on pewpew10 --- still functions normally -- I did not do any specific tests.
Imported board to verify pin definitions are seen.
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-beta.3-5-gcaf51cf4e on 2019-03-11; PewPew 10.2 with samd21e18
>>> import board
>>> dir(board)
['DAC', 'I2C', 'MISO', 'MOSI', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'RX', 'SCK', 'SCL', 'SDA', 'SPI', 'TX', 'UART', '_BUTTONS', '_C1', '_C2', '_C3', ...
Hi All,
I am trying to update a Feather M0 with rfm9x with the latest CP. The board shows up on my Windows PC, but only shows 48K available. When I double-press the reset button, it shows up as a serial port. Is there an existing guide to help me fix this?
@timber mango looks like you don't have the uf2 bootloader on it, try this: https://learn.adafruit.com/welcome-to-circuitpython/non-uf2-installation
Interesting, I flashed it with CP 4 beta 3 successfully, but it still comes back with a 48K disk
if it's not an express board, then it's normal
it doesn't have the extra flash chip for the filesystem
Oh bummer. I had hoped to run one of these, but with what you've told me there's no room for the libraries. https://learn.adafruit.com/adafruit-stepper-dc-motor-featherwing/circuitpython
@stuck elbow thank you for your help!
@slender iron you mentioned during the meeting about holding MixerVoice off until 5.x. I imagine it would be better to close the current PR, create a 5.x branch, and then push the change there. or, could just leave it on the dm-mixer branch where it actually lives currently, and re-PR from there when the time is right. /post-meeting-thoughts
@stuck elbow Sadly the motor controller set of required libraries are much larger than 48K. adafruit_register is big enough alone to fill most of the storage. It's OK, I can order the M0 express and a rfm9x wing.
It's the price of not doing more research before ordering, so it's on me π
@timber mango It might be worth ordering the M4. If you can.
M4 is out of stock sadly
Ah
check digikey, etc?
I will, I have a whole cart of stuff from Ada that I'll let sit for a week.
also OoS. π¦
@timber mango those .mpy files are only 2kB each, and you don't need all of them
check if you have any hidden files in there that take up your space
I'm encountering a similar issue to the behavior @genevanmeter and @turbinenreiter noticed, on 4.0.0b3. Except, I'm not able to get it to connect.
Running the script in Code.py seems to lock up the device (can't view contents in Finder) and the REPL. I had to downgrade to 3.0 to remove the code.py (since it lacks 'wiznet'), then bump back to 4.0 to get the board connecting again.
Calling .connect:
>>> ss.connect(sockaddr)
Traceback (most recent call last):
File "<stdin>", ...
@timber mango get the .mpy files from the release: https://github.com/adafruit/Adafruit_CircuitPython_Register/releases
and I think you only need the i2c_struct.mpy
Adafruit CircuitPython 4.0.0-alpha.2-807-g186e31591-dirty on 2019-03-11; Adafruit PyPortal with samd51j20
>>> import board
>>> dir(board)
['__class__', 'A0', 'A1', 'A2', 'A4', 'AUDIO_OUT', 'D13', 'D3', 'D4', 'DISPLAY', 'ESP_BUSY', 'ESP_CS', 'ESP_GPIO0', 'ESP_RESET', 'ESP_RTS', 'I2C', 'L', 'LCD_DATA0', 'LCD_DATA1', 'LCD_DATA2', 'LCD_DATA3', 'LCD_DATA4', 'LCD_DATA5', 'LCD_DATA6', 'LCD_DATA7', 'LIGHT', 'MISO', 'MOSI', 'NEOPIXEL', 'RX', 'SCK', 'SCL', 'SDA', 'SD_CARD_DETECT', 'SD_CS'...
Thank you @stuck elbow is there a way to go and find those for each library? I looked for Adafruit_motor but didn't find one, etc.
click on "releases"
next to "commits"
or download the bundle, to get them all at once, and just pick the .mpy files from there
I pulled down the bundle and that's where I got the larger file sets. I couldn't find the actual library links, but found this and it links to each of what I need. Thank you, and thanks for your patience! https://github.com/adafruit/Adafruit_CircuitPython_MotorKit
This is just an idea for discussion: what if we filtered the names considered by auto-completion to filter out all names that start with the underscore, unless the user has already typed an underscore? The rationale behind this is that those usually are implementation details of the module/class in question, and the chance the users actually want to call them from outside are small.
@timber mango definitely snag a M4 when they're back in stock. Having that board makes LoRa development a lot easier, espcially if you want to use lorawan
@raven canopy let's just sit on it until we branch 4.0.x
I don't care if we do 5.0 in a month with the mixer stuff
@tulip sleet https://github.com/adafruit/circuitpython/pull/1624
ok. so leave the PR open? i'll look through and see if i can help with anything on 4.x. i will at least push my currently-building work to dm-mixer.
i'll try. let me spin that up.
How about listing SPEAKER first so it's used when the Pin is printed out?
otherwise we'll need a new pr
@slender iron oh man:
Breakpoint 2, nrfx_spim_xfer (p_instance=0x200042e8 <spim_peripherals>, p_xfer_desc=0x2003f5e8, flags=0)
at nrfx/drivers/src/nrfx_spim.c:555
555 spim_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx];
(gdb) p/x NRFX_SPIM_ENABLED_COUNT
$57 = 0x1
(gdb) fr 1
#1 0x0006f9d8 in common_hal_busio_spi_write (self=0x20008270, data=0x20008620 <incomplete sequence \375>, len=1)
at common-hal/busio/SPI.c:246
246 if (nrfx_spim_xfer(&self->spim_peripheral->spim, &xfer, 0) != NRFX_SUCCESS)
(gdb) p/x NRFX_SPIM_ENABLED_COUNT
$58 = 0x2
NRFX_SPIM_ENABLED_COUNT is an enum defined in a .h file, getting defined with two different values :/
on the track of WHY
yuck
hmm. i get no refspec on git push upstream dm-mixer. should the refspec be like this: git push upstream :dm-mixer?
what remote is upstream?
adafruit
add dean's repo as a separate remote
he commited straight to adafruit, afaict
ah maybe
what is your local branch name?
mixer_voice
back into the foxhole
yeah...progit book tries to explain the refspec...oof. π
but that also makes sense. refspec = <source>:<destination>
note: if you see a upstream/dm-mixer branch...sorry. π€£
np
try from earlier, but doesn't show up oh GH
~/source/circuitpython$ git push upstream upstream/dm-mixer
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/adafruit/circuitpython.git
* [new branch] upstream/dm-mixer -> upstream/dm-mixer
success!
π
if you want to move it to your own repo feel free
yeah, i pushed to mine before doing anything ruinous. how do you even change the branch in a PR?
new pr
thanks for all of your help!
Good question. Which is better to see in message? Actual schematic label? Or nominal common name? Yah, I dunno. Can see reasons for both. Let me know if you want it to be SPEAKER and I'll push that up. Easy peasy change.
I prefer the most human readable form when the output isn't labeled on the board itself. SPEAKER is the preference, AUDIO_OUT is only for backwards compatibility.
Good day all!
Can anyone help me with or direct me to a hot to for scrolling letters using a apa102 8x8 metrix
Using a sparkfun redboard turbo samd21 running circuitpython 4.0 beta 2
@umbral dagger and @gilded cradle have done some animations on led matrices but I'm not sure about text
@modest atlas samd21 is going to be limiting judging from my experiences with the dotstar featherwing and a Feather M0 Express.
You could look at the guide I did for that (over a year ago) for some ideas. I did text scrolling on the 6x12 dotstar matrix.
Will check it out thanks @dastels
For what it's worth I tried it on 4.0.0-beta.3 and same fault occurs there.
I've written some python code that now tries to initialise them with retries and then reverses order. My current implementation doesn't seem to be that useful as a workaround. Control-C/Control-D for a soft reset will eventually work but it often takes ten attempts :(
@rdagger could you test the attached .uf2? It works for me with your program (your program is very cute!). Thanks.
Problem was that nRF52840 SPIM3 peripheral got re-enabled in beta.3, but it has a hw bug, there's a workaround in the nrfx library, but the workaround breaks BLE. So disabled SPIM3. There was also another problem involving include files, but fixing that didn't fix the underlying SPIM3 problem.
[nrf52840-fix-spi-ble-2019-03-11.uf2.zip](https://github.com/adafruit/circuitpyth...
Try this uf2. I made one minor change to wait for a reset of a TCC before proceeding. But I don't see anything else wrong, like uninitialized variables.
cpx-tcc-wait-2019-03-11.uf2.zip
@meager fog yaay. I'm camp'd. I'ma camper βΊ
lol ok you can put your notes there
like on my thoughts about life the universe and everything, or something more specific?
cool, got it
should I add the ina260 board somewhere or did you want to review it first?
Add stable vs unstable coloring. Also add S3 and GitHub links for
leading edge builds and past releases respectively.
Lastly, import 3.1.2 as a one off stable release using a hacked up
script.

thank you @stuck elbow for the tip on using the precompiled modules. I managed to get all my libraries loaded, along with a basic stepper test. π
3KB to spare after the test code, now I have an excuse for leaving out the comments
Also, if that doesn't fix things, I'd be interested to know if you see any difference when using a lower frequency (like 2000 instead of 2000000)
@modest atlas, I did some animation for examples in the Adafruit_CircuitPython_FeatherWing library using some shifting functions I implemented. I didn't do text yet because I was going to look into using an existing library such as Adafruit_CircuitPython_Bitmap_Font, though I'm not sure if that would work or not.
Thanks, great job! The program works again using your .uf2.
Will your changes be incorporated into the next build?
SPIM3 has a hardware bug in rev1 nRF52840 (see errata). There's a workaround in nrfx, but it causes BLE to fail.
Reconfigured busio choices to use SPIM1 and SPIM2, disabling SPIM3. TWIM0 and TWIM1 are shared peripherals with SPIM0 and SPIM1, and it's not possible to shared dynamically right now due to static nrfx interrupt handler allocation. So choose to have one I2C bus available, and two SPI buses.
Later we may allow dynamic reconfig, try to fix the SPIM3 anomaly-fix bug (or at least...
Thanks for testing. Yes, this fixes a significant bug, and will go into the next beta (and will be available in intermediate builds here after the PR is merged)
what feather[s] are good for wifi and/or BTLE and support CircuitPython?
@solar whale on nRF52840, in order to fix a bug, I have stopped using the high-speed SPI peripheral (SPIM3). That leaves peripherals TWIM0/SPIM0, TWIM/SPIM1, and SPIM2. The 0 and 1 periphs are shared I2C/SPI, but due to interrupt-handler issues, we can't dynamically choose between the two. So there's the choice of providing one available I2C bus and two available SPI buses, or vice versa. We consulted and chose the former (more likely to need multiple SPI buses), but if you have other considerations, let us know). Your opinion is appreciated.
@tall granite nRF52840 feather does BLE. CircuitPython 3.x supports wifi on ESP8266, but we are dropping ESP8266 for 4.0 and providing wifi via an ESP32 co-processor now instead. The PyPortal is the first example of that (SAMD51 with on-board ESP32 co-processor modules). 4.0.0 is in beta now. BLE support is currently peripheral only, but central will be added in later 4.x versions.
@tulip sleet awesome, thanks. Does that mean that the Feather HUZZAH32 will be supported in cp 4.0
or, not because it's the main processor, not co-
No, because we'd have to do a complete port of CPy to that chip, which is a lot of work. It's much easier to use it only as a co-processor, for a number of reasons.
@tulip sleet Does the access to the SPI flash use one of the SPI buses so in general one remains for other stuff or is the SPI flash handles separately.
ESP32 has software and hw peculiarities, is not so well documented, etc. We'd rather be able to swap out the wifi co-processor if needed. We are using this library as glue between the main and co-processor: https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI
@solar whale there's a separate QSPI periph, so there's no conflict
I wonder if there will be a feather in the future that uses esp32 as coproc and supports CP4.. looking at the huzzah32 there's not much room for another chip!
@tall granite there's always new hw in the works, watch this channel for "LEEKS" and check out the "Top Secret" extracts from Ask an Enginner shows on youtube
@tulip sleet OK -- The only time I think a second I2C bus is used is for some boards with - on board sensors - like CPX, Hallowing, Neotrellis -- Are there any plans for similar nrf52840 boards ?
@solar whale, exactly, we'd flip the choice for CPX, etc. and have one private I2C, one avialable on board pins, and one SPI on board pins. I'll be adding some conditional compilation for that. And/or Nordic can fix their bugs
AH - sounds good
nordic forum indicates people are having other issues with SPIM3 32MHz SPI as well at higher speeds, so perhaps best to avoid it for now
@tulip sleet I misspoke(typed) It looks like only the CPX uses an "interenal" I2C bus. The others (pyportal,hallowing ) have the sensors in the SDA/SCL pins that are exposed as well. So only CPX is "different" I guess that is due to the limited number of pins available on the CPX. Can't afford to dedicate 2 to SCL/SDA.
that's helpful to know - one I2C bus is probably fine for most people
neotrellis accel is on a separate I2C bus as well ...
4.0.0-beta.3-4-g186e31591-dirty doesn't appear to make any difference, I still get initialisation errors. I'll have a play with frequency later. For lower frequency should l I use 4.0.0 beta 3 or 4.0.0-beta.3-4-g186e31591-dirty?
The uf2 I gave you fixes something that's probably inconsequential, but I would keep that change anyway, so test against that.
Have you looked at the pins.c file for CPX to get the actual PA/PBxx pin numbers? Then you can look up which TC's or TCC's are available for each PAxx or PBxx.
I saw a leek for a good-looking compact board using an ESP as a coprocessor. I expected it to be available before the more complex PyPortal, but that isn't how it happened.
not all that gets leek-ed gets finished
Also true. Back when I was using PIC chips, they announced an 18F010 which had a whole bunch of compute hardware in an 8-pin DIP. I still have the data sheet somewhere, but it was never made.
and sometimes it does get released, but in the mean time the concept changes so much, that it is unrecognizable from the original leek
I'm kind of hoping the little ESP coprocessor board shows up, as it seems useful in its own right, and wouldn't involve much hardware or software engineering effort/risk (basically just a smaller PyPortal without the screen and some other peripherals).
Sounds like a particle argon withs an SPI interface to the ESP32
However, I'm well aware AdaFruit has a lot of irons in the fire, nothing is standing still, and there are only so many hours in a day.
It could be that someone decided the Argon would fill that rΓ΄le and another part wasn't required.
Also, my use cases aren't everybody's: I'm intrigued by the power and solid environment of an M4 with the connectivity of an ESP, but without the size and expense of a PyPortal.
Agreed -- That is why I like the Argon - nrf52840 has BLE and I can use the ESP32 with ESPATControl, but ESP32SPI is much better
Yeah a breakout would be very cool, and agreed seems low-risk. Even a FeatherWing wouldn't need any new tech. I like my PyPortal and have some good uses for it, but I also have use for a small fleet of CP-WiFi devices that don't have TFT, to evolve my Arduino ESPs toward.
So far, just joining ItsyBitsy M4 and Feather M4 to Feather ESP32, but the latter especially is more expensive than necessary. At least both combos fit on a 1/2-size board with a little nudging in the x, y, and z axes π
I am amazingly fond of the ItsyBitsy M4 Express.
From some brief testing, 2kHz seems like similar behaviour with many failures using 4.0.0-beta.3-4-g186e31591-dirty.
I can't see a clear pattern yet, maybe a power off makes it more likely to initialise ok but it's not on the first execution of code.py as one might expect. The second attempt (i.e. power off/on, auto-execute code.py, soft reset post exception, second code.py execution) seems pretty successful though.
I think it shouldn't be so hard to look at the schematic of pyportal and make an esp8266 or esp32 featherwing
I mean, since you take power from the board and don't need the usb connection, it's basically just the module and nothing else
Having the USB makes esptool flashing really easy, but I'm guessing if three's an ESP32SPI breakout, it will be pre-flashed. Then the only issue is NINA fw updates. But yes, custom is always possible, e.g., https://github.com/maholli/SAM32
I'm using 4.0.0-beta.3-4-g186e31591-dirty which is a minor variant of 4.0.0 beta 3 from @tulip sleet . I just noticed when it spat an exception from my near-perfect code down the serial line (via normal USB connection) that I didn't see the full output. When i hit return the rest appeared. Was that my imagination or is there a difference/ buffering bug in the output now for 4.0.0 betas?
This could be my imagination, I'll try and reproduce
I've reproduced it
How can we help fill out: https://circuitpython.org/downloads with details on boards there. I'm specifically interested in Mini SAM M4. π
CircuitPython Organization
My near-perfect code has just spat an exception. I'm running 4.0.0-beta.3-4-g186e31591-dirty which 4.0.0 beta 3 with a minor tweak. The exception has half-appeared on my console (PuTTY on Windows) from the CPX over USB:
Press any key to enter the REPL. Use CTRL-D to reload.soft reboot
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Shared couter PWM failure I - trying in reverse order
Shared couter PWM failure II - soft/hard ...
@dawn rampart We'd love help with that! I believe you can fork this repo, make changes and submit a PR to update board info.
Yea! I just saw that. Forked already. I'll update and send a PR later. Thank you!
You're welcome! Thank you for contributing!
@main meteor we have a metro m4 wifi in the works - thats it for now. we're trying to source a esp32 pico chip in a tin but have not had any success so far - hopefully soon π
Added the board definition and details as well as the board image asset.
I don't know if this adds any information but as long as I did the test I thought I would add it here. I was looking at this code as a tilegrid example (I'm hoping to create similar app specific drawing primitives) and got curious. I added a bunch of debug print statements to rect.py:rect.INIT to see where it happened. The position value was initially (0,0) and changed after the line
self._bitmap =displayio.Bitmap(...)
to the same value printed in the above wrapper example code.
The exact debug statement I added to the various places in rect.py was.
print (self.position)
I'll be looking at this today because I'm going to switch position to separate x and y properties to make TileGrid consistent with Group.
I've updated the colors as asked but am not comfortable with sizing and positioning CSS. @jwcooper would you mind following up with positioning fixes? Thanks!

Yup! I'll be able to dig into it this afternoon (after meeting) yet.
4.x uses a different USB stack than 3.x so it's likely a bug in TinyUSB. Maybe @hathach will take a look.
Makes sense to me. I thought we tab completed with the entered prefix but I haven't looked into it.
We do. This is only for the case when the prefix is empty (as right after a period, for example).
The incoming buffer has changed with 4.0.0 because we moved from the Atmel USB stack to TinyUSB.
Looks like the incoming buffer is 128 bytes on the SAMD21: https://github.com/adafruit/circuitpython/blob/master/ports/atmel-samd/Makefile#L91
One easy fix would be to increase that value and see if the problem goes away. It will reduce the available heap memory so it's a balancing act.
@solar whale When you have time, could you review this PR (https://github.com/adafruit/Adafruit_CircuitPython_AdafruitIO/pull/17)? It uses the updated header encoding in ESP32SPI and drops the way the lib. manually encoded headers, so you'll need the latest ESP32SPI lib.

