#circuitpython-dev
1 messages Β· Page 236 of 1
yes
the slideshow will fail if you try to write to the drive while it's running. It gets stuck in the background loop when there's a reload pending (due to a file write).
that's what Limor saw (she was updating code and/or pics while it was running).
ah -- OK -- I wonn't do that! I'll pull 1604 and see how it works
#1577 may be a different problem
I also changed the SD mount to use board.SPI() otherwise it complained when it created the display device
in slideshowsd.py?
I was using slideshowf -- did not have slideshowsd
it had commented out lines for sd
i am not sure this is much different, but I was testing with this
was taht for pyportal -- it uses board.DISPLAY
yes -- just testing it
i started with that but couldn't get it to break :), so I just waited for my pyportal to show up
it was going great until I tried the SD card π
still fails with 1604
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-beta.2-142-gced37c100 on 2019-03-02; Adafruit Feather M4 Express with samd51j19
>>>
>>> import slidesjow_sd
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: no module named 'slidesjow_sd'
>>> import slideshow_sd
cats1.bmp Size: 37.0 KB
IMG_0493.bmp Size: 37.0 KB
IMG_1027.bmp Size: 66.2 KB
skye1.bmp Size: 46.2 KB
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "slideshow_sd.py", line 56, in <module>
File "adafruit_slideshow.py", line 200, in __init__
File "adafruit_slideshow.py", line 305, in advance
OSError: [Errno 5] Input/output error
>>>
if you can get a reproducible problem with 1604, that will be very helpful! I didn't see the #1577 problem at all. I'm using a 4GB card; what are you using? (brand and size)
8GB sandisk -- it works fine if I just mount it and read from it
as you can see it reads the file list
did you prep the card with images on the host computer?
There is this issue https://github.com/adafruit/Adafruit_CircuitPython_SD/issues/11 but not sure if there's a relation. The sdcard code needs more work
works fine from the Flash drive
np -- I'll look over the issues and see if I have anything new to add. Sorry I did not review them first.
try reformatting the card on the host and copying the images fresh. That's the only thing I can suggest.
yes
thanks -- I'll keep trying -- have to go do some errands first
Travis is listing errors like this on the nrf builds:
common-hal/nvm/ByteArray.c: In function 'write_page':
common-hal/nvm/ByteArray.c:44:31: error: 'FLASH_PAGE_SIZE' undeclared (first use in this function)
if (offset == 0 && len == FLASH_PAGE_SIZE) {
Remove this comment; it's not necessarily true any more.
I don't think this is necessary, but see below for other issues.
The CPU is halted while flash erases and writes are in progress, it appears, from the datasheet and some comments in https://devzone.nordicsemi.com.
I realize using internal_flash.c itself is not the right way to go, because that's conditionally compiled, and included only when there's an internal filesystem. But a low-level flash-writing routine could be factored out to nrf/peripherals or something like that. May or may not be worth it.
@pastel panther That's what's confusing me. I can't find those pin defs anywhere, but example code for PyPortal and Feather M4 use those constants, and they work. Not sure where they're coming from.
@crimson ferry Each board has its own pin definitions. Some are documented in the Learn Guides, and some are not (but maybe should be). You can see them all in the source code in circuitpython/ports/*/boards/pins.c: https://github.com/adafruit/circuitpython/tree/master/ports
But we shouldn't have to have regular users read the source code, so if you see omissions in the Learn Guides, please let us know. Thanks!
Thanks! Found the ESP_ control pins in PyPortal pins.c, but I don't see them for Feather M4 even though examples use them. The original thing I was wondering was whether those pin defs should go out to all Express boards since any of those could be used with ESP32SPI. Minor thing, but consistency in docs and example code. Or maybe that's not the right place for them, and pin numbers should be the order of the day.
@crimson ferry The ESP is just one example of something that could be connected to the SPI pins on any board, so we wouldn't make up specific pin names for a specific SPI device. If there are Feather examples that use the PyPortal pin names then that's a mistake; le us know.
Thanks, much ado about nothing I think. Some examples sent me down a rabbit hole. I'm on the learning curve and asking a lot of questions. I shouldn't go mucking about in libraries at this point, but I'm happy to help tweaking docs, examples, etc. if that's of interest (just need to figure out the process).
@crimson ferry I just checked all the examples in the ESP32SPI repo and I agree with you that there is room for improvement there. They're not consistent (some refer to board.ESP_CS, others board.D9 for the same pin). Additionally none suggest what board they were written for or that they can/should be changed for other boards.
This is totally understandable because this is a brand new library that is still in active development by multiple people, however improving the docs will be helpful down the line.
also please do go mucking about in libraries! More eyes on the code from different viewpoints is helpful, especially the example code. We appreciate you voicing that they're a bit confusing!
If you are willing to help out fixing up the examples, here is a guide on the workflow that we (and most open source communities) use:
https://learn.adafruit.com/contribute-to-circuitpython-with-git-and-github/overview
ESP32 METRO_M4 function
RST D5 reset
GND GND ground
USB +5 power
33/A9 D10 ready/busy
14/A6 MOSI SPI MOSI
SDA/23 MISO SPI MISO
SCK/5 D9 SPI CS
MOSI/18 SCK SPI SCK
thsi is what I use for a metro/feather_m4
I use same for Feather M4 & ItsyBitsy M4
Tbh the 'wifi co-processor' guide could use some work in the esp32spi part as well. @solar whale is that something I can do?
@pastel panther You may want to check with @meager fog but I'm sure any help would be appreciated. There is very little information now for the esp32spi setup.
also @gilded cradle has been quite involved with it.
It seems like things are stable enough in the libs for that to be warranted, ya?
I think so -- the hardest thing is deciding waht demos to document! also it ties into wifimanger and adafruit-io
but it is stable and working quite well at this point.. a few open issues but no biggies.
I'm going to see if I understand displayio enough (and the code's there) to get a little wifi signal strength indicator going from rssi/signal_strength
Best examples for displayio are the Hallowing guides?
Just a quick fix to update the OnDiskBitmap example code. Tested on a PyPortal with a sample.bmp doggo
@crimson ferry There aren't any great examples yet. This one is the one I just submitted a PR for but it assumes a built in display like a PyPortal or Hallowing:
this is the only other one I'm aware of at this point and it requires an ILI9341 screen. It may have some bugs as well
In that example Sprite should be TileGrid
tbh displayio is still alpha-ish at this point. Anyone venturing into that territory is advised to bring a machete and snake bite kit
@pastel panther I eagerly await your RSSI meter. Are you going to do it with multiple BMPs or render it differently?
Thanks. I eventually want to be able to mirror, as closely as possible, what I display on PyPortal, TFT+
touch, and even ePaper π
I think TileGrid is named such that it can allow you to keep a map of bmps in a single bmp, so I'm going to look in that direction. If not I'll probably just have several mono bmps
Glyph may have a part here too
@crimson ferry it's totally doable; it's what I did before I got my PyPortal
I'm trying to figure out a good animation for "sending data to IO" on the display
maybe spinning the adafruit logo when its sending data would be fun
that would be cool. Aseprite is a great tool for such things
Oh, that looks awesome
definitely worth the $15
Going to download the trial and see what I can do with it, looks ideal though thanks!
@pastel panther @solar whale the reason esp32spi isnt documented fully is the feather is kinda overkill board to use, was going to replace with the minimal breakout coming out soon
like, next week
π
@meager fog That's great! I was hoping for such a board! WooHoo!
kk
heeey @meager fog how about a ESP32-WROVER-IB or similar breakout with an external antenna hookup?
perhaps it's a bit late to ask for such a thing if there is already one coming down the pike
wrover is the longer one
nice
and optimized ESP32SPI-only breakout (just layed out so no ETA)
mmmm... yum
I thought there were other differences other than the wrover being longer but maybe not
Will we load code via "passthru" or via TX/RX or either?
I assume it will ship with NINA_W102 installed
yeah
and you can load code with tx/rx/gp0
@pastel panther the wrover is longer cause of PSRAM, but WROOM has a version w/uFL
I'm drooling over here. Feather Huzzah32 gets you the battery & charger, but smaller and less $ is... π
@meager fog I've been excited to get my hands on this. A little less-so now that the PyPortal is out, but there are tons of non-screen IoT applications.
yay
yah now that the software is solid and tested, we can kick off a lot of iot things - metro wifi n more
mostly had to waste my time figuring out which implementation to use
@meager fog do you have a sense of how resource strapped the esp32 is with the NINA firmware going full bore? It seems like there might be spare capacity there but I'm not really basing that on anything
plenty left
i think it has one core just for wifi, one for SPI
its barely doing anything
I have an army of arduino 8266 huzzah & feather IoT devices, but I really want future ones to be CP+WiFi, so this is awesome, more choices for form factor, etc.
im curious if ESP8266 could be adapted to run the SPI code - its possible i think
There appears to be some conflict with displayio and SPI.
I have a TFT featherewing on a Feather_m4_express ( same issue on a particle xenon)
and if I run the stmpe610_simpletest which reads the TFT touch screen it works normally as long as I have not configured displayio first. If set up diaplayio -- so the REPL is being echoed to the screen, and then try the stmpe610_simpletest, it crashes.
PR #1604 had no impact on this -- it behaved the same with or without it.
normal run
Pr...
@meager fog the 8266 has issues with TLS1.1/2 doesn't it?
Hey there, the learn.adafruit.com link is broken, but the blog post is still up. What's the corrent learn.adafruit.com link?
@pmcanseco both of the links above work for me as does the one in this blog post:
https://blog.adafruit.com/2018/02/02/guide-update-get-connected-to-the-repl-using-pycharm/
Are you talking about a different link? If so please paste it here.
@kattni made it private because it stopped working (i think?)
I removed the page because it never really worked properly. It was inconsistent and for me, at least, required deleting all of my settings to get it to work each time. It was never designed to work with CircuitPython, it was designed to work with MicroPython, so it provides a lot of features that are irrelevant to CP such as flashing the board.
If you wish to access the REPL from PyCharm, consider using the built in terminal and screen to connect to the serial console/REPL.
<@&356864093652516868> Here is the notes doc for Monday's CircuitPython Weekly. Feel free to add your hug reports and status updates. Thanks! https://docs.google.com/document/d/1K9VhGkd1craMPgTVJkkKg64Qe0MgnjUO7rCuHelz40I/edit?usp=sharing
It's still Saturday!
Indeed.
what is the 3rd element in the proxy for? I know the first two are get/set.
const mp_obj_property_t displayio_ondiskbitmap_height_obj = {
.base.type = &mp_type_property,
.proxy = {(mp_obj_t)&displayio_ondiskbitmap_get_height_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj},
};
from py/objproperty.h:
typedef struct _mp_obj_property_t {
mp_obj_base_t base;
mp_obj_t proxy[3]; // getter, setter, deleter
} mp_obj_property_t;
that suggests a deleter
this could be me not understanding tilegrid but when i subclass it to create shapes with outlines, it displays in the right spot, but the position is weirdly transformed?
download this:
https://github.com/ladyada/Adafruit_CircuitPython_Display_Shapes/blob/master/adafruit_display_shapes/rect.py
then run:
import board
from adafruit_display_shapes.rect import Rect
# Make the display context
splash = displayio.Group()
board.DISPLAY.show(splash)
rect = Rect(10, ...
that makes sense
saw your PR update; I'll take a look in a minute
No worries, that makes sense & shouldn't be too hard to get going.
Travis is listing errors like this on the nrf builds:
common-hal/nvm/ByteArray.c: In function 'write_page': common-hal/nvm/ByteArray.c:44:31: error: 'FLASH_PAGE_SIZE' undeclared (first use in this function) if (offset == 0 && len == FLASH_PAGE_SIZE) {
Oh, right, I meant to selectively compile this code only for boards where NVM is configured ... I'll work out how to do that ...
my Rust samd51 PR got merged π
it's not in the dependency manager for rust though because the guy who has access to that disappeared
he's back!
congrats @exotic pumice ! I've been meaning to take a look at it as rust seems pretty cool and obviously I love micros
yeah, I'll have to write a learn guide at some point but idk if it's ready for that
@> > PS: I had build errors in lib/tinyusb/src/class/msc/msc_device.c when building master with compiler version gcc-arm-none-eabi-8-2018-q4-major & ended up having to build with -Wno-error=stringop-truncation
I told @hathach about this when testing out gcc8, so he's aware: hathach/tinyusb#33
Ah, great, I should have gone and searched for that! Looks like it's just getting paranoid about us copying the first 8 bytes of an 8-bytes-plus...
a little preview for folks here on the weekend...
Check with #if CIRCUITPY_NVM (not #ifdef, it will b 1 or 0). Iβm on my phone so canβt check easily, but I think thatβs right.
Looks great!
Adafruit CircuitPython 4.0.0-beta.2-174-g0ac40235b-dirty on 2019-03-02; Adafruit PyPortal with samd51j20
>>> import board
>>> board.DISPLAY.height
240
>>> board.DISPLAY.width
320
Someone else will have to merge but this looks good to go. @dhalbert?
@river quest it's so bendy!
On Sun, 3 Mar 2019, at 10:52, Dan Halbert wrote:
Check with
#if CIRCUITPY_NVM(not#ifdef, it will b 1 or 0). Iβm on my phone so canβt check easily, but I think thatβs right.
Yeah, that stuff changed a bit since I originally wrote it and I didn't get the rebase quite right ...
-----N
@river quest eink ring?
hunts for a spare sercom
anyone want to try SHAPEZ
i haz SHAPES
π΄ and β¬
I got everything published 
btw we had sam21_mini before circuitpython did. just had to brag
@pastel panther oh wow that was fast, i just went to make myself some π΅
@exotic pumice nice work π
ok next up - BUTTONS
which is why i needed shapes to begin wif
I've been at my bench all day
@meager fog, thank you for creating awesome hardware
yayyyy! i only do it cause people like it so much
π
ok time to kode more buttonz
Its time again to try and get this in. Updates since #1144:
-
Instead of putting this in
pulseio, this creates a newfrequencyioto better manage inclusion/exclusion. Most of the smaller builds (M0 basic, CPX, etc) were exceeding flash size. -
Now uses a single "reference TC" for interrupts/results calculation, and "capture TCs" for frequency sensing. This keeps the interrupts from flooding the MCU, but does eliminate 1 timer available for capture. I've had up to 2MHz input detected...
Closing in favor of #1614.
Are circuitpython libraries compatible with micropython?
@stone bronze not likely for most, if not all, of them. though, they might just need some minimal conversion.
Mmm kay, thank you
a followup - the issue does not occur if I execute
displayio.release_displays()
then run the stmpe610_simpletest
I believe tjhe displayio object (and its SPI object) and the pin assignments live past a soft reload, so that the screen can show the text of the reload. I'm not sure if your issue is associated with this, but it's something to keep in mind.
Use uint16_t here instead of mp_int_t, because that's the type of width and height that are passed in.
I don't think you meant mp_float_t here anyway.
Yep. Hopefully if anyone else (future me) runs into the same issue, they'll find this. Otherwise, I suppose there's nothing to fix, without making things clunkier, anyway.
And I got my PyPortal yesterday! And I spied a certain @gilded cradle 's tweet with using the stemma connector π
Yeah, I was just seeing what I could do with just I2C.
Success?
Yes, so far.
π
I need some travis sympathy rn
my build was successful, until it started packing the changes and ran out of time
big oof
I have been trying to use a particle xenon with a tft featherwing to test displayio.
In general, it works fine except that very often I on power up, the system goes into SAFE mode due to a low power condition. I have not seen this with the feather nrf52840 or feather_m4_express.
It usually recovers and boots normally if I just press RESET so it appears to be related to the power up.
Since the issue does not occur with the feather nrf52840 it appears it is due to the power supply on...
It might be that the power supply design is such that there's more of delay than on the feather before the the voltage gets above 2.7V, which is the brownout threshold. We could wait some number of milliseconds before enabling the brownout detection. This is in port_init() in ports/nrf/supervisor/port.c`.
Thanks! I will experiment with it.
hmm -- I tried adding delays from 2 to 10 ms and it made no difference but I found something else of interest. Grounding the EN pin on the particle_xenon only drops the 3.3V signal to 1V ?? It goes to 0V on a Feather_m4 (and I assume on all feathers) Both rise to 3.3 V in a few hundred microseconds but does the threshold test possibly get confused because the xenon is starting at 1V? In any case - having EN not working properly is troublesome. That is how the TFT featherwing controls power...
Opened up new M0 express and updated to CircuitPython 3.1.2 from the latest Repo and get the following:
Traceback (most recent call last):
File "main.py", line 14, in <module>
File "adafruit_hid/keyboard.py", line 35, in <module>
File "adafruit_hid/keycode.py", line 31, in <module>
File "adafruit_hid/keycode.py", line 195, in Keycode
MemoryError: memory allocation failed, allocating 776 bytes
Adafruit CircuitPython 3.1.2 on 2019-01-07; Adafruit Metro M0 Express with samd21g18
Which version of the adafruit_hid library did you load? You need to use the compiled .mpy 3.x version from here: https://github.com/adafruit/Adafruit_CircuitPython_HID/releases/latest. Otherwise you'll run out of memory when importing. And if you have both the .py and .mpy versions, the .py will take precedence.
does the neotrellis not have a crystal?
have I asked this before?
offers to play eagle chicken
turns board over
nope, it does not appear to. I think the pins are busy key matrix-ing and sensor-ing
yeah, a contributor to atsamd-rs was wondering why GenericClockController::with_external_32kosc() wasn't working
that would be it
we have trellis support now
kinda
nice
the neopixels are pretty broken but that's an external library to atsamd-rs
right. keep in mind it's also got the status dotstar on the back
You would think it would be easier, having it's own clock π€·
it requires a bitbang-ed spi driver
sercoms not working yet?
no, circuitpython uses a bitbang spi driver
the pins are backwards so you can't use a sercom
oh right
that was a fun day
kinda
I mean i'm sure you have plenty of other stuff to keep you busy
I wrote a bitbang spi driver but didn't expect it to work
it's really slow
we got neopixels working first
"working"
which means flashing arbitrary colours rapidly
but all we really needed was proof the board was running our code
and not panicing
I mean, even random blinking is something to be proud of
yup
also, another reason we went with neopixels is I don't have any boards with dotstars so I would be less able to help if the bitbang spi driver didn't work
I did, until my raspberry pi died, and the guy doing the neotrellis did not
after I wrote bitbang spi I tried to do bitbang uart rx, that's a nightmare
hm. are the neopixels using a sercom?
you are correct, no sercom on pa27
I forgot this had the "slow" feature
that might work
yeah it works
I think the trellis guy went to bed
who's that?
@pale kelp
you wouldn't happen to have a neotrellis wouldja?
β @pastel panther
lol
π
I'll try a uf2 and if it does nothing do you know how to work bossac?
I'm just not convinced my uf2 converter works correctly
It's been a while but ya
I'm kinda busy with some driver work atm but I can try later
a few more observations:
I checked a particle argon and also found that the 3.3V only goes to 1V when EN is grounded.
Interestingly, when I did that, the argon rebooted to Safe Mode!
The Safe mode boot only appears to occur if the EN pin is used to power cycle the xenon board on the TFT featherwing. It boots reliably if I just apply power via the USB port.
I will post a question to the Particle.IO forum.
I'm sure nothing will change π https://blog.travis-ci.com/2019-01-23-travis-ci-joins-idera-inc?utm_source=acquisition_email&utm_campaign=acquisition_comms
When we started working on a Continuous Integration solution back in 2011, it was hard to imagine what Travis CI would become. Years later, weβre still continuously working to make our community an...
Not new, but just received an e-mail regarding this -- I miissed the original announcement
archiving the post...
Will anything change for me?
At Travis CI, we are committed to remaining the solid stand-alone solution you have come to rely on. We will continue to offer the same services to our hosted and on-premises users. With the support from our new partners, we will be able to invest in expanding and improving our core product, to have Travis CI be the best Continuous Integration and Development solution for software projects out there. We will join Ideraβs Testing Tools division, which also includes TestRail, Ranorex, and Kiuwan.
What impact will this have on open source?
Open source is at the heart of Travis CI. We will continue to maintain a free, hosted service for open source projects, and will keep building features for the open source community. Additionally, our code will stay open source and under an MIT license. This is who we are, this is what made us successful.
remembers is private equity firm, lays off senior technical staff
<@&356864093652516868> Here is the notes doc for today's CircuitPython Weekly in a little over an hour. Please add your hug reports and status updates even if you'll be there in voice. Thanks! https://docs.google.com/document/d/1K9VhGkd1craMPgTVJkkKg64Qe0MgnjUO7rCuHelz40I/edit#
CircuitPython Weekly for 4 March 2019 Community News Latest HackSpace magazine (issue 16) has 3 or so articles which include CircuitPython and some familiar community members! Check it out the latest issue on their site, free PDF download: https://hackspace.raspberrypi.org/is...
after flashing the latest (4.0.0 beta 2) firmware and loading 4.x libraries, I can see the trellis m4 as a storage device and can load/execute code on it, however I cannot see the device as a tty serial connection:
vjmorrison@penguin:~$ ls /dev/tty*
/dev/tty
vjmorrison@penguin:~$ python3 -m serial.tools.list_ports
no ports found
vjmorrison@penguin:~$ ls /dev
console fd initctl lxd net ptmx random stderr stdout urandom zero
core full log mqueue null pts...
@jerryneedell you tested this, I think? Could you approve so we can get wider testing on this? Thanks.
I will be lurking today folks, waiting in the doctors office.... π€
good day to all
No audio for me today. Things are noisy over here today. High levels of classical music.
We're still finishing up a meeting. Going to be a couple of minutes.
Indeed, good afternoon all you wonderful people π
@errant grail thatβs ok, keep on Hayden.
No mic for me either. I am on a train to philly from florida
lurking
Testing no-mic. One, two, three.
"test". <---- Can you read that?
the "e" is missing
@raven canopy we can't, something must be broken
ok im on audio today!
Lurking
Lurking π
_has no mic
ok @idle owl made it (had to do running-an-adafruit thing)
LETS GET THIS PARTY STARTED!!
Find maker jobs in 3D and CAD, Art, Design, Education, Embedded Development, Engineering, Fabrication, Marketing and Communications, and Web Development
Find maker jobs in 3D and CAD, Art, Design, Education, Embedded Development, Engineering, Fabrication, Marketing and Communications, and Web Development
(lerkin' an' twerkin')
@sterile bronze @jolly egret are you lurking?
yes scott
kk thanks
Just lurking this week π
ill do hugz & update at once - cause i gotta run at 2:30
π
I was playing with those last night
HyperCard!
PyperCard!
Very nifty!
OMG THE HYPERCARD LOOKS AWESOME!
Thanks π
ok muuuuted
+1 for the textarea update, calculating the width with a lot of text areas was difficult (especially with sensor values/changing textareas)
cant wait to try it π
yay!
What's the expected price for the PyPortal?
yep! it does 'break' current code so FYI - the origin point is now at t he font Baseline not top-left bounding box corner
probably the price in the store
ah cool! didn't catch it had been released
ta! @river quest
@tall granite Are you lurking today?
Lurking... Driving
thank you!
- @sajattack for getting their SAMD Rust work finished and merged. Been fun to watch the progress on that.
- @kattni for the "kattni-on-the-spot" adabot merges over the weekend.
- @adafruit for getting the PyPortals out to folks. Awesome device, and looks like people are enjoying it immensely.
- Group Hug!
back soon with focus π
but we're keeping the circuitpython fire warm for ya
ya, seems like it!
Not lurking today, though. Just text only.
Oh I'll come back to you for hug reports!
np!
π
k gotta run - thanks everyon!
Group hug today to the community and team for the amazing work done on PyPortal! The abstraction provided by the pyportal class makes it sooo easy -- up and running in less than 10 minutes. Looking forward to the enhancements as I have plansβ¦
@idle owl - have a second to share my hug report: @main meteor, @tulip sleet, @meager fog, @solar whale and a few others who I am forgetting who helped me get displayio going on my Poor Man's PyPortal (Metro M4 Express + TFT )
@errant grail I expect a Euro Rack module stat
@pastel panther one is in the works...
@errant grail there may be a DAC output on D3 π
π΅
Thanks Mike, I always enjoy reading the Newsletter.
+1 Mike, the newsletter is an absolute joy.
Special Project 869 will be an improvement over Special Project 868 ?
in every single way
870 will knock your socks off. It might be a robot designed to literally take off your socks.
Last Week:
-
adabot:
- added import checks for renamed
ure,ujson, anduerrnomodules. - updated
-vcommand arg to ensurevalidate_contentsis always run [first], so that bundles that are in-work are not included in validator results. Does not run/output full results unless explicitly included as a validator.
- added import checks for renamed
-
FrequencyIn: PR is in!
This Week:
- circuitpython-build-tools:
- Work on folderizing example files
- adabot:
- Look into library insights results showing zeroes
btw the original shipment of my board still isn't here , I only have them because OSH Park is awesome and pushed through a replacement
@pastel panther IoMushrooms would be perfect for an #IoTuesday, even if it's not done yet π
Congrats!! @slender iron
congrats Scott!
thank you!
Congrats Scott!
@prime flower I got a bunch of pix so I can send 'em over with some deets
Congrats
Congratulations bud!
Congratulations Scott!
Also congrats Scott!
Just my $0.02: PyPortal alarm clock project is done, guide is written. Just putting finishing touches on it and prototyping a case in cardboard. All CP. It turned out nicely, although faster/optimized screen update will make it nicer.
2 cents? how so?
STATUS UPDATE Completed the mouth piece code for my midi ocrina. I am also going to build a mouth organ too.!
Wrapped up the Range_Slicer CircuitPython library yesterday and am celebrating the successful completion of my first multiple-instance class today (with coffee and speculaas cookies). The class was derived from a synth project that needed to emulate a rotary switch with a potentiometer. It evolved into a general-purpose analog value converter that compresses or expands the input value then quantizes it into a collection of precise output slice values. The class detects input value changes and applies selectable hysteresis when slice edge thresholds are reached to eliminate noisy dead-zone issues, all without any internal delays in the code.
Applications include converting rotary knob position to MIDI control or note values, analog signal noise processing, as well as level detection and display. Have successfully tested up to 6 simultaneous instances with one of John Parkβs projects and will be using it as the primary processing algorithm for a new Eurorack module.
Next step is to test it with 16 simultaneous instances on the Grand Central M4 Express board. I also want to try replacing the linear algorithm with some non-linear processes that could be used for things like decibels, dew-point, and pH. I may get distracted by using it to create a NeoPixel strip/array color organ with multiple analog inputs and overlapping color zones. No β Must. Finish. GitHub. Documentation. First.
@errant grail β€ β€ β€
@umbral dagger screen optimizations will come once 4.0.0 rc is out the door and soaking
sooooooooooo useful
back from my meetin'
This meeting is so awesome!!(First time visitor)
I have to send a hug report to all of you!
As a young CS Lead for my Robotics team I am going to use some of your meeting structure for my team. Thank you so much for all of the great work you do!
anyone have sphinx experience wiling to stick around after the meeting, I would love help?
@jolly egret awesome, please do π
@slender iron That's cool. Part of the UX of the clock is swiping.
left and right? that could use hardware scroll
@umbral dagger is your touchscreen swipe interpretation code up anywhere?
@solar whale I can test a xenon later.
I am trying to get my Jetson TX2 to run your Circuit Python libraries and am hoping to get some direction to getting the platform detect libraries to detect my board but I am having problems. Any advice will be great. Attached is a overview picture of our custom circuit that is running 4 or 5 Adafruit products that fall under your circuit python libraries.
I'm building this platform on a nodejs express server.
Thanks in advance for any advice.
@solar whale mine still have OEM firmware, so I can close that loop as well
i haz a q too
@jolly egret hiya goood news coming soooon
but its a secret
so pretend you didnt hear a thing about it
Hear what? Huh?
what??
hear a thing about what?!
"Not out yet. Don't ask." π
@jolly egret the best thing you can do is - IF the code does come thru as a PR, we can tag you to test
gotta run! byeeeee π
π thanks - please subscribe to the open issue
@meager fog is there a link so I don't subscribe to the wrong thing?
This might already exist, but will there be (or is there) an online CircuitPython editor for Chromebooks
Ah cool, yeah, I think that would probably be the best option
@tall yacht https://learn.adafruit.com/using-circuit-playground-express-makecode-circuitpython-on-a-chromebook
decloaking...
quick/late hug report to @solar whale for getting someone working again this morning in #help-with-circuitpython.
...cloaking
definitely!
Right. PCIe slot is always a PCIe slot. It doesn't dynamically become a SATA port...
phone makes me slow hehe
Thank you so much everyone!!!!!! I'll be here next week just to listen in! Exciting things you all are doing!
Thanks everyone, the community is what makes CircuitPython what it is
Agreed! Thanks everyone!
Thanks!
Thanks
Nice job @idle owl
Thanks Scott, Kattni & Dan
π
Thank you all, keep being wonderful!
Yeah, glitchy
thanks everyone
@idle owl You'll need more and more-bigger screens.
Who's the best person to contact over writing tutorials for learn? I'd like to write some beginner projects for the EduBlocks circuitpython editor
@errant grail that will never end either... always need more/bigger screens
@fluid helm Mike Barela π
@fluid helm @turbid radish
Thanks! I'll message Mike
@errant grail Yes and yes. (But also we zoom way in for the meeting)
@modern wing I've gone vertical with mine. There's still another 2.5ft available until the ceiling gets in the way.
I'm working with a laptop screen and a 21" old screen. so.....
sphinx-build . ~/temp
Had to duck away to a 2:00. Thanks all!
I got my pyportal on Friday β given the situation Iβm in, I should be able to look at it on Wednesday or so π
here is my index.rst file:
sphinx-quickstart on Mon Mar 4 15:12:17 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to TG-Gui's documentation!
==================================
.. toctree::
:maxdepth: 2
:caption: Sub-Modules:
../tg_gui/index.rst
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
it is giving me this error:
Running Sphinx v1.8.4
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: [] 0 added, 1 changed, 0 removed
reading sources... [100%] index
/Users/jonahym/Desktop/tg_gui/docs/index.rst:9: WARNING: Error in "toctree" directive:
invalid option block.
.. toctree::
:maxdepth: 2
:caption: Sub-Modules:
../tg_gui/index.rst
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 1 warning.
The HTML pages are in _build/html.
does an invalid option block rings a bell for anyone?
@umbral dagger trying the alarm clock, but getting error about keyword splash-max -- what update am I missing?
ah found it -- pr 7
@solar whale That's still in a PR in the PyPortal module.
@marble hornet try putting an empty line after the caption line
also FYI -- I like using "id" instead of "q" for openweaher -- allows mor conroll when city name is noe unique.
@raven canopy caption line?
:caption: Sub-modules
../tg_gui/index.rst
Like Python, reST is whitespace sensitive.
gave: /Users/jonahym/Desktop/tg_gui/docs/index.rst:9: WARNING: toctree contains reference to nonexisting document 'tg_gui/index'
Well, it's progress. π
agreed
yes
Alright. Try adding/changing the sys.path there to include the directory above docs like here: https://github.com/adafruit/Adafruit_CircuitPython_Bundle/blob/d6a48364ca4174f88406a876af82cf1e930a7a9f/docs/conf.py#L5
Then, remove the ../ from the toctree pointer.
@umbral dagger its running! nice!
invalid option block.
.. toctree::
:maxdepth: 2
:caption: Sub-Modules:
tg_gui/index.rst```
hrmmm it's back dun dun dun
Empty line?
i threw the code up on github: https://github.com/TG-Techie/tg_gui/tree/add-docs/docs
but i don;t think so: https://github.com/TG-Techie/tg_gui/blob/add-docs/docs/index.rst#L5
@idle owl Where is thie tutorial on learning how to use Git and Github?
Search the Learn system, I don't have the link handy. Also it should be linked in the CircuitPython Library tracking issue.
@umbral dagger hey i want to bump splash to 15
can u live with that instead of a kwarg?
sure
@meager fog PR is updated
In the long run maybe the DPLL1 stuff might be factored out into samd-peripherals, in case other code wants to do similar stuff
Yeah, that is totally doable I think. I can work that soon.
Can someone with a NeoTrellis M4 please try this UF2?
apparently testing neopixel code on one SAMD51 isn't good enough for it to work on all SAMD51s, and tarcieri seems afk at the moment
frequency in just got merged? gratz @raven canopy
@marble hornet I spot a couple things I think, but I'm on my phone. I'll try to sit down with it a little tonight..
thank you
Thanks @exotic pumice! It's been a journey, that's for sure. Still could use tweaks I'm sure. And nRF porting is going to prove...adventurous at first looks. π
haha
video is up https://www.youtube.com/watch?v=BNUx2s7Q23s
Notes can be found here: https://github.com/adafruit/adafruit-circuitpython-weekly-meeting/blob/master/2019/2019-03-04.md Visit the Adafruit shop online - ht...
watching now
@exotic pumice got your uf2 will try it as soon as possible. probably tommorrow.
thanks @inland tusk
@umbral dagger cool! the alarm went off!
@raven canopy FYI -- tried grounding EN on a "stock" particle argon board still get 1V
does travis have blinka installed?
how does it find modules in modules?
here is my issue:
Removing everything under '_build'...
Running Sphinx v1.8.4
making output directory...
loading intersphinx inventory from https://docs.python.org/objects.inv...
intersphinx inventory has moved: https://docs.python.org/objects.inv -> https://docs.python.org/3/objects.inv
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 5 source files that are out of date
updating environment: 5 added, 0 changed, 0 removed
reading sources... [100%] system_handler
WARNING: autodoc: failed to import module 'gui'; the following exception was raised:
No module named 'gui'
WARNING: autodoc: failed to import module 'system'; the following exception was raised:
No module named 'system'
WARNING: autodoc: failed to import module 'system_handler'; the following exception was raised:
No module named 'system_handler'
looking for now-outdated files... none found
pickling environment... done
checking consistency... /Users/jonahym/Desktop/tg_gui/docs/modules.rst: WARNING: document isn't included in any toctree
done
preparing documents... done
writing output... [100%] system_handler
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 4 warnings.
The HTML pages are in _build/html.```
autodoc_mock_imports, defined in conf.py, does a pretend import of the modules listed in it
are those your modules in your repo?
could you push all this to a repo if you have not already?
it's hard to debug without seeing the whole thign
trying stuff...
there are two index.rst files: one is in docs, the other in tg_tui/tg_gui
there should be only one, in docs. In general I would say copy the layout of a an existing library, like BluefruitConnect or some other library that has multiple source files
that's not the problem, but it needs fixing
okay... do i need to point the make file to the ../tg_guil/index.rst
oh i see, it made them in docs
@solar whale i'm seeing it too, but a peak of 0.7V. on stock firmware, i don't even get the status LED with EN tied to ground. (which isn't surpising...)
Thanks for confirming.
but it is still giving me import errors
@marble hornet you have separate .rst's for each file, you can use an api.rst instead. The main bug for "gui not found", etc., is that in the .rst file that mentions the module, it's listed as .. automodule:: gui, but it should be .. automodule:: tg_gui.gui, and same for the other modules.
that will fix the import errors, then that exposes other errors
trying...
also, if programs is some examples, move it out of tg_gui and up one. also having both the repo and the module called tg_gui is confusing, and leads to tg_gui/tg_gui
okay, i can defiantly move examples to another location
again, take a typical library as an example, and I think you'll be happy. sphinx is a lot of incantations, and it's good to start from a template.
if you want to be defiant, that's ok π
i have found it to be one of the least friendly doc systems I have encountered
I changed modules.rst to api.rst and removed the foobars.rst. however i am not seeing where the .. automodule:: tg_gui.gui goes as modules did not have automodule:: anywhere init
**in space it π
awesome, it can;t find mem_free error, I'm guessing a try except would not work since it would run and still hit the mem_free?
@solar whale looking at the sheet for the Vreg they used, seems it doesn't go to 0V. 0.8-3.6 is what i'm seeing; though i could def be missing something in the sheet.
https://www.mouser.com/ProductDetail/Torex-Semiconductor/XC9258A33CER-G?qs=%2Fha2pyFadujUTQZk8f4smMiptD3WzT2R4AV22OoGCTR08u5uwHdHuQ%3D%3D
@marble hornet it doesn't know anything about what's in the gc module, so you need to autodoc_mock_import that
yah
@raven canopy interesting so the question is if that had an impact on the CP brownout detection. I missed that in the datasheet. Thanks!
Also may not be a great βoffβ state.
okay, progress!
52840 sheet shows 1.7V as triggering brownout reset (w/ some hysteresis). https://www.nordicsemi.com/DocLib/Content/Product_Spec/nRF52840/latest/power?137#unique_603653482__fig
side note: i like nordic's new DocLib. the DevZone was a bit annoying and flaky.
working...
none of the submodules have anything in them
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document '.. automodule:: tg_gui.gui'
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document ':members:'
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document '.. automodule:: tg_gui.system'
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document ':members:'
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document '.. automodule:: tg_gui.system_handler'
/Users/jonahym/Desktop/tg_gui/docs/index.rst:12: WARNING: toctree contains reference to nonexisting document ':members:'
looking for now-outdated files... none found
pickling environment... done``` arg
Did you do ```
git submodule sync
git submodule update --init --recursive
not that kinda submod, sphinx, there is code there, it just isn;t seeing it
Blarg. Oops.
thanks anyway tho! it is appreciated .
@solar whale comparing the chip "power lines" between feather_52840 and the xenon, there is definitely some difference in how VDD & VDDH are routed. its beyond my abilities to decipher, but it stands to reason in my mind as a likely source for the differences in behavior.
@raven canopy is it the atsam that has the firmware choice of the busk-boot or linear or its it the nrf?
looking at the nrf sheet i have open rn, it appears it is hw only... but i haven't studied the power stuff enough to speak definitively. π
for either chip...
@umbral dagger heya wanna get this PR ready to rock https://github.com/adafruit/Adafruit_CircuitPython_RPLIDAR/pull/1
and then the guide can go live?
tries getting a featherwing from digikey to fill out an order
do dotstars work at any clock speed or?
iirc, there is a range, but they're more "forgiving" than neopixels.
mm, datasheet says 800-1200KHz
My bitbang driver goes 420KHz when I tell it to go 3MHz lol
maybe if I tell it to go 6MHz it will go 800KHz
yeah, was just looking at that. that KHz unit is...confusing. π
apparently it's quite common to run them upwards of 12MHz so the datasheet must just be a guideline
also
I tried on an older Samsung Chromebook, updated to the latest OS. It looks like you're running in developer mode or something like that. Could you confirm and describe what you're doing?
If dmesg is available, could you paste what's in the system log when you plug in the board? That will give us some clues about what the USB issues are. Thanks.
I do see /dev/ttyACM0 with a Trinket M0 on my Chromebook, but not with 4.0.0-beta.2. I'm trying to use BeagleTerm. I can't connect, but that m...
hey @meager fog I've got the basic current/voltage/power driver working with register in continuous mode; should I also try to get one shot, adjustable averaging, adjustable conversion time, or alerting working?
I think my PyPortal just died π¦
π³
No lights no drive
π¦
do you have a hot air gun?
Yeah, somewhere
let the debugging begin!
?
I would test the power first
I mean you said it looks like like a doornail, right?
no lights whatsoever?
Well it was working and I loaded an arduino sketch onto it and then reset and unplugged it and it stopped working after that
No lights whatsoever
can you get a bootloader drive?
π
ya, I don't think the PP has a led on the power rail
fwiw if you have a jlink almost anything is fixable but fortunately that's not necessary
just kinda glitchy though?
yeah
that's what the last guy that tried it got
the first version (not linked) was just colours glitching all over the place, the 2nd version was that, and the third version is as you say, no dice.
hmm
can you make an elf with debug symbols?
err
I was going to say I have the other m4 boards but no swd on my trellis atm
ah
hmm..
yes....
I guess I wanted to open the trellis case anyways to clean it π
(I'm not busy)
gimmie a few
thanks so much
I wonder if the lack of crystal plays a role?
more unstable?
it might be good to measure clocks
I don't think so cause other adafruit boards have no crystal and can talk neopixel just fine
the weird thing is the third version is as close to the adafruit code I can get
and apparently that's the one that doesn't work at all
fn write_byte(&mut self, data: u8) {
let mut bitmask: u8 = 0x80;
while bitmask != 0 {
self.pin.set_high();
delay(2);
if data & bitmask != 0 {
delay(3);
self.pin.set_low();
} else {
self.pin.set_low();
delay(2);
}
bitmask >>= 1;
delay(4);
}
delay(3);
}
Vs
for(;;) {
*set = pinMask;
// This is the time where the line is always high regardless of the bit.
// For the SK6812 its 0.3us +- 0.15us
#ifdef SAMD21
asm("nop; nop;");
#endif
#ifdef SAMD51
delay_cycles(2);
#endif
if((p & bitMask) != 0) {
// This is the high delay unique to a one bit.
// For the SK6812 its 0.3us
#ifdef SAMD21
asm("nop; nop; nop; nop; nop; nop; nop;");
#endif
#ifdef SAMD51
delay_cycles(3);
#endif
*clr = pinMask;
} else {
*clr = pinMask;
// This is the low delay unique to a zero bit.
// For the SK6812 its 0.3us
#ifdef SAMD21
asm("nop; nop;");
#endif
#ifdef SAMD51
delay_cycles(2);
#endif
}
if((bitMask >>= 1) != 0) {
// This is the delay between bits in a byte and is the 1 code low
// level time from the datasheet.
// For the SK6812 its 0.6us +- 0.15us
#ifdef SAMD21
asm("nop; nop; nop; nop; nop;");
#endif
#ifdef SAMD51
delay_cycles(4);
#endif
} else {
if(ptr >= end) break;
p = *ptr++;
bitMask = 0x80;
// This is the delay between bytes. It's similar to the other branch
// in the if statement except its tuned to account for the time the
// above operations take.
// For the SK6812 its 0.6us +- 0.15us
#ifdef SAMD51
delay_cycles(3);
#endif
}
}
wait why is that referencing sk6812?
I think it's a neopixel compatible
ok
I think saleae had a neopixel analyzer ... one minute
it at least thinks you're sending data for all 32
always good
it's hard to read this but that kinda looks like a brightness scaled down rainbow to me
can you measure frequency?
supposed to be 800, eh?
on metro, not on trellis
trellis doesn't have a lot of gpio so idk if it's even possible
most of the pins are connected to something so there should be something to probe to; I had to grab onto a leg of the level shifter to get a trace of the neopixels for example
that's like every pin
you set the mode of a pin to put a clock out on a pin
mode M i think
yeah, but only certain pins are capable of it
afaik
only certain pins are actually connected to the gclks I mean
and I gotta know which pin and which gclk
lemee see if there is a pin that would be particularly easy
you're not using the flash?
nope
if you can use glck 4 or 5 that would be easy ish; PA10 or PA11 respectively
if not I can find something else
close enough
I think I gotta call it
thanks for all your help
"We aim to please. You aim too, please"
lol
good night!
g'night
@tulip sleet -- here are some notes I took while doing a fresh install of GCC ARM for MacOS. I hope this saves you some time in updating the Build CircuitPython guide.
Thanks to @raven canopy , @pastel panther , and @exotic pumice for their help in troubleshooting $PATH issues I faced.
doing some math using @pastel panther' measurements 800/630 = 1.27 * 3MHz = 3.8MHz, I've produced a new version, maybe @inland tusk can try tomorrow?
@tulip sleet For that version of 4.0.0 with the bug fix (4.0.0-beta.2-141-g2c9fbb5d4-dirty) I've noticed the micropython library (I assume this built/frozen in?) doesn't have mem_info ```>>> import micropython
micropython.mem_info(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'mem_info'
dir(micropython)
['name', 'const', 'heap_lock', 'heap_unlock', 'kbd_intr', 'opt_level']
@modern wing Thanks! I will use your notes as a basis to update the Building CircuitPython guide
I was able to see the system logs via file:///var/log/messages. I don't see any errors, and ttyACM0 is mentioned in the logs when I plug it in, but it's not visible to BeagleTerm. I don't want to wipe this chromebook to enable developer mode, so I may try some other way (like putting CloudReady on a laptop).
I also tried the latest build of CircuitPython and it's still not working. It's not specific to the Trellis.
@simple pulsar mem_info() was turned off for space. https://github.com/adafruit/circuitpython/commit/844c20106bee7639f5fa83535806932bae354a71
@raven canopy thanks
note: the setting has since been moved to py/circuitpy_mpconfig.h, if you wanted to try and turn it back on. @simple pulsar
@meager fog Sphinx is whining.. I've tried a few tweaks to no avail.
@umbral dagger looks like you're missing a ..code-block to start the example
ah
you can look at same file in any other repo for general ref
Yeah.. I just replaced the todo with the code.
@exotic pumice π that was taken in slow mo. Methinks you got it but need some delays
the _slow version seems infinitely so. All the pixels are lit but not moving
@tidal kiln Any idea about the error now?
looking...
try changing that to:
`adafruit_circuitpython_rplidar`
now i think it's trying to find self.port, so it can make a link in the doc string, but failing:
https://github.com/adafruit/Adafruit_CircuitPython_RPLIDAR/pull/1/files#diff-04307a18cace1d8ed2c3d595dd4f3b19R160
Writing the code was the easy part.
yep. need coffee mugs that say that.
@tidal kiln WooHoo passes travis!
woot!
@pastel panther It has the same delay as my cpx rainbow. That's just what it does for some reason. The metro m4 works better with slow on but the trellis doesn't like it apparently. Thanks again for trying.
See also https://twitter.com/dwrensha/status/1102789887458193408 https://twitter.com/bascule/status/1102416500042813440
Blinking some LEDs with β¦β¦@basculeβ©βs β¦@rustlangβ© code, running on an β¦@adafruitβ© NeoTrellis M4 housed in a custom aluminum enclosure built by β¦@doridoideaβ©.
Now Iβve gotta figure out how to lower the brightness... https://t.co/zp5XkvbwjM
Just got my @rustembedded board support crate for the @Adafruit NeoTrellis M4 working! π
Where normally you might blink one LED to test, on this thing the test wouldn't be complete without blinking them all! https://t.co/wDdx3SN0bh https://t.co/JFFf642Nnx
I wonder, is it a different brand of neopixel, with slightly different timing requirements?
Maybe? What are you trying to tell them to do?
Rainbow cycle
Maybe try with something simpler to debug like r>g>b cycle with substantial delays. Maybe even just one pixel to start
Also try at half brightness
This is actully supposed to be like 1/8th brightness but it's broken
I tried a red blink and it just blinked random colours
(on off)
Looking at the previously posted data I can see what you mean
I can try checking with my scope tonight further down the chain to see what they're doing with the data.
Thanks
Yeah
@lime trellis that SAM32 board looks amazing. So it would be an M4+ESP32+datalogger in feather form factor?
Can you make a version that looks for presses on the stemma pins with one to send a single red pixel on then off, then the other to send two blue pixels on then off with a different timing?
Also you should make a video for the eevblog scope giveaway
By press you mean input high?
I found a library for the actual keypad we could try
But that might just add complexity
Set the internal pull-up and check for low
Ok
I would skip the keypad lib for now
So sda and scl?
something like this?
https://gist.github.com/sajattack/0696c9d55b0adb76346fdeb189dba5a8#file-sid-rs-L47
Perfect! I think those are the right pins, don't know the label->port mapping but I can check when I get back home
pb8 and pb9
@gusty topaz yep! It's a bit longer than a normal feather, but the pinout is compatible with Feather Wings so you can use any existing boards with added hardware capability
@gusty topaz the github has everything you need to order boards from OSH park (or others). https://github.com/maholli/SAM32
@pastel panther hihi im here now
bueno
@umbral dagger are you all travis'n ok now?
@pastel panther ok so Q is...what to implement for the INA260?
yup
I think that's the default?
yeah but to select the different #
sure
i think adjustable conversion time is also useful
i think for mode - you only need shutdown, continuous for both and triggered for both
and for alerts, expose the registers but don't wrapper them nicely
@tulip sleet it looks like UF2's for radio feathers haven't been generated since alpha 3. is that expected?
@lime trellis how much would it be to have it ordered from OSH park ? (ballpark)
@tidal kiln I think we didn't generate them because the boards didn't come with UF2 bootloaders. We can change that back.
since we have a guide on how to load UF2 i think lets do UF2s
i'll fix the generator.
@pastel panther ok does that sounds good? ^^
by "for both" you mean current and voltage?
@tulip sleet awesome. thanks.
yeah i mena i dont see a need to have a mode thats only one or the other
so the mode is either 'off' 'continuous' or 'trigger'
ok, that should be good for now. I'll ping you if I need any clarified
yep!
i think with register and judicious use of consts it isn't onerous
you could have class enums if you like
up 2 u
Some users have put UF2 bootloaders on their RFM Feathers. Make life easier for them.
kk
@pastel panther thanks for the tip on the oscilloscope giveaway, I'll give that a shot
@gusty topaz I grabbed the files from the repo: $10 for 3 boards.
fired up the webcam to make sure I had nothing crazy in the background. oh yeah, i think this will do.
@main meteor wow, thatβs not bad at all.
It's 2.12 x 0.94 inches for 1.99 square inches: OSHPark charges a flat $5 per square inch for 3 boards π
@tidal kiln if you approve https://github.com/adafruit/circuitpython/pull/1618 there should be .uf2 builds for RFM in AWS S3 when it builds after the merge.
Merged.
I installed the latest version of CloudReady, which is Chromium OS, on an old netbook and did not have this issue, so I'm not sure what's going on. Tagging @hathach for reference, but this is going to be trickier to debug than I thought. I'll get some USB traces from my other Chromebook at some point.
@pastel panther https://www.youtube.com/watch?v=ZK8WysSEnMI
Original video: https://www.youtube.com/watch?v=4cB2tQpxxng Rust on SAMD21/51: https://github.com/atsamd-rs/atsamd $10 (CAD) Logic Analyzer: https://www.alie...
hi all, I just got my pyportal and am trying to run some tests against Adafruit IO, but I can't seem to load images via URL or from the device. All I see on the pyportal screen is text.
Is there a debug flag I need to unset?
(src with URLs for the versions of each package I'm using: https://gist.github.com/abachman/0fa524e7c4dd5c4ee0bd11213884a417)
@keen parcel What text are you seeing on the screen?
"Fetching stream from https://io.adafruit..............Created file of 154262 bytes in 75.0 seconds
Set background to /sd/cache.bmp"
I can post a pic of the device
The TFT FeatherWing uses the regular SPI pins to talk to the display. "stmpe610_simpletest.py does:
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
So since those pins are already in use by displayio, you'll get an error.
Ok so the code is running at least... That's more what I was wondering was whether for some reason it wasn't even getting to your code.
yeah, seems to be running / communicating fine
What in your code is generating images though?
It looks like all you have is something happening if you touch the screen.
this is via the https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/master/PyPyportal_Cutefuzz example
not sure what you mean
Looking again, hold on
if I comment out the .fetch() command, I see "Set background to /background.bmp"
I changed it to use board.SPI() so I don't get the "pin in use" error.
I'm running the most recent test build from https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/pyportal/en_US/
are those built with some debug output flags set to default true?
I don't think so, no. There's debug in the PyPortal lib but you have to set it. I set it to False by default
that is, it doesn't seem to be a problem with data
or reading files
it's just stuck in serial mode?
Shouldn't work like that. Hold on, I'm loading libs. I haven't done anything with PyPortal yet so mine is empty.
no worries, I'm in no rush at all
built the image-formatter for IO but haven't had a chance to play with it, is all :D
I can't load images from the CIRCUITPY volume either
Ok I switched to the quotes demo simply to see, and mine isn't showing the background image either.
Printing the quote, but it's not loading the background.
I did delete the font though, hold on let me add it.
Hmm the font file isn't in the guide.
Hold on. Getting the file.
I think there's an issue. Trying to troubleshoot it now.
@keen parcel Give me a couple of minutes here.
@keen parcel Ok try using this version of the PyPortal library: https://github.com/adafruit/Adafruit_CircuitPython_PyPortal/releases/tag/1.0.3
@keen parcel Let me know if it works please! I think there's an issue in the latest release of that library, but I'd like your testing to confirm it.
no, thank you
I'm still new to this world (circuitpython) but am so happy you all are coming into my world (adafruit io) :D
question: do I have to use the .mpy version of adafruit_pyportal, or can I load adafruit_pyportal.py into the lib/ folder on the CIRCUITPY volume?
either
@keen parcel The issue with the .mpys is that we need them on boards with limited space. The PyPortal has a lot of space. .py versions are fine.
.mpy is a "compressed" .py, to help with space, but they are functionally equiv
cool cool. Are they like the .pyc files python generates elsewhere?
I have the entire lib bundle in .py form on mine right now. If you run into space issues because you load a bunch of images or something, then switch to the .mpys.
I don't know what pyc files do. mpy strips out the docstrings and whitespace essentially.
(that's a very hand-wavy, "like")
st.read_data() eventually uses BusDevice, which should wait for and then grab the lock for the SPI bus, locking out displayio while reading. Somehow someone is violating the lock protocol. We'll have to read the displayio code to look at this.
π β°
there are some grand centrals in stock
more coming soon but now's a good time to snaggz one
@meager fog thank you, grabbed one as soon as I got the email!
Are you getting the production parameters optimized?
Is the Grand Central fully Mega compatible? I'm really considering it to replace the board on my 3d printer if so.
Got my grand central today, whee
@floral dagger it uses 3.3v logic, not 5V
well π© still a cool board though. Thanks @exotic pumice
The common_hal routines common_hal_displayio_fourwire_begin_transaction() and common_hal_displayio_parallelbus_begin_transaction() return true or false depending on whether they've successfully started a display transaction. However, their return value is never checked: the callers assume that once called, the transaction has begun, even though the start-transaction has failed.
For ParallelBus, it doesn't matter, because there's no contention, and the routine always returns `true...
OK, I believe this problem is due to #1619.
Very excited to have my PyPortal in hand... have @split ocean's Twitter code running and seeing it connect and get data (yay)... but it never leaves the console & shows the image. What am I missing?
Adafruit CircuitPython 2c9fbb5 on 2019-02-24; Adafruit PyPortal with samd51j20
i think i have a mistake
i have to fix it
you can use an earlier pyportal release
library
Ok! let me find an older one
Outstanding! FWIW the 3/2 version fixed it
Hey! I had no idea we were that close to 1000! Iβll actually enjoy this test :-).
Thanks @meager fog
yay ill fix whatever i broke later otnite
Gotcha - BTW, I'm going to use this device to make a very loud point
Medicare/aid (CMS) defines a "Speech Generating Device" very clearly (code E2510)... it's priced at $7000+. I believe this device lets me create one that matches the spec for $55 + a case.
Itβs a weird thing. The spec says the device must not be a general purpose computing device and must be able to play synthetic speech and use scanning.
It says very little about the actual usefulness (screen size, memory etc)
Mainly because it was written in 2001 and the one revision was trivial
So, I like that the portal has everything needed to make a compliant device built in
Iβm planning on leveraging open board format
Writing a gateway that converts and translates as needed and feeds down the files and data
Actually a button press example would help as would a library that unpacks zips π
@gilded cradle After discussion, we're thinking don't bother with the CharliePlex FeatherWing in the FeatherWing library. The driver for it is simple enough as it is, that there's nothing added by including it in the FeatherWing library.
@tough flax we dont have a zip unpackin' library - button code is here https://github.com/ladyada/Adafruit_CircuitPython_Display_Button
Great!
Ok, thanks @idle owl
@solar whale @river quest @pastel panther (and @tulip sleet & @slender iron), listening to the latest PythonBytes podcast, and they mention the Travis-CI acquired by Idera, lays off senior engineers and some possible ways to go beyond Travis if needed. https://pythonbytes.fm/episodes/show/120/aws-mongodb-and-the-economic-realities-of-open-source-and-more
π¬ is correct. hopefully nothing happens on the Travis side. that's a large body of work to try and transfer. π€
It sure is -- I had no idea how much work had to go into it until watching you over the past few months.
@meager fog - THAT'S what you meant by "sound board"! π I thought you meant the product
I assumed I was being ignorant
Got it
yes, great starter
Wedge case is done - will post up on Thingiverse for @twin mica and @fast wharf's show tomorrow
@meager fog am I missing button_background.bmp ? I found the Adafruit_Display_Shapes...
Hmm... perhaps I'm not seeing the latest in this repository? I'm not stressed about it @meager fog - it gives me a great place to start.
yeah im almost done
@tough flax want to try my latest commit?
it should fix all things
lemme see
download the py here
this is a button background u can use
Great - just need wavs π
I can make wavs if needed
This is an amazing tool
Just for debugging python code
Background works, everything looks good until it looks for a wav - I will make a few
wavs are for u
to make - i just used the neotrellis ones i had left over
it should fix the bug i had before
Well, it works on the soundboard
let me check on the twitter code
Yep! loads the image... also, the soundboard code seems much faster to load?
Perhaps that's just it connecting to the wifi faster
I have sound working! (looking for volume control now - or will re-export from audacity louder)
Amplified it in Audacity - good enough for now. I probably will add an external speaker in the enclosure (plenty of room
Success! Thanks @meager fog
That's awesome @tough flax
@pastel panther my partner in crime on the neopixel library wanted your raw logic analyzer data, without the decoder applied
sure, one sec
thanks
It looks like I didn't save it but I can get you some in a few hours
ok
you seemed knowledgable about gclk/io. Do you know what happens if you have output enable set but aren't using pin function m?
because I noticed the neopixel pin is connected to gclk/io 1, and gclk1 is the 32KHz oscillator
Anyone here with a PyPortal familiar with using the local.txt file to spoof JSON data?
@exotic pumice DS says "set a pin to mode M first" but didn't say what would happen if you didn't, as far as I can tell
are you wanting to output the crystal to the neopixel pin?
I don't think it's possible to use a pin for gpio and output a clock to it
ok good
at the same time at least
since the modes are mutex
I don't know if it will be helpful but ben heck had some recent videos that involved clocking neopixels. It was mainly about getting hardware to do the heavy lifting for you but there might be some nuggets of wisdom there
I watched that
Hi @split ocean , I just looked at the code and it looks like you just put your JSON data right in the file.
It looks like you need to do a fetch() and then call the json() function on the result.
Yeah, just tested it with the twitter example
I just put
[{"followers_count":500}]
into local.txt and it loaded fine.
@meager fog a bit of weirdness in the SoundBoard... if you change buttons, it plays right away - if you stay on the same button (tap... tap..) it doesn't replay until you wait a while.
Found it, @meager fog
while True:
p = pyportal.touchscreen.touch_point
if p:
print(p)
for b in buttons:
if b.contains(p):
print("Touched", b.name)
if currently_pressed != b: # don't restart if playing
pyportal.play_file(cwd + "/" + b.name,
wait_to_finish=False)
currently_pressed = b
break
else:
currently_pressed = None
else:
currently_pressed = None
time.sleep(0.05)
Added the second "else" clause to clear the currently_pressed if there is no touch at all. Probably a more elegant way to do it, but this covers both cases, touching an area without a button and not touching anything.
If anyone has the command line for ffmpeg to convert into an acceptable WAV file for the portal, I'd appreciate it. I've gotten Amazon Polly to generate my text-to-speech (OGG) and converted that into WAVs that work using ogg123. However, I need to amplify each file, and ffmpeg can do that as a filter (I've listened in Audacity to the result), but the PyPortal dies with
Traceback (most recent call last):
File "code.py", line 52, in <module>
File "/lib/adafruit_pyportal.py", line 487, in play_file
ValueError: Data chunk must follow fmt chunk
I'm headed to bed but am very happy with the progress π
AS noted by @sommersoft it looks like the power regulator on the Xenon is working as desighend
According to the datasheet the output voltage only goes to ~.8 V when the CE (EN pin) is Low.

So, the question remains, why does CP go to Safe Mode when the EN Pin is brought back to High? Is this something that should be "fixed" in CP or is it because the Particle boards are not op...
I just learned about the SSD2805 chip β that opens up a whole new batch of awesome displays
@tough flax I think I successfully used sox to generate the files I needed
if you search adafruit of sox, there should be some examples
or just use this: https://langdoc.github.io/2017-05-28-sox-trick.html
Hi all. Im all new to python, arduino and everything around it. Trying out Mu-editor and CircuitPython but i get the message that I need to flash my device with CircuitPython. Is it possible to flash and use it on an Arduino UNO?
Ops, wrong user login π
it's not possible to use CircuitPython with an UNO, you need one of the devices that are supported, see https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-hardware
@raven canopy If you feel like another test on your XENON -- I noticed on mine that with EN grounded, if I apply power (plug in the USB) the 3,3V goes up to ~.7V as you saw, but if it then unground EN it goes to 3.3V and if I reground EN it goes to ~1.2v and stays there. I also observed tif I remove power (unplug the USB) the 3.3V drop to ~.5V and very slowly decays. I can force it 0V by grounding the 3.3V pin.
getting some discussion on the particle.io forum https://community.particle.io/t/xenon-3-3v-output-when-en-grounded/48218
Xenon 2 Megablast
@solar whale that regulator is weird
@solar whale I can run that later. Suspect it will just confirm what you're seeing. I briefly tried to scrape through the nRF code to spot where BOR is handled, but couldn't locate it. I can try some more, but I imagine Dan knows exactly where it is. nrfx is muuuch different than ASF4. π
@raven canopy No rush -- I've lost most of my hair already....
lol
interesting note from the particle.io forum -- If I use a lipo to power it -- I only see .46V when EN grounded.... confirmed bu another user there.
I read that. I can only assume it has to do with the charging circuit in the path...
That's what I was thinking. I think I'll use my feather52840 with the TFT featherwing going forward.
very clean 0V or 3,3V on it
thanks @gilded cradle I thought that was the case. I had it working w the Quote.py Learn Guide example, but the OpenWeatherMap one isn't happy about it.
@solar whale where did you see the '.8v when CE low' info in the datasheet? I found one diagram that seemed to say that but I thought it was talking about the voltage that would be seen by the regulator as low (first diagram, page 22)
Ah, ok. That one's a little finicky. I think it actually does a call to weather and another to get the time and that might be the issue.
I have to look to be sure though.
I love these descriptions it provides Heavy intensity rain 8:14 AM
@pastel panther I think I am just misunderstanding the output voltage range -- it is .8 - 3.6 V -- I saw and got confused by that figure on page 22 as well
Yeah, it looks like the issue is that the get_local_time() function in PyPortal doesn't do a normal fetch
Current Weather: It's *never* too late to buy a boat.
LOL
@gilded cradle this is the error I get code.py output: Set background to 0 No SD card found: no SD card Set icon to /weather_background.bmp Getting time from internet! Traceback (most recent call last): File "code.py", line 52, in <module> File "code.py", line 48, in <module> File "/lib/adafruit_pyportal.py", line 513, in get_local_time File "/lib/adafruit_pyportal.py", line 604, in _connect_esp AttributeError: 'PyPortal' object has no attribute '_esp'
I'm running latest pyportal.py not the bundle .mpy btw
Yeah, like I thought, it's get_local_time() causing the problem
BTW -- you can use "id" instead of "q" to select a city then use the CITY ID -- not the City name -- taht avoids duplicate city name confusion.
It's doing a call through the ESP wifi manager and not looking at the localtime.txt file
I also tied "zip" and my "zipcode,us" and got a city nearby, but not quite right.
Oh, I only have a local.txt w the fake JSON, should I add a localtime.txt as well?
Let me see if there is even a mechanism to bypass that
Thank you!
@solar whale nice, I was wondering about that. Poughkeepsie is easy, but "Springfield, US" could be a bit of an issue :)
I'm in Durham (NH) but there are many.
LOL I imagine there's a big difference between your Durham and the one in NC as far as weather goes.
Sure is!
Is anyone is YouTuber
Hi @split ocean , it looks like the trick is to just not call pyportal.get_local_time() in the openweather code
Let me see what would be the best alternative.
@solar whale I just tried that by using a zip code in the LOCATION variable in the openweather.py file and it works very nicely, thanks for that.
@gilded cradle are you having a problem with the openweather?
Since the time won't be correct (no internet), it might be best to just do a print(time sting) with time string being whatever you want it to say.
@gilded cradle OK, thanks. I don't need to have this be very elegant, I don't plan to include it in the guide, but it'll make it much easier to document the build by showing different data on the screen, not just the actual weather at the time.
Not me jerry
Yeah, it appears to fetch the current time from the internet and print it out. Since you're trying to do it offline, I would just not call that one.
huh, if I comment out lines 48 and 49 in openweather.py it still seems to be displaying local time on the PyPortal.
Yeah, I think it just takes whatever it was last updated to.