#circuitpython-dev
1 messages ยท Page 253 of 1
@meager fog Already started on that.
ok rad
yeah im looking at how we could pull it apart into a library but there's not that much code!
maybe best to keep as is
@tough flax threw this together real quick. seems to mostly work:
https://github.com/caternuson/CircuitPython_Nunchuk
sometimes misses buttons and can return bad values for accel
@meager fog I have 1 pixel and 3 pixel brushes working.
@civic marsh https://github.com/adafruit/circuitpython/blob/master/supervisor/shared/serial.c#L57 pushes the serial output to the Terminal class
here is my hack job to inject things into circuitpython from a ps2 (model m) keyboard: https://github.com/adafruit/circuitpython/compare/master...tannewt:ps2io
This is now looking more like a hardware issue or perhaps how it's configured rather than a CircuitPython issue but has anyone else looked at M4 DAC output. It's not what I was expecting: https://forums.adafruit.com/viewtopic.php?f=24&t=153707
@slender iron about that gif loading, I wonder if it would make sense to have an extra parameter to only load a selected frame -- this way we could load animated gifs into separate bitmaps
though they would need to be really small to fit all in the memory at once
ya, that could work. I was stumped how to handle gifs that have diffed frames
I think they can encode only the portion that changed
right now I just write them all to the same bitmap one after another
but I don't handle transparency
they can have offsets, though
Wrt "diffed frames" - does the animated gif have the ability to apply compression techniques between frames?
Oh, you're referring to the sort of thing like first animated image on this page: http://www.imagemagick.org/Usage/anim_basics/#gif_anim ?
yes, except you can also have transparency in there, so you can basically have a diff of consecutive frames, with just the first frame being full
see "Animation Frame Montage" on that page
Yeah, I've just found http://www.imagemagick.org/Usage/anim_opt/#optimize - i never knew about this
@stuck elbow can you link me to the greyscale display you found? I'm going to take a stab at other bit depth displays
I think I'll have palette and color converter automatically derive the reduced bit color from an RGB888
like it does now from RGB888 to RGB565
@tidal kiln I really appreciate that! I'm getting this error (on a device that did work w/the Arduino one)
main.py output:
Traceback (most recent call last):
File "main.py", line 5, in <module>
File "nunchuk.py", line 37, in __init__
File "nunchuk.py", line 36, in __init__
File "adafruit_bus_device/i2c_device.py", line 112, in write
OSError: [Errno 5] Input/output error
@slender iron I recently found something even better -- a display with a 256-color palette!
ooh! links please ๐
they are known as "nokia 6100" displays
(feel free to point ladyada at them too if you think we should carry them)
ya, looks like sparkfun used to carry it
they did
it's obnoxious, because it uses two LEDs in series for backlight, so needs 7V
I found a grayscale controller that claims to scroll in both directions
https://www.aliexpress.com/item/32779152549.html <-- this the the one I found recently
Smarter Shopping, Better Living! Aliexpress.com
@meager fog
SSD1329, 4-bit
its the ssd1327
https://www.aliexpress.com/item/32929973938.html <-- this is the ssd1327, 16-but gray
Smarter Shopping, Better Living! Aliexpress.com
it's weird, because i2c
is it i2c only?
Hmm: @tidal kiln don't do anything on this - I'm going to try to find a different nunchuck
that particular module is i2c, it comes in spi too, I think: https://www.aliexpress.com/item/32925395306.html
Smarter Shopping, Better Living! Aliexpress.com
and the chip also supports parallel, though I don't know if it's broken out
ยฏ_(ใ)_/ยฏ
chip-on-flex?
the ssd1322 definitely has an interesting form factor for text, would work well with a keyboard
most color say they can do horizontal scroll too....
yup, chip on flex
nice!
see that black thing on that flex cable?
does "16 grey scale" mean 4-bit or 16-bit? :P
I suppose 16-bit doesn't make much sense with how human eyes work
4bit
by the way, most SSD13XX displays have a corresponding SH11XX display
nice!
Sorry for the delay in replying: yes, I will - I assume you're looking for a pull request?
I solved the "problem" with a handler function in supervisor/shared/micropython.c that, when set, is called with whatever is written to serial. Handles output only and is much simpler than multiterminal.
Contact me if interested.
@slender iron thanks for the code pointer and keyboard example, very helpful!
@gilded cradle I pushed some updates to PyBadger. Also added a second email string line for the business card because blinka@adafurit.com is a short email address, and not everyone has those, so now you can put it on two lines. If you can take a look at it and maybe test it, that would be great.
Ok, I'll get it a test soon. I already have an item for testing it in Basecamp. ๐
Looks like I need hex file to be generated by editing circuitpython/tools/build_board_info.py. Will close once that happens.
@idle owl I tried pybadger library with CP 4.1.0.beta1 on my pygamer and everything went smooth for now ๐
the qr generation is a nice feature
Happy Saturday, folks. @tidal kiln and I are working on some nunchuk code for CP and I'm seeing this error on the Trinket M0:
Traceback (most recent call last):
File "main.py", line 10, in <module>
File "nunchuk.py", line 43, in joystick
File "nunchuk.py", line 66, in _read_data
File "nunchuk.py", line 74, in _read_register
File "nunchuk.py", line 74, in _read_register
File "adafruit_bus_device/i2c_device.py", line 96, in readinto
OSError: [Errno 19] Unsupported operation
I thought this might be a common I2C issue so I'd ask here - any ideas?
@tidal kiln has his code up here (I'm essentially running the hid example, but it basically calls on the first call after init() to the I2C device) https://github.com/caternuson/CircuitPython_Nunchuk
FWIW the hardware works with the Arduino WiiChuck.h code
And sometimes I get this error instead (looking for a pattern now)
OSError: [Errno 5] Input/output error
@tough flax Looks like "Unsupported operation" is MPI_ENODEV is NRFX_ERROR_DRV_TWI_ERR_ANACK -- one hit using that as a search term gives https://devzone.nordicsemi.com/f/nordic-q-a/21891/nrf_error_drv_twi_err_anack-in-blocking-mode but it might not be directly relevant
"Input/output error" is MPI_EIO is NRFX_ERROR_DRV_TWI_ERR_DNACK or NRFX_ERROR_INVALID_ADDR
Hmm.
Not sure if that helps, but maybe it means the device didn't init right?
When I add this after initing the device, I get nothing listed in the scan() results:
111
nc = nunchuk.Nunchuk(board.I2C())
i2c=board.I2C()
i2c.try_lock()
print(i2c.scan())
i2c.unlock()
Ok, I think the two remaining things are:
- [ ] Add define for whether the RGB signals should be inverted.
- [ ] Adjust the duty cycle for the current brightness.
ports/atmel-samd/boards: Added support files for boards in the datum series.
Pull request to add support for the datum series of boards from J&J Studios. More information on each of the boards is available at the links below.
https://groupgets.com/campaigns/568-datum-distance
https://groupgets.com/campaigns/573-datum-imu
https://groupgets.com/campaigns/574-datum-light
https://groupgets.com/campaigns/479-datum-weather
ports/atmel-samd/boards: Added support files for boards in the datum series.
Pull request to add support for the datum series of boards from J&J Studios. More information on each of the boards is available at the links below.
https://groupgets.com/campaigns/568-datum-distance
https://groupgets.com/campaigns/573-datum-imu
https://groupgets.com/campaigns/574-datum-light
https://groupgets.com/campaigns/479-datum-weather
I have defined a new symbol CP_RGB_STATUS_INVERTED_PWM to know when the PWM signal should be inverted. Should i also invert status_rgb_color values in clear_temp_status?
@meager fog Cool. Halloween PyPortal countdown, right?
I think so. I made changes to reflect the dual brush work.
We should implement BitBlit for CP ๐
That, and tracking dirty rectangles, would make a lot of cool stuff easy.
whats bitblit?
Bit blit (also written BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt etc., which stands for bit block transfer) is a data operation commonly used in computer graphics in which several bitmaps are combined into one using a boolean function.
The operation involves at least two bitm...
A neat graphic manipulation mechanism.
yeah, that
Smalltalk made extensive use of it for screen manipulation.
i think \n should not be replaced at all anywhere
Better change instead :
https://github.com/micropython/micropython/blob/master/py/modbuiltins.c#L402
to allow to chose beetween \r\n or \n for end of lines.
and also https://github.com/micropython/micropython/blob/master/py/modbuiltins.c#L452
ideally for fd < 3 => globally user defined and fd>2 could default to \n
oki
you can only overlap now, no xor or such
but i think thats ok for now
@umbral dagger please replace the generic stock photos whenever you can with photos of the project in the guide
we only need stock photos when the topic is really dry and there's no diagrams/photos we can show ๐
@meager fog OK, just the one on the page you have open to replace.
@eager vortex great videos, just watched a few!
I just got and set up the py gamer and am struggling to find out how to start coding with it
@fallow wraith start with makecode, its the easiest way to get going
can I use python to code the py gamer or do i have to learn circuit python
@fallow wraith circuitpython is a subset of py3
so if you know python you're ready ๐
so can safe_mode only be turned off by setting NO_SAFE_MODE before building?
<@&356864093652516868> Here is the notes doc for the CircuitPython Weekly tomorrow 8 July 2019 at 11amPT/2pmET. Please add your hug reports and status updates even if you'll be attending the meeting - it's super helpful! Thanks! https://docs.google.com/document/d/1DYzTP9a1G0C7GnnqI3cfeUPZATD4IJJJslLUR0NHcMU/edit?usp=sharing
@lime trellis why do you want to turn it off? that enum is used in the memory that is maintained across resets
Yes please. It should be inverted any time it is written to the PWM.
@jepler feel free to merge after approve.
Original code was correct for SAMD21
New code for SAMD51 only permits pad-0 for TX
Minimal change of 1 code block
tested on Metro M4, now produces a list compatible with my reading of the datasheet...
`Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
TX pin: microcontroller.pin.A3 RX pin: microcontroller.pin.A1
TX pin: microcontroller.pin.A3 RX pin: microcontroller.pin.A2
TX pin: microcontroller.pin.A4 RX pin: microcontrolle...
Looks good overall! Just needs the board names added to .travis.yml so that they are auto-built.
Awesome! Thank you! Will merge once Travis gives the thumbs up.
Hiya! I'm really liking the capabilities of CircuitPython & Python generally! I frequently work on larger-scale OO applications & am used to having a significant amount of memory available for application execution. I've decided to use a Itsy Bitsy M0 for a prototype I am working on. Due to the required peripheral devices & their code dependencies, I ran in to memory issues right out the gate. The device is powerful for its size! Impressive! I've optimized custom modules where possible & will be looking into creating leaner mpy files. I suppose my question is whether there is a similar Adafruit device capable of running CircuitPython with much more memory available. For now, I've switched back to the Arduino IDE.
@buoyant coral by "memory" do you mean RAM or storage? The ItsyBitsy has a 2MB SPI flash used for circuitpython functions, but there are other Adafruit M0 boards with 4MB chips. If you're needing data-storage, why not add an SD card reader to your ItsyBitsy board and enjoy TONS of space
@buoyant coral you want a board with express in the name. Such as feather m0 express or feather m4 express. Those have more storage
In regard of adjusting the colors brightness, i think it's enough just to add CP_RGB_STATUS_LED in the #if defined on color_brightness and set_rgb_status_brightness. Like so:
uint32_t color_brightness(uint32_t color, uint8_t brightness) {
#if defined(MICROPY_HW_NEOPIXEL) || (defined(MICROPY_HW_APA102_MOSI) && defined(MICROPY_HW_APA102_SCK)) || (defined(CP_RGB_STATUS_LED))
uint32_t result = ((color & 0xff0000) * brightness / 255) & 0xff0000;
result += ((color & 0...
@slender iron regarding safe_mode, I'm exploring ways to implement a "failsafe" routine. Something that'd allow the user to choose what happens under certain exit_code conditions. like... "if brownout, run next.py" or "if main.py EOF, proceed to nextnext.py"
ah, interesting @lime trellis. safe mode is definitely what you want to poke at
for brownout at least
Yeah I've been playing around with it. It really comes down to refreshing the vm and then handling the repl. My experiments today had to bypass the repl otherwise it'd hang in run_repl ๐คท
@buoyant coral As mentioned, a board with "Express" in the name will have an external flash chip which means a bigger USB drive. This will let it hold more code and/or data files. Your program is still limited buy the amount of RAM on the MCU. Unlike when you use C/C++, your python program is stored in RAM (after being byte-compiled if it was a ".py" file). If you want to be able to write bigger python programs and/or use more libraries you'll want an "M4" board. These use a more powerful MCU (SAMD51 that uses the ARM Cortex-M4 core) that has more flash and RAM. Those memory amounts will vary depending on the model of the SAMD51 used on the board.
@lime trellis @untold knot @umbral dagger thanks for the replies! I've indeed been utilizing the 2MB SPI flash for code & audio file storage. So far the 2MB capacity is sufficient. Looks like I'll be upgrading to the ItsyBitsy M4 Express which has the same footprint but a better MCU (as @umbral dagger pointed out) & 512K flash! I'll still have to be a little careful to keep things light-weight... but that extra capacity should allow the full project to move forward! Thanks again! Looking forward to sharing all the details in a week or two!
hi, I created a couple of new libraries for sensors our blip board https://docs.electronut.in/blip/ - https://github.com/electronut/Electronutlabs_CircuitPython_LTR329ALS01 and https://github.com/electronut/Electronutlabs_CircuitPython_LIS2DH12 is there any place these should be listed to make them more visible?
@cerulean pawn you could add them to the community library bundle: https://github.com/adafruit/CircuitPython_Community_Bundle
thanks @raven canopy
logic looks good but i didn't test
@cerulean pawn what eink display does your board use?
@slender iron it's GDEW0154Z04
Good Display is a professional LCD display, E-paper Display (E-ink display) and OLED display factory in China, as market leading supplier,we have more than 10 years' products experience for both Standard and Custom Products.
ok, thanks! hope to get displayio working for eink soon
cool! I was trying some stuff a couple of weeks ago but didn't get it to a usable state
ah, interesting that it does 2-bit black and white
I may ping you when I have something
sure
I don't think I have a 2-bit display
maybe two 1-bit framebuffers in existing code can be used
they are sent separately
I have what's probably a dumb question. When I write a compiler, it emits a hardware-specific machine code file. How does CircuitPython work? Is there a hardware abstraction layer between the actual bare metal and the interpreter, or does the interpreter actually run on the bare metal and somehow manage the execution stack? <confused>
ya, most tri-color einks have the dual memory ranges
@drowsy geyser circuitpython compiles to a bytecode that a big C switch runs
"vm"
@vernal cosmos !!! Hi!
Hmmm, thanks @slender iron . I'm groveling around looking for the source to read, but things have changed quite a bit since I last built it....
Hi, @idle owl !!!
Is the meeting now? I'm just lurking!
<@&356864093652516868> Weekly in ~5 minutes. Here's the notes doc: https://docs.google.com/document/d/1DYzTP9a1G0C7GnnqI3cfeUPZATD4IJJJslLUR0NHcMU/edit?usp=sharing
@round lintel Thanks for joining us!
@idle owl @slender iron I will be lurking because of a noisy environment.
also lurking, because SQUIRREL!
@drowsy geyser Nice to "see" you back online!
just lurking
๐
thanks for this great tutorial on how to create a circuitpython library @slender iron is it normal to git push -f 20 times trying to get it to build?
the "Big Brother Auto-Backup" feature ๐
@cerulean pawn are you havin' pylint issues?
@meager fog both pylint and sphinx, now all fixed
@cerulean pawn pylint i run locally
installed stuff locally
just installed the sphinx stuff too
that helps a ton!
@cerulean pawn it's ok to rely on travis but local is the easier way to do it
8/8/2019 is CircuitPython day!
Getting started programming microcontrollers with CircuitPython by NYC Resistor - August 3, 2019.
CircuitPython Day with the India Linux Users Group Delhi (ILUGD) at the Delhi Technical University for Women - August 4, 2019.
Scott's teardown presentation "Supercharge Your Hardware" is up on GitHub.
https://github.com/tannewt/presentations/blob/master/teardown2019/presentation.md
https://hackaday.com/2019/07/03/teardown-2019-a-festival-of-hacking-art-and-fpgas/
๐
PyBadger Event Badge
Create a CircuitPython powered event badge with PyBadger, PyBadge and PyGamer!
https://learn.adafruit.com/pybadger-event-badge?view=all
Made with Mu - Alpha 2 Released with Web Mode
https://madewith.mu/mu/users/2019/07/05/alpha2.html
:badger:
oh, i'll make a badger emoji later
@cerulean pawn are you lurking?
yeah
@meager fog hug reports?
kinda multi-tasking, but "dogpile" group hug for the whole wonderful community ๐
a group hug from me too ๐
The latest Humble Bundle includes books that cover several products sold by Adafruit: https://www.humblebundle.com/books/programmable-boards-make-books
You're Welcome ๐
<lurking whilst landscaping>
๐
๐
CONGRATS @solar whale! ๐ ๐ ๐ ๐ ๐ ๐ ๐
Congrats ๐
no longer talking to space
@solar whale you should reload
hmm -- not hearing
In the weeds: AST and/or compile built-in
in drive-thru: can we reverse my thought? Link the README...yeah, what kattni just said.
Also, I mentioned it a couple weeks ago: config management tools like Ansible used in a pull system?
If the issue is that the learning guide tool is not conducive to collaboration and freshness, why not change the learning guide tool?
There are quite a few learning guides that are out-of-date.
@errant grail I've tried making an argument for having learn guide text in github in the past and didn't make much progress. can bring it up again
Fundamentally, the learn guide process and tool are great for creation, but collaborative maintenance is broken. I suggest fixing it rather than adopting a new tool.
Simply doesn't stay fresh and doesn't allow collaboration to maintain, particularly when authors are no longer around.
yup, I agree
eval substitute?
(lacking context) but I find the whole learn system page style and navigation unintuitive. I'm always failing to see the next page button and see a list of pages. Also lately for some reason it always wants me to log in instead of showing me the content.
(this is a problem with how I perceive the content, not a problem with the content)
the login may be because you are looking at unreleased stuff
the login is happening when i google a guide (the easiest way to find them).
so whatever's indexed in google isn't necessarily the right page (rel=canonical problems?)
hrm, weird
@ruby atlas I'll let the learn dev team know, could you PM me some more info re: your browser info and possibly a URL?
like, if you can reproduce it by pasting a link in an icognito window, that would be a good reproducible case
hmm maybe it's because i have previously logged in because of AIO.
Without getting into it, that shouldnt be a factor
it doesn't seem to be doing it today. I had googled "hue pyportal guide" then clicked the link https://learn.adafruit.com/pyportal-philips-hue-lighting-controller
Have a great week -- dog needs a walk ๐
So maybe it was a transient bug.
Python > English
๐คท @ruby atlas if it happens again and you can repro, feel free to DM me and I'll pass it to learn dev
Sure, i'll dump my cookies too.
And any other session details I can glean from chrome dev tools.
Oh, I am the person formerly by the nickname Roy (and realname). Finally realized I could change my nickname on here.
๐
@gilded cradle BTW, I have been meaning to offer this. I have Hifive Unleashed board with RISCV64 processors, and would like to add support for Blinka. Where would be a nice place to start?
This boards are quite pricy ($1k) and a bit rare. I offer this board to developers in Costa Rica and elsewhere who need access to one.
And I also use it to create the Slackware riscv port.
If anyone alse think they might need access to one, please let me know.
Is there base64 encoding support somethere in CircuitPython. I found refrence to the mucropython lib in the RTD. Importing base64 or binascii fails.
@umbral dagger Would this help?
https://circuitpython.readthedocs.io/en/3.x/docs/library/binascii.html
It has a binascii.a2b_base64(data)
@silver tapir That's what I was looking at... has it been ported, and, if so, where is it?
@umbral dagger It look like it is in head in github, https://github.com/adafruit/circuitpython/blob/master/extmod/modubinascii.c
I've just taken a quick look around the library bundle and it doesn't look like it's there.
indeed
I'm running 4.1 beta. Let me check on older ones.
Hi @silver tapir, to start with, you would need to get Adafruit_Python_PlatformDetect correctly detecting your board. We've had the best luck with Debian-based distributions of linux with this such as Armbian and Linaro.
@gilded cradle I'll put a Debian-riscv on it and try it, and let you know.
Sounds good. ๐
So, @tulip sleet and other who were watching the NRF board failing in Seattle - I just got the same error with a second board when trying to install 4.1.0-beta1
Hoping this one doesn't go haywire as well
And the file IS still located in that spot
@tough flax is this on your own PC?
Yep
I tried a second time and it gives me the same "Format Disk"error (not the could not find one)
can you get to the REPL? If so erase the filesystem. If not, try the 52840 CPy eraser uf2 I dropped to you
I can get to the repl
erase_filesystem() never returns, but I get a "you need to format the disk" error
If I reconnect to the REPL I'm back at the prompt
but still no filesystem
erase_filesystem() should cause the board to reboot
This is the second NRF52840 Express I've seen this with
could you check this on a native mac or Linux system?
Should I choose format?
Not easily - should I just ship it to you?
I have a pi I can use
yes, try it on the pi. Try storage.erase_filesystem() on that and see if CIRCUITPY appears
@tulip sleet
mount: wrong fs type, bad option, bad superblock on /dev/sda1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
is that after reformat? unplug and replug.
I erased it, unplugged it from windows and plugged it into pi
when I tried to mount it that's what I got
in dmesg I get this:
[ 310.439852] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x88888888)
[ 310.439864] F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock
[ 310.449495] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x88888888)
[ 310.449507] F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock
[ 310.449541] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x88888888)
[ 310.449549] F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock
[ 310.449557] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x88888888)
[ 310.449564] F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock
i thought it would try to mount automatically. plugging in my pi
yes, try that
Same errors
I can try your eraser
But right now it's hosed
I can share my screen if you want to drive
my eraser just does what storage.erase_filesystem() does
i'm just trying to get into my pi to see what happens when I plug in a working board
On mine, it showed a new device /dev/sda and a partition /dev/sda1
when I went to mount /dev/sda1 it barfed
you shouldnt' need to mount it manually, i thought
try plugging in some other board with a good CIRCUITPY and mounting in the same way
Ok.. while I have it plugged in:
root@handraiser:/dev# fdisk /dev/sda
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 2 MiB, 2093568 bytes, 4089 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sda1 1 4088 4088 2M 1 FAT12
that looks good
on mine it just mounted
pi@raspberrypi:~ $ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 14808816 5138012 9005712 37% /
devtmpfs 469544 0 469544 0% /dev
tmpfs 474152 0 474152 0% /dev/shm
tmpfs 474152 12352 461800 3% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474152 0 474152 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22683 20857 53% /boot
tmpfs 94828 0 94828 0% /run/user/1000
/dev/sda1 2024 260 1764 13% /media/pi/CIRCUITPY
So, I copied both filesystems with dd
did the new board work for a while and then just stop?
hexdump of the m4 looks like this:
root@handraiser:~# hexdump m4dump | head
0000000 feeb 4d90 4453 534f 2e35 0030 0202 0001
0000010 0001 f802 f80f 0006 003f 00ff 0001 0000
0000020 0000 0000 0080 3729 2100 4e28 204f 414e
0000030 454d 2020 2020 4146 2054 2020 2020 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0000200 fff8 ffff ffff ffff ffff ffff a009 0b00
0000210 00c0 efff 0f00 fff0 2011 1301 fff0 6fff
0000220 ff01 018f ffff 1bff fff0 efff 1f01 fff0
hexdump of the NRF looks like this:
root@handraiser:~# hexdump nrfdump | head
0000000 8888 8888 8888 8888 8888 8888 8888 8888
*
0176770 8888 8888 8888 8888 ffff ffff ffff ffff
0176780 ffff ffff ffff ffff ffff ffff ffff ffff
*
0176800 8888 8888 8888 8888 8888 8888 8888 8888
*
0176f70 8888 8888 8888 8888 ffff ffff ffff ffff
0176f80 ffff ffff ffff ffff ffff ffff ffff ffff
it's corrupted
The NRF52 worked until I tried to load beta1
Just like the one in Seattle
could you try to put 4.0.1 or 4.0.2 back on the BOOT drive and then reformat and see if it's better?
either 4.0.1 or 4.0.2 neither has the speedups, which is what I'd be suspicious of
On Linux when I reboot to bootloader mode, I get no sda1 partition
Should I reflash on Windows?
Or should I mount /dev/sda?
yes, try on windows. there's something odd about your pi that it's not automoutning. There are too many mount options to debug if you have to mount by hand
it's just how the partition table is set up
it's a raw disk?
automount on mine
/dev/sda 3965 959 3006 25% /media/pi/FTHR840BOOT
This Pi has been used - it's not clean... it's what I have
np if you're willing to type
I've lived in linux many years ๐
Now I get no REPL
I flashed it with 4.0.2
Now I have a corrupted drive and no REPL access... which is exactly where we were in Seattle
And this is just what I did
installed Beta1 - then when it failed, installed 4.0.2
Installing 4.0.2 did not change the corrupted drive (identical)
but I didn't get to do an erase
I'll try the same on one of my '840 feathers, but I have been doing lots of development with a recent master, and it's been OK. I may ask you to send it, but if I brick it and can then unbrick, I'll let you know how
sorry about this, it's mysterious
Make sure you try to copy it from Windows 10
Yes, I'll need to fire up my laptop
I have a feeling that it's something like Win10 closing the drive before it's done copying
I have seen that strange error about the source file disappearing before. I thought it was in the forums, but I can't find it right nwo
we have to go out fairly soon, so I'll try this later tonight
Yes, I might just pop it in the mail
it is useless to me
I am not hurting
I have other projects
was this a new one from the factory? I have two recent ones I can try this on. Give me a few days before you mail it, because maybe I can recover it if I can duplicate it
what antivirus are you running on Windows, anything besides the standard MS-supplied one?
Just defender
and are you using AIDA64 or Hard Drive Sentinel?
my guess is that your machine is fairly clean
No, just stock windows
So... I have one way to unstick it
I can use dd to copy the M4 version ๐
back on to the partition
But that will probably invalidate this for any kind of research into what's wrong
oh, wow, that's great! But I think it may indicate it's not a flash chip problem, but perhaps a timing problem in the beta build. I don't know why that would screw up the 4.0.x loads after it's corrupted, though.
I'm using the beta change that speeds things up in my test versions, so not sure that's the problem.
ok, gotta sign off for now
That dd copy did not work... :-(
It placed it at an odd place... take a look at where the magic number (feeb) starts
root@handraiser:~# hexdump nrfErase2dump
0000000 ffff ffff ffff ffff ffff ffff ffff ffff
*
0177770 ffff ffff ffff ffff feeb cd98 ccdb dbcf
0177780 aebd 88b8 8a8a 8889 8889 f88a f88f 888e
0177790 88bf 88ff 8889 8888 8888 8888 8888 bfa9
01777a0 a988 cea8 a8cf c9ce cdcd a8a8 a8a8 c9ce
01777b0 a8dc a8a8 a8a8 8888 8888 8888 8888 8888
01777c0 8888 8888 8888 8888 8888 8888 8888 8888
*
0177800 ffff ffff ffff ffff ffff ffff ffff ffff
I'm headed to dinner
@gilded cradle Ok. I had to deal with Debian a bit and build missing packages, but I now have python3 and pip.
python3 setup.py build, builds without error. And pip3 installed the module as well. I just rant the example code:
python3 test.py
Chip id: None
Board id: None
Pi 3B+? False
BBB? False
Orange Pi PC? False
generic Linux PC? False
I'm getting a venv ready to start playing. Git fork also ready and updated.
One of the files mentioned in the README says:
cat /proc/device-tree/compatible ; echo
sifive,fu540gsifive,fu500
The other one:
cat /proc/cpuinfo
hart : 1
isa : rv64imafdc
mmu : sv39
uarch : sifive,rocket0
(repeated until hart :3. And yes, they counter starts at 1, not a 0)
Great! The builds were all looking pretty even so I added one board to each build line. Let me know if this works and if there's anything else that needs checking.
@raven canopy hi - I'm trying to remember if I filed an issue about not adding beta library releases to the bundle -- I can't find one. I was going to document how we figured out how to do that. Or did you fix this already? Not sure where I should file it. Tnx
for my nrf52840 board,I'm trying to build circuitpython to use the UART instead of USB CDC port, so I compiled it with NO_USB = 1 (and had to disable the #elif !defined(NRF52840_XXAA) flag in supervisor/serial.c file), doesn't seem to be coming up.
@tulip sleet just got home after airline woes (was supposed to be home last night). I don't see any related issues; I would say circuitpython-build-tools would be the best repo for one. I do recall the topic...maybe an in-the-weeds? I do not recall handling it though. I've gotta run out in a bit, but we can chat about it later if you want.
Looks all good to me! Thank you!
Done!, you should add CP_RGB_STATUS_INVERTED_PWM to the particle xenon mpconfigboard.h file to get the PWM signals inverted.
@slender iron what version of the arm toolchain are you using for building CP right now
7.3.1 I think
Yah I'm looking at that but wasn't sure if we were on a specific version or something
I'm running 7.2.1
the command there installs a specific version
๎ฑ arm-none-eabi-gcc --version Tue Jul 9 09:54:52 2019
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@slender iron I'm getting an error trying to make -C mpy-cross. The board I'm about to add is a Trinket analog if that matters. Do I need mpy-cross?
what is the error?
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
GEN build/genhdr/moduledefs.h
QSTR updated
make: msgfmt: No such file or directory
make: *** [build/genhdr/en_US.mo] Error 1```
you need gettext for msgfmt
brew install gettext?
look in the instructions there is an install and link needed
oh ok. sorry. I must not have done this on this machine yet. I thought I had done all of that already.
the instructions may have changed since you did it
you can run them again without a problem
doing that now.
@slender iron and @idle owl I'm on a Mac now, but I have a very high-end Linux machine (System76). I'm thinking the toolchain will be simpler on Linux.... Thoughts?
k, awesome @granite crow
@drowsy geyser I think they are equally simple. the high end box will likely be faster thoug
Np @slender iron , thanks for the patience ๐ฌ
no problem! will review now
Thanks. Trying to re-establish my workflow. ๐
@slender iron do you do the thing with creating a case sensitive disk image to store the source code?
hmm. ok
if this is for CircuitPythons specifically, about how big should it be?
And presumably I need to delete the clone I made locally and clone it directly into the image once created?
GUID is ok?
not sure what you are asking
ya, sure
ok
Use Disk Utility on your Mac to create a disk image.
yah I'm there already
created it, but wasn't sure if CP needed something specific other than case-sensitive
nope
9de46f3 [supervisor/shared/rgb_led_status.c] Initial su... - C47D
5610e05 Fix up nrf so that it is initialized properly. ... - tannewt
fae1039 [rgb led status] Add CP_RGB_STATUS_PWM_INVERTED... - C47D
324cbe4 [rgb status] Also invert the pwm values on clea... - C47D
40fbac1 [rgb status] Adjust to current brightness - C47D
Oh wow, getting ili9163 to work with displayio was easy, it just worked
is there a way to check board.SPI() clock speed?
@umbral dagger hiya hows the halloween countdown going
@gilded cradle So, the dev env is ready for playing with Platform detector.
@umbral dagger hihi
@meager fog hey
Any particular past patch set to look at, or any guide on what to add next.
@umbral dagger did you get to look at halloween countdown stuff today
@umbral dagger do ya have what you need
I'm not really sure where do I get some of the codes that I see in the code...
I think so. It's coming alomg
I can work with what Phil linked me to
So is it detecting the platform right now? The identifier in /proc/device-tree/compatible sounds promising" That's what I used for one of the boards I did.
Yeah. the code is running, and it detects Linux as platform.
But is it detecting your board and chip?
('Chip id: ', None)
('Board id: ', None)
Ok, so you'll need to get those being detected. First the chip, then the board.
Ok. On it, let me see if I can get it...
๐
Not sure what I'm doing wrong here. I'm testing the library with repl.
detector.check_dt_compatible_value("sifive,fu540gsifive,fu500")
False
detector.check_dt_compatible_value("fu540gsifive,fu500")
False
No wait, got it.
python3 test.py
Chip id: HFU540
Cool
So, now that the chip is being detected, you can just add a conditional that if it's that chip, then we know it's that board.
yes, I believe so, but I think the same thing will need to be in a few other files.
Nevermind the few other files, that will be in the next phase.
Yes, board.py
ok, on it.
Ok.
python test.py
('Chip id: ', 'HFU540')
('Board id: ', 'SIFIVEHFUA00')
@gilded cradle Not sure what I'm missing for detecting the board family.
Or, where do I get the info for _MYBOARDS_IDS = {}, or if I should have one...
You would create a board ID for your board along with all the others. You could call is something like HIFIVE_UNLEASHED
Then you could add it to something like _HIFIVE_BOARDS_IDS incase there are other Hifive boards that get added to Blinka.
then you would create a property at the bottom like any_hifive_board(self) that's similar to the others.
I thing I have that.
Where should I paste a bit of code? Here, private msg, pastebin?
Are there any known issues with audioio two channel playback having problems keeping the two channels in sync? I've got some drift between them somehow.
@silver tapir, you could submit a PR and I can review it. If it's not quite right, you can just push additional changes.
@gilded cradle Sure ,here it is.
https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/31
Ok, taking a look
@gilded cradle Ok, travis ready. Just a small reply about the chip id.
This, still doesn't work btw.
print("Sifive? ", detector.board.SIFIVE)
Ok, let me look
And not sure if I should click "resolve conversation"...
Did you try the other one I suggested?
Tried this versions:
if self.detector.check_dt_compatible_value("fu500"): # Works
if self.detector.check_dt_compatible_value("sifive,fu540gsifive"): # Does not
if self.detector.check_dt_compatible_value("sifive"): # Works
if self.detector.check_dt_compatible_value("sifive,fu540gsifive,fu500"): # Does not
The full text from /proc is "sifive,fu540gsifive,fu500"
if self.detector.check_dt_compatible_value("fu540gsifive"):
Ok, then I guess we'll leave it for now. Hopefully there isn't another board with that string in it or we'll maybe need to revisit.
I'm working on the Slackware port, so as soon as there is another riscv64 board, I'll hope I'll get it.
Or at least access to developers who do. I'll re-test.
Ok. Can you try print("Sifive? ", detector.board.SIFIVE_UNLEASHED)
Also, it would be good to push you changes to the test file
Yeap, now it True.
๐
Test file only or readme as well?
Test file only is fine. I haven't been updating readme
It rare hw so it's ok.
Yeah
It's kind of like unit testing though so you make sure you don't break other boards.
Ok, test file ready.
Ok, merged and released. I'm going to get going, but we can work on the Blinka part tomorrow. You'll need to add the chip first. You'll probably need libgpiod installed and then take a look at this page to help with figuring out which line goes to which gpio: https://www.beyondlogic.org/an-introduction-to-chardev-gpio-and-libgpiod-on-the-raspberry-pi/
If you need other dependencies check out some of our learn guides: https://learn.adafruit.com/search?q=circuitpython linux
Sure thing. Thanks for the help.
You're welcome. Thanks for adding this. We love having boards added.
@gilded cradle, For tomorrow, libgpiod 1.1.1 compiled, and just to check blinka also builds.
/opt/gpio/bin/gpiodetect
gpiochip0 [10060000.gpio] (16 lines)
There's no more output.
Same for git master and next branches of libgpio
I made a python file with (i'm pretty sure)all the html colors as 24bit hex. module for cp, circuitpyhon_displayio_html_colors? does this sound like a thing we'd want?
ex: gray_cloud = GrayCloud = 0xb6b6b4 gray_goose = GrayGoose = 0xd1d0ce platinum = Platinum = 0xe5e4e2 metallic_silver = MetallicSilver = 0xbcc6cc blue_gray = BlueGray = 0x98afc7 light_slate_gray = LightSlateGray = 0x6d7b8d slate_gray = SlateGray = 0x657383 jet_gray = JetGray = 0x616d7e mist_blue = MistBlue = 0x646d7e marble_blue = MarbleBlue = 0x566d7e slate_blue = SlateBlue = 0x737ca1 steel_blue = SteelBlue = 0x4863a0 blue_jay = BlueJay = 0x2b547e dark_slate_blue = DarkSlateBlue = 0x2b3856 midnight_blue = MidnightBlue = 0x151b54 navy_blue = NavyBlue = 0x000080 blue_whale = BlueWhale = 0x342d7e lapis_blue = LapisBlue = 0x15317e denim_dark_blue = DenimDarkBlue = 0x151b8d earth_blue = EarthBlue = 0x0000a0 cobalt_blue = CobaltBlue = 0x0020c2 blueberry_blue = BlueberryBlue = 0x0041c2 sapphire_blue = SapphireBlue = 0x2554c7
@marble hornet would be good for the community bundle!
@idle owl I had some crash using pybadger show_qr_code.
So I rerfreshed my repository and tried to launch examples/pybadger_simpletest.py and ended up with the same error.
pybadger = PyBadger()
pybadger.show_badge(name_string="Blinka", hello_scale=2, my_name_is_scale=2, name_scale=3)
while True:
pybadger.auto_dim_display(delay=10)
if pybadger.button.a:
pybadger.show_business_card(image_name="Blinka.bmp", name_string="Blinka", name_scale=2,
email_string_one="blinka@", email_string_two="adafruit.com")
elif pybadger.button.b:
pybadger.show_qr_code(data="https://circuitpython.org")
elif pybadger.button.start:
pybadger.show_badge(name_string="Blinka", hello_scale=2, my_name_is_scale=2, name_scale=3)
I'll stick to my image QRcode show for the rest of EuroPython, no problem.
But I wanted to warn you
20 minutes later, no idea what I broke in my build chain but I just removed the .mpy I built and added a pure copy of the library source file and it works.
I'll figure out later what happen
I've put CircuitPython on a PyGamer. My understanding is the audioio libraries nowadays put the output at the midpoint 32768 (3.3V/2) by default.
From REPL on 4.1.0-beta.1 I'm running
import board
import audioio
dacs = audioio.AudioOut(board.A0, right_channel=board.A1)
As the third command runs both outputs jump to around 1.65V as expected. They then drift slowly (perhaps 5 seconds) to A0=0.03V and A1=2.46V - drift is almost linear but there is a slight jump.
Other...
I'll try this later on Feather M4.
@slender iron ๐
oh, neat @marble hornet
I took some time to update my pygamer with the latest learn guide about pybadger
https://learn.adafruit.com/pybadger-event-badge/prepare-your-pybadge
But there is no adafruit_pybadger.mpy in the library bundle linked on circuitpython.org
https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/download/20190709/adafruit-circuitpython-bundle-4.x-mpy-20190709.zip
@lethal abyss check https://github.com/adafruit/Adafruit_CircuitPython_PyBadger/releases
It hasn't been added to the bundle yet
you'll want this one ๐
@prime flower thank you! But i can't take too much credit. i wrote a python script to write it for me ๐
thanks @prime flower I wanted to point the issue as the learn guide is published and point to the lib bundle.
I'm not stucked as I'm using my own local version ๐
I'm glad I'm not the only one who tripped over the pybadger not being part of the library bundle yet.:-D
Also, sorry for missing the CircuitPython weekly chat this week. ๐ฆ I'm moving into a new roie at work and getting ready to move from CA to AZ in September, so things are a bit hectic right now.
@marble hornet heya thats handy, can you add it to the contributor bundle?
we could add support for it into turtle (to match CPython)
I'm having some trouble with the sample code from the pybadger learn guide on my PyGamer. I get errors when I press the buttons. Busy day at work today, but I'll see if I can run down what's going on at lunchtime if I get a break.
Initial badge display is fine, but the call to pybadger.show_business_card tells me "Unexpected keyword argument 'name_string')" and the call to pybadger.show_qr_code is producing the error:
File: "adafruit_miniqr.py", line 531, in put
TypeError: can't convert 'int' object to str implicitly
Since I don't have time to dig into this right now, just wanted to flag what I'm seeing in case someone else wants to look at it before I have time to come back to it.
@meager fog sure, the https://github.com/adafruit/CircuitPython_Community_Bundle ?
yes
@marble hornet https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library/sharing-in-the-community-bundle
I appear to have made some data which despite being even in length (4930 samples = 2465*2) when passed to audio.RawSample with channel_count=2 and then sent to output with play() with loop=True it will play but the A0/A1 will not stay synchronised and drift around. At 100kHz playback it takes 60 seconds to return to being very briefly in sync.
Code is rather large because it contains the data as a list, see https://github.com/kevinjwalters/circuitpython-examples/blob/master/pygamer...
@silver tapir try /opt/gpio/bin/gpioinfo
Much better.
gpiochip0 - 16 lines:
line 0: unnamed unused input active-high
line 1: unnamed unused input active-high
line 2: unnamed unused input active-high
line 3: unnamed unused input active-high
line 4: unnamed unused input active-high
line 5: unnamed unused input active-high
line 6: unnamed unused input active-high
line 7: unnamed unused input active-high
line 8: unnamed unused input active-high
line 9: unnamed unused input active-high
line 10: unnamed "?" output active-low [used]
line 11: unnamed "spi2.0 cd" input active-high [used]
line 12: unnamed unused output active-high
line 13: unnamed unused input active-high
line 14: unnamed unused input active-high
line 15: unnamed unused input active-high
@lethal abyss Thanks for catching that! I got caught up with other things and forgot to get it into the bundle. I'll do that today.
@idle owl that's ok because I knew how to solve my issue
@lethal abyss I meant to do it anyway, it needs to be there. So thank you for reminding me regardless. ๐
@slender iron does it make sense for microSD as external flash filesystem? or is only non-removable storage preferred or something?
it'd be nice if it was managed by the supervisor. I'd hesitate to use it as CIRCUITPY itself since it is removable
okay
browsing circuitpython source, figuring out what goes where at the moment, I'd like to add PWM audio out for nrf port
Is it going to have a coin acceptor or is that just a clever graphic?
Or place for a coin cell? ๐
does circuitpython support interrupts?
it's will be a real coin slot, some coin will go through for sure
@gilded cradle I'm happy with gpioinfo. I was being pessimist and thinking I'd have to code upstream.
Please let me know what could be the next step.
The next step is to create a microcontroller which is just the chip. There's plenty of examples there. Since you only have 1 GPIO controller, it's pretty easy. For instance look at the allwinner_h3. The number you pass to Pin is the libgpiod line number. Also if you create any blank folders, be sure to copy over an empty init.py file or PyPI won't install it.
@lavish sundial not from python, no
@gilded cradle That would be where, in blinka 's code? Or still in the Adafruit platform detect lib?
@cerulean pawn its on our list - chat with @onyx hinge
if you work together perhaps it will go easier ๐
but yes having PWM output for 'audioio' would be great - it can use 8bit pwm (or 16 if the pwm is fast enough)
and then we just need to RC filter it
thanks @meager fog, will talk to them. Saw some gh issues for same just now
@slender iron Did you have to do anything special to get your Hovercam to work? Mine's not showing up at all.
is the screen working? I think you need to turn on the usb side
@cerulean pawn @meager fog Yes, tannewt has asked me to look into the adding pwm audio to the nrf port. I have not been able to put much time into it now, I have basically just gotten my dev environment up for the nrf boards, and tested a speaker on the existing PWM function. The idea is to be compatible with the current analog audio interface, so that code will work from the samd boards with just a change of pin designator, but there may also be limits on the bit resolution of the audio that are more restrictive than the samd port.
Hitting a weird impasse with sphinx. It seems to think I have an "unexpected" indentation for a class docstring but it's the correct indentation level ๐คท https://travis-ci.com/brentru/Adafruit_CircuitPython_MiniMQTT/jobs/214960223#L386
I think you need a blank line before the :param
@celest zenith sphinx doesn't care about that it seems...
Hmm. adding blank lines before the first :param line worked for me -- also had to add blank lines after the .. code-block directives
@celest zenith Ok, I added those and still hit the same indentation level error thru sphinx.. weird
@prime flower i have a feeling that's related to the docstring being inside the __init__ special method. .. automodule doesn't render special methods by default, so the parser may not recognize that its inside the init and thinks that the indentation is wrong...
most of the __init__ docstrings i've seen are at the class level...
you could include special methods though with
.. automodule:
:special-members:
https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#directive-automodule
@raven canopy Is there an alternative?
i.e: > most of the init docstrings i've seen are at the class level...
other than using :special-members:, not that i know of really. other than manually typing out all members with :members: foo, bar, __init__ (which i'm not even sure would work with dunders)
@raven canopy I originally had it at the class-level, though
I tried moving it to init, same issue.
and it still gave the error? (didn't roll through the Travis history)
๐ค i'll take another look then... ๐
oh wait... its specifically for MQTT.connect(). der. ๐คฆ
def connect(self, clean_session=True):
"""Initiates connection with the MQTT Broker.
:param bool clean_session: Establishes a persistent session
with the broker. Defaults to a non-persistent session.
"""
should be
def connect(self, clean_session=True):
"""Initiates connection with the MQTT Broker.
:param bool clean_session: Establishes a persistent session
with the broker. Defaults to a
non-persistent session.
"""
subsequent lines need to indent past the :
oof. that looks horrible here in discord.
doesn't it indent pas the : ?
needs to be past the second/closing :
even with all the indents past the : I'm still hitting that..
maybe the code blocks?
the same line is complaining?
got it passin! thanks @raven canopy and @celest zenith
Does anyone know the max size and speed of the micro SD card for the M0 adalogger?
@slender iron is that ur cat?
@marble hornet was there something on AAE? my parents came so I missed it
Yes, A hand snap activated, cat toy servo running off a cpx, to me the video sounded like you speaking.
ah, nope. not me. will need to watch it though
my kitties are mostly white. search #pet-photos for pics
@onyx hinge do you have that test code somewhere online?
Tannewt: AWE, very cute!๐ฑ
@cerulean pawn I don't have any code to post yet. So far, I played pure tones using pulseio PWMOut, so I at least knew the speaker and op-amp were working.
@cerulean pawn basically, ```>>> import pulseio
from board import *
p = pulseio.PWMOut(D0, variable_frequency=True)
p.duty_cycle = 1000
p.frequency = 440
p.frequency = 523
p.duty_cycle = 0
One out of every ~20 or so SAMD51 does this when flashing the UF2 bootloader from AS7 (Pulsing green indicator LED and solid red neopixel). Reflashing doesn't fix it. Has anyone else encountered this?
@lime trellis photo is an ESP32, I think? Not sure what you meant.
is it on the bottom of the board?
ok, I see it's the SAM32. Does the BOOT drive show up
@umbral dagger hiya please take a sped-up GIF of the halloween countdown
@umbral dagger or you can have noe + pedro do it for you
but right now needs a little more demo of what they're building
To capture the background changing and the count decreasing? Do you want the final days then the "Happy Halloween" screen?
just the countdown part
doesnt need to be the final part
or at least, the background-changing part
@danh sorry for the confusion. Yes SAMD51 on back side. Does not ever reach BOOT drive. Windows notifies of USB error.
@meager fog Ok, I can fake the timing to speed it up.
@lime trellis check the fuse settings from AS7, but I have no other first-line suggestions
is it fast or slow red led pulse?
@tulip sleet I'll take another pass through the fuses, bootprot looked fine. Red RGB is constant.
fast means the UF2 bootloader is not seeing a USB connection (can simulate this by hooking it up to a USB power supply or use a charge-only cable)
so i'd check the soldering on the connector, etc
Ooo ok that's a good thing to try. Do you happen to have any tricks or routines to revive bricked samd chips?
if you can get to SWD, then you're home free: can set fuses manually. Also SAMD51 has a bit to set that bypasses the BOOTPROT setting
see BPDIS
@meager fog I put it in as the thumb image
@tulip sleet that's just it, as far as I can tell I'm in SWD. I can read device id and set user page no problem. I'll look more into your comment about the USB port after doing power only test. Thank you for your insight!
I'd expect it to throw an exception when the sample count isn't divisible by channel_count. I'm not positive it does though.
I'd encourage you to dig into the C side of the audio APIs. I bet you could fix a number of these issues.
@slender iron when you have a minute, I have a couple of general questions about the files used to add a board to CP
@idle owl I have time now. want to hop in voice chat?
@slender iron sure.
@idle owl do you have a minute to chat sometime today or tomorrow?
@sly falcon I can make time. Today might be better as tomorrow I'm heading out in the afternoon for the weekend.
Afternoon ET.
Sure. Audio/video/text?
text...I tried setting up my audio and well...I think I have to tear apart my computer to find out why the connector isn't working ๐
pops over to private chat
@slender iron is microcontroller.pins also considered a "module" ?
yup
thanks
@slender iron ok for the most basic changes needed: rename the board in mpconfigboard.h... where do the following things get changed if needed? ```
- verify that your chip variant matches (mpconfigboard.mk or .h or both?)
- verify that the spi flash configuration matches (same?)
- verify that the crystal configuration matches? (don't see that anywhere)
@idle owl 1) both 2) .h for spi pins and .mk for specifying the chip 3) #define BOARD_HAS_CRYSTAL 1 in .h
for 3 see metro_m0
ah I don't see it because I'm looking at a Trinket variant. right. ok. Thanks
ya, it's a weird one where it's only there if it is present
@slender iron : can i, again, ask why Groups have a set length?
I did it originally to prevent allocations during actual rendering
I agree it'd be good to remove though
it's also way simpler to implement
- Add BLE central functionality to
Service,Characteristic, andCharacteristicBuffer. Add new native classesCentralandScanner`. - Deleted remnants of
Devicecode (was combined central and peripheral). - Remove
AddressType. Now it's just an integer.Addresschanged correspondingly. - Deleted
AdvertisementData.BLE Advertisement data is now constructed in Python, inadafruit_ble.advertising. Broadcasterremoved as a separate class for beacons to avoid a lot of dupl...
Hi all! Quick Q re: audiobusio on Itsy Bitsy M4 Express. It seems the module is not available. When running import audiobusio in main.py I get Traceback (most recent call last): File "main.py", line 1, in <module> ImportError: no module named 'audiobusio'. I am attempting to use audiobusio.I2SOut. Thoughts about what I might be doing wrong?
Adafruit CircuitPython 4.0.2 on 2019-06-27; Adafruit ItsyBitsy M4 Express with samd51g19
>>> help("modules")
__main__ collections math storage
_os digitalio microcontroller struct
_pixelbuf displayio micropython supervisor
_time errno neopixel_write sys
analogio fontio os terminalio
array frequencyio pulseio time
audioio gamepad random usb_hid
bitbangio gc re usb_midi
board i2cslave rotaryio
builtins io rtc
busio json samd
side note: I'll use #help-with-circuitpython for Q's like these in the future ๐
@buoyant coral I don't believe the smallest samd chips have i2s support
looks
yup, it's missing from the 48 pin versions like the itsy bitsy has
Nutz. So yeah I just received 2x Itsy Bitsy M4 Express boards which apparently feature samd51g19 which lacks I2S as that data sheet shows. Is there another Itsy Bitsy Express board that has a SAMD chip with I2S support and 512k+ RAM? I may need to use an Itsy Bitsy M4 Express & an Itsy Bitsy M0 Express in tandem.
Might go the analog route via A0 & A1. Thoughts on an amp module (e.g. https://www.adafruit.com/product/2130) for those analog signals? Space is limited for this project. Looks like the pins emit voltages similar to those found in typical line level audio applications. My only concern is whether the amplifier module mentioned above can work with that analog audio signal with an odd DC offset.
@buoyant coral can you fit a Feather M4 in the space? That has I2S.
You could also AC couple the signals if your application doesn't require response down to DC, then you could remove the offset.
Hey @tulip sleet! Good idea! It would probably fit. I might just do that. I think I may even have one at the ready in a box somewhere. My only concern with the Feather is supplying regulated power via the battery pin. Most microcontroller board choose between a VIN pin and the USB connector. The Feather platform differs in that one can only power it via the USB connector or the BAT pin (which has a charge controller in-line). If my calcs are correct, it could be powered via that BAT pin if the supply voltage is regulated at about 4.2V (allowing power to pass into the microcontroller, but eliminating the risk of the charge controller attempting to send voltage back the power supply if a USB cable is also connected).
@main meteor I'm not familiar with that approach. Since this discussion is moving further away from CircuitPython, perhaps we could discuss further in #help-with-audio? The application only requires a single speaker.
@buoyant coral Did you see this page, especially the bottom part? https://learn.adafruit.com/adafruit-feather-m4-express-atsamd51/power-management
@tulip sleet yes indeedy! ๐ I decided to also dive a little deeper in this existing thread: https://forums.adafruit.com/viewtopic.php?f=8&t=142737
Have you guys heard of the new esp32-S2 chip?
It is going to have build-in usb, hopefully it can support mass storage flashing so it can finally have circuitpython
somebody in here is eagerly awaiting being able to get their hands on one to start porting. I don't remember names though
it's going to take a while, and I'm afraid od them buthering the usb standard
the current beta silicon still doesn't include the usb bits
Isn't it included, or is the software ready yet?
we were told the silicon doesn't support it (maybe it's buggy; I don't know)
I'm eyeing it, but I'm currently pretty pleased with the AirLift concept, which divides up the functionality nicely so I don't have to worry about networking with the same CPU that's running my main code.
so here's my presentation from EuroPython:
Boston - EuroPython Basel Friday, 12th 2019
I assume we will need to keep track of the built assets versus the boards list?
I'm in the middle of some application programming at the moment but will have a look when I get to end of that.
I've also discovered another problem with dacs.play(something, loop=True) ceasing output and possibly leaving output on the last sample in something. I thought it was time based but it's not, sometimes it's 20 seconds, sometimes over a 100, sometimes seems to run ok "forever". It's very unclear what the trigger is for cessation of looping! The code in question was just doing ...
@stuck elbow I really I wish to stay more days and applause you for all the fun you bring to EuroPython this year.
having unplanned training sessions with perfect strangers was one of my favorite moments! ๐
I'm glad to hear that
@meager fog @twin mica got it fixed it seems
@main meteor There are some very nice options available with just an esp32 for example pip install and the esp32 can currently have 8MB PSRAM what can also be increased to 16MB
You can do some real extra stuff with that amount of ram
@tulip sleet starting to play with BLE PR's the UART/Eddystone/peripheral examples seem to work -- I'm not sure how to use the central demo.
@tulip sleet ah -- got it -- using 2 nrf52840s they are talking!
now I can start playing ๐
are there particularly recommended ways to profile a circuitpython application beyond spam-printing gc.mem_free and gc.mem_alloc? I'm imagining something like cprofile (except not deprecated lol) but really anything to give insight as to where/why memory is allocated would be awesome
I suppose I could also scan through sys.modules and do a sizeof on everything I find but that seems... brute force and inaccurate
the root issue I suppose: converted a bunch of heavy .py files to .mpy files and noticed very little difference in mem_free() (though a huge decrease in startup time, which was great), which is telling me freezing stuff in is possibly not going to help me as much as I need.
(I also just realized I should have put this in #help-with-circuitpython, sorry...)
any memory analyzis is going to be inaccurate, because python doesn't really have a concept of memory ownership, so you never know who actually holds it
even rough guesses are fine by me (which is really all cprofile gives me on desktop cpython)
if you call gc.mem_free(1) you get a memory map with types of objects marked
and you can enable debugging to enable the stack analysis module
gc.mem_free(1) gives me a TypeError, takes no positional args
I'll look into enabling debugging though
ahhh looks like I want micropython.mem_info([verbose]) -- edit: this doesn't exist on m4
@sudden coral iirc, mem_info() was disabled to gain space for translated builds. you could turn it on in a build with #define MICROPY_PY_MICROPYTHON_MEM_INFO (1) in a port/board's mpconfig___.h
https://github.com/adafruit/circuitpython/blob/master/py/circuitpy_mpconfig.h#L106
<wrong>looks like that functionality is pretty unmaintained, I get a gnarly build failure when forcing that to be enabled</wrong>
nvm I should consider make clean every once in a while, the fix for most qstr issues
What editor do you guys use for circuitpython?
I use nano but I never edit code on the device. I edit locally on my computer then copy to the device and sync the file system.
really any editor will do - micro/circuitpython don't have tight integrations with most editors. Mu is I believe a common beginner's recommendation, otherwise pick your fav (vim/emacs/vscode/sublime/whatever)
If you edit on the device, the editor must handle writes properly.
I have a particle xenon flashed with circuitpython. How do I get it to go back to uf2 mass storage bootloader mode? or am I better off just using nrfjprog to program it?
I tried holding the other physical button and poking reset but that didn't seem to do anything
Double tap the reset button
that should give me a breathing red led when I do it, right?
Not sure about led bout should mount The NRFBOOT drive . Not sure of exact name.
OK. I've been trying that and I only ever see CIRCUITPY, never *BOOT
Yeah mu is the best editor because it knows the libraries.
Just don't like the editor itself
Looks like it's made for people with bad eyesight
>>> microcontroller.reset()
``` isn't getting me to the bootloader either. weird.
(though, I know there have been problems there in the past; I think this is a micropython module that may not be seeing much testing in circuitpython)
@sudden coral did you see my stream about memory debugging?
I did not!
Live stream of @tannewt debugging memory issues in CircuitPython. Visit the Adafruit shop online - http://www.adafruit.com ----------------------------------...
climbs back up out of the Tk/python rabbit hole for a bit.
Hi. I suppose that it is not 100% a circuitpython issue, but I think it is the closer to refer it here. I have a trinket m0 that it was working until yesterday (programmable and interacting with led/button). Today circuitpy did not appear and mu said there was no device connected. I reset it, red led appears and remains red. Tried on a second m0 I have and I had the same. Same when I used another usb cable. Do you know what could it mean?
sounds like a bad usb cable/port
maybe shut down computer, wait a bit, then use another port
I checked two other usb ports and a third usb cable, but the same. Probably I should find another pc to check. Thank you!
weird!
I read about kaspersky and norton possible issues in troubleshooting section. I have eset and I am wondering if it is something similar. I will find a pc without eset to check it.
PHP developer here. Really enjoying learning more about Python & CircuitPython! Aside from creating a PR (since I'm a Python noob), what is the preferred way to request CircuitPython features?
- Hoping to propose a small revision to CircuitPython's
json.dumpsso it supports pretty-printing of JSON strings (perhaps by default?). - Hoping to propose a port of https://pyyaml.org/wiki/PyYAML.
I'd love to help. Still a Python noob, though.
@buoyant coral I'm happy to help you contribute! for ideas an issue is the place to start. code is always welcome via pr
pyyaml may be doable as python code
Are there any examples for using esp32spi as a http server? ๐
Seems it would be perfect to serve files from the file system and add some dynamic data or set settings over it
@solar whale re two 52840โs. Yes, this is exactly how I was developing and testing. One time with the current code I got a hard fault, but was unable to reproduce it. It was when attempting to connect from client with bad argument and then doing something else like trying to write. Not able to reproduce. But the demo code in the library ran for five hours with no problems before I stopped it.
Anyone worked with adafruit_cursorcontrol ? I'm trying to get running on a PyGamer and it's initing and erroring coming back with File "<stdin>", line 1, in <module>
File "adafruit_cursorcontrol/cursorcontrol.py", line 81, in init
File "adafruit_cursorcontrol/cursorcontrol.py", line 240, in generate_cursor
it got cut off, can you paste the whole exception?
how did you load that image?
I didn't load any image...
mouse_cursor = Cursor(display, display_group=splash)
is line 14, asking the library to run with its defaults
where does it get the image from?
It generates a default image in memory and loads it.
This is why it is strange.
@snow cedar can you file an issue on the repo? i think its a bug related to the last change to that file. looks like line 81 should be updated to be self.generate_cursor(self.cursor_bitmap)
Will do...
thanks!
SdFAT library is excellent, I'm looking forward to having it on CircuitPython. One of the features most expected is initialize at the highest speed supported by the board which can be up to 50 MHz.
Just tested that fix @raven canopy and it looks good
Issue in https://github.com/adafruit/Adafruit_CircuitPython_CursorControl/issues/8 if anyone wants to follow it. ๐
Just trying out the examples from the Adafruit article and almost immediatly got an error: code.py output: Traceback (most recent call last): File "code.py", line 14, in <m...
Whee, I have all the stubs written for nrf audioout, and have started working on sharing code with pwmout for allocating, initializing, and releasing pwm channels. It looks like audio will have to have its very own PWM channel, so it will take away 4 PWMs for 1 or 2 audio channels. I also spotted a few bugs, which I've noted in my own log and will file as issues if I don't fix them.
@onyx hinge nice
@indigo wedge there's a PR ๐
This is still a work in progress, but opening it up for early feedback and suggestions.
Adds Server creation methods to esp32spi.py
Instantiates a server on the esp32 on the specified port and a ...
I will need to re-scale samples in a different way than DAC-based audio out. Say you have a 8kHz sample to play. You will end up reprogramming the PWM for a "top" of 2000. This means you have to rescale the individual samples by (8000/32768) before using them as the raw PWM value.
At least, I didn't see anywhere else this is being done now
in general, no
people tend to pick the fasts PWM they can get
then they update the timer every 8 khz
if it were possible, the best way is PDM not PWM
but i dont know that any chips have a pdm out periph
I don't see any sign of PDM in the nrf manual (I thought that too)
they have a PDM input only
yeah its ok
so i sorta think maybe best to do it the classic way - dont change the frequency, just duty
unless you want to use the time for both
which will save u a timer but then yeah you need to set it up when playing
Do you think there's something better to do than set the PWM "top" to give 1 PWM cycle = 1 audio sample? Sounds like you are.
For instance, set it for a "top" of 400, and do a temporal-resample too?
no i think thats peachy
just make sure you're at least a decade above the sample rate
also, we can tweak if one way isnt workin'
16MHz / 2000 = 8kHz. Are by "decade above" are you saying 16MHz / 200 = 80kHz, and repeat each sample 10 times?
(the hardware can repeat a sample an integer number of times)
but then you've gone from a ~10 bit PWM to a ~8 bit PWM, so the fidelity will suffer
(16MHz is the highest counting rate available for PWM on nrf)
really? its a 64mhz chip ๐
you'd think they'd give you at least 32mhz for the pwm
yeah you need the pwm rate to be 10x the sample rate
so 80khz
otherwise you cant filter well
so yeah do 8 bit
there's no PLL's or anythin?
I'm reading https://infocenter.nordicsemi.com/pdf/nRF52840_OPS_v0.5.pdf 46.5.8 PRESCALER
choices are 16MHz down to 125kHz
@meager fog that's a-freaking-mazing, thanks! ๐
@onyx hinge i guess thats whatcha got
@indigo wedge please try it and suggest anything to the submitter, i wont have time to test it out
will do for sure, and I see there's a AP mode PR too, just what I needed
Thanks, I'll code it so that it will find an integer sample repetition factor that gives an underlying waveform that repeats at around 80kHz, even if that means a smaller resolution (e.g. 8-bit equivalent)
so for 8kHz original sample, it might literally be 80kHz and 200 (7.xxx bits resolution)
@indigo wedge yes i asked them to split the two. they should work just fine but...again, untested. please check and suggest. the PRs looked at least 90% there
@onyx hinge id recommend, if it doesnt glitch, just set it to max speed (16mhz) and 8 bit, and then set up the DMA to feed it the duty cycle values at whatever rate audioio wants
if its 22khz it wont sound great, but thats not our problem ๐
and there may be situations where thats desirable (say if you can connect a hi quality filter)
like, the PWM should be free-running
i havent actually used this periph but im guessing based on similar ones ๐
mostly this should get you going ASAP. until you listen w/ears or look on a scope, hard to really gauge ๐
I also don't see how I can retrieve the PWM value currently being output. I can ignore it for now, but it may make for an unavoidable audio pop at shutdown, because the PWM duty cycle can't be ramped from whatever it was at .stop() to the "quiescent" value. (If I play to the end of a buffer, I would know the last sample in the buffer, however). This is something I should note and work on later, not get bogged down by.
Hoping to propose a small revision to CircuitPython's json.dumps so it supports pretty-printing of JSON strings. It seems ujson.dumps supports two additional formatting arguments: json.dumps(parsed, indent=4, sort_keys=True) (https://stackoverflow.com/a/12944035/6763539).
Some may want this pretty-print functionality, while others may find it unnecessary. Given how Python supports import of specific module functions, perhaps there should be json.dump & a json.dumps where `json.dump...
Hoping to propose a port of https://pyyaml.org/wiki/PyYAML to a CircuitPython-compatible module.
i think this would be best done as a pure python library - rather than built into the circuitpython core. is it something you'd like to hack on?
Sure! Do you happen to have link(s) to preferred documentation on making this a Python library that could be easily imported into an environment using CircuitPython? Can CircuitPython use library or package management software like pip?
we do! https://learn.adafruit.com/creating-and-sharing-a-circuitpython-library
since this isnt hardware dependant, we recommend you can write your code for python3 (using nothing that circuitpython doesn't have access to) for superfast dev, then 'port' it to circuitpython which should be just any clean up
Awesome, thx! Will take a closer look! Hope to have progress to report in the coming weeks...
I'm running with a smaller amount of data now (882 * 2 = 1764) and if I transform those values sometimes A0/A1 stay in sync and sometimes they don't. When they are in sync there might be a few samples missing too.
Hey gang, so super green question here but: whatโs a VIN in relation to my m0 express featherboard? The sharp sensor Iโm looking to use says this for the connections: โThe square pad is ground, middle is VIN, and the remaining pad is output. โ โ Iโm completely clueless, my searches just show stuff about servos or stuff that mentions this but doesnโt actually tell me what VIN is/stands for/what on my board is the same as VIN. I assume itโs something power related, hopefully my 3v, but thatโs me guesstimating. Yโall have any insight here?
@past tangle VIN is Voltage In, which is the power supply line that provides power to the sensor. so you'd connect the Feather's 3V pin to VIN.
The ARM 8-2019-q3 release, using gcc 8.3.1, was released on July 10. It is not available in a Linux ppa, only as a tarball. It fixes some issues in the previous gcc8 release related to LTO.
@raven canopy awesome, thanks for the speedy reply! Iโm a little gun shy as I start hooking everything up and donโt care to risk frying my board or components just yet ๐ thanks!
How frequently does run_background_tasks() get called, when things are operating properly?
i've been under the impression that it runs at every cycle of the VM loop...
that's going to be a lot more often than once per 2ms, then?
looking at it again now. there is a flag so that it doesn't run until the "last" run is complete...
Yes, I see that part too
and also some scattered places where it's called explicitly, presumably because they run a long time without returning to Python code.
What's on my mind is the sizing of the audio buffer for nrf pwm audio
which I think we've established will be the original audio sample, resampled to 8 bits at a sample rate of 62.5kHz -- but each sample still takes 2 or maybe even 4 uint16_ts to store, so the converted audio storage feels like a lot of RAM
CP doesn't have PIL right? so this example is only good for running with blinka on Linux? https://github.com/adafruit/Adafruit_CircuitPython_DotStar/blob/master/examples/dotstar_image_paint.py
I also assumed PIL wouldn't work, but that would be amazing if it could ๐ฎ
maybe certain modules are OK?
I was playing with that yesterday and that's the conclusion that I came to.
@green rock that it doesn't work at all or that certain modules are ok?
That CP doesn't have any of PIL.
๐ฆ but expected.
Greets yall, I'm pretty new to Travis and everything CI related, do you have any preferred tutorial on it, or can I get started by reading the docs?
@granite crow the docs and google are how i've learned thus far. i don't know of any "comprehensive" tutorial... https://docs.travis-ci.com/user/for-beginners/
Thanks @raven canopy 
The other day I reported problems accessing the uf2 bootloader on a particle xenon. Update: When I use arduino to flash the bootloader, it works (I can reach it by the normal double-click on the reset button, boot filesystem label FTHR840BOOT). When I use 'make sd' in circuitpython, I can't access the uf2 bootloader.
however, resetting to uf2 from microcontroller.on_next_reset still doesn't work
Has anyone ever had a circuit python device claim to show up as a 'network device' when plugged into mac os usb?
It appears the serial monitor and repl isn't working correctly in Mu editor
looks like its showing up as /dev/cu.usbmodem14201
I have a ESP32 co processor attached... but I haven't started seeing this until recently.
@graceful heart sounds like the "serial device" that lets you access the python terminal is being interpreted as an old fashioned dial-up modem. I dunno if that is typical for macs or not. I wouldn't have expected it to change just because you added the ESP32 co-processor, it should depend on how circuitpython identifies itself to the OS
The itsy bitsy LED starts green and then after a few seconds turns to white, which as I understand, means it has went into REPL mode? This is also when the OS pops up asking me to configure it as a network device.
Mine shows up as usbmodem, but it's always been tty.usbmodem.
ok..... I just restarted my mac. It still popped up looking like a network device, but now Mu is able to communicate with it now.
it used to think it was a keyboard lol.
๐ Getting closer... maybe?
maybe! lol
enum { DFU_MAGIC_SERIAL = 0x4e };
NRF_POWER->GPREGRET = DFU_MAGIC_SERIAL;
reset_cpu();
}
``` hm, it's supposed to be resetting to DFU (if you take this at face value) but that doesn't seem to happen either.
#define DFU_MAGIC_UF2_RESET 0x57
``` from uf2 bootloader source
but it's not appearing as a "serial dfu" device either, it just boots right into circuitpython...
At least for my PyPortal, the usbmodemNNNNN device shows up any time itโs plugged in to the Mac. Addressable with screen, and I assume thatโs the device Mu talks to, too. Have seen other screenshots of similar devices showing up in network preferences.
using 0x57 doesn't make any difference
back home
This makes microcontroller.on_next_reset(RunMode.BOOTLOADER) work as documented.
Testing performed: flashed on a Particle Xenon with the Feather nRF52840 express bootloader installed, the sequence
import microcontroller
microcontroller.on_next_reset(microcontroller.RunMode.BOOTLOADER)
microcontroller.reset()
causes the CIRCUITPYTHON device to disappear and be replaced by the NRF840BOOT device. Just doing microcontroller.reset() works as before, as does double-reset.
I'll revise this and remove it from [DRAFT] status when other platforms build properly again. It was not appropriate to change the signature of reset_to_bootloader for just one platform.
first pwm audio (hard coded sine wave, or should have been) on nrf52840
looks like my scaling must have been wrong, and it clipped...
or maybe it's playing outside the intended bounds of the sample
Nevertheless, it goes up and down ใฐ
yup, it's less than I'd hoped for this weekend, but it's still real progress. Time to head out to sunday family dinner.
(also I think I spotted that it's a pointer arithmetic problem, so for half the time it's DMA'ing at the wrong addresses)
Hi Everyone! I've been working on this PR to add some lightweight web-server functionality to the ESP32spi library, and I think its getting to a good enough point for review. I would really appreciate any feedback! <@&356864093652516868> .
https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/pull/59/files
Thanks!
This is still a work in progress, but opening it up for early feedback and suggestions.
Adds Server creation methods to esp32spi.py
Instantiates a server on the esp32 on the specified port and a ...
@graceful heart i added the circuitpython librarians team to the reviewers for ya. also, i'm looking, but don't expect much from me. ๐
On first glance it looks awesome, see you added the event handling and serving files ๐
First thing that is noticeable is the mixing of single and double new lines, but I have a bit OCD thing about consistency that doesn't really affect code functionality.
oh yeah, I totally get that ahaha. I think most of the repo is in double quotes, I can make sure and clean that up.
thanks @raven canopy
ohhh, I think I misinterpreted you . @indigo wedge . Do you mean having extra empty lines between pieces of code, like inside a function body? I sometimes will do that to logically separate out pieces of 'grouped' code, but I can clean that up to follow whatever the convention is.
I meant like in adafruit_esp32spi_server.py it seems a bit arbitrary which functions are separated by single new line and which by a double, but it really doesn't matter ๐
This will be awesome to have a AP web server to setup initial wifi credentials, thanks so much for all your work ๐
Thanks, I'm happy to help, it's been a lot of fun ๐ When combined with AP mode, I think it will be really useful for making web apps to control your board that you can load on your mobile phone, wherever you want.
i'm defining an api and am curious about what is the most intuitive way to set padding around a page.
or
app.page_padding(top, bottom) and app.page_padding(top, bottom, left, right)
or
only one of the above options w/ 4 options
did i explain my question clearly?
@marble hornet There's whatever css does, I'd interpret varying numbers of arguments same as css
If nothing else, you can defend it by saying it's the same as css ๐ https://www.w3schools.com/Css/css_margin.asp
I have begun work on this in a branch in my personal repository, but nothing's ready for integration yet.
nrf's pwm module has some limitations:
- 16MHz max count rate (A top value of 256 (255?) gives 62.5kHz)
- Each PWM value can be repeated an integer number of full PWM cycles
- When AudioOut device is constructed, will claim an entire PWM instance, like a variable-frequency PWM does (normally, can support 4 pins)
There are two general approaches to adapting an arbitrary sample ...
@onyx hinge , thank you! i like it alot
<@&356864093652516868> Community meeting is tomorrow at 11am Pacific / 2pm Eastern here in the CircuitPython voice and text channels. Everyone is welcome to join. Notes doc for the meeting is here: https://docs.google.com/document/d/1bG6hLq6jgBDLLFRSbaL0Z8TfaXGL2n4fAD0KdO27kPY/edit?usp=sharing
Right, it should cause an error if a board directory is added but not built.
@onyx hinge any way I could help you with the pwm audio stuff right now?
Another observation, I was looking for a workaround and I've noted for similar code/data I've found the bug appears if I use the range 0-32768 on DAC but with same data rescaled to 0-25000 the sync bug goes away.
Where should product hardware assembly bug reports go?
probably the forum?
@fierce rapids That's good, or as feedback on the guide. But more people see it in the forums, and you can see feedback about your feedback.
Did a quick check of the travis.yml and I think the check needs to be added on the tools/build_release_files.py script, is it?
I just want to make sure I'm on the right track.
I'm not sure where it would be done.
Thanks for the merge, @idle owl! ๐
@sly falcon Thanks for slogging through that!
Haha....my pleasure! I did find a few things I'd like to tighten up in the next week or two...but work is super busy right now, so I'll be missing today's meeting again
Lurking!!
@round lintel Thanks for letting us know!
just lurking
also lurking!
Lurking here
CircuitPython takes flight - Using CircuitPython on High Altitude Balloons - Why choose CircuitPython? Matt writes -
"We had been programming it in C up till this launch, but with myself graduating next semester along with the Computer Engineer on our team it we needed to find a way to allow for ease of maintenance. When I found you guys had libs for the radio and GPS we decided to try that out. The radio portion worked fantastic."
ALL ABOARD' CircuitPython.org updates (https://circuitpython.org/downloads) - datum! We'll have a guide out this week on adding new boards. By the numbers: CircuitPython has over 66+ boards supported, adding more each week & has 16+ SBC Linux boards supported, adding more each day, & over 164+ Libraries, adding more every week!
We are testing the Circuit Playground Express Bluefruit! Will have beta units for community members! https://youtu.be/VtJJ8msPKLY
Beta testing the Adafruit Circuit Playground Express Bluefruit at Washington Square Park, NYC July 2019. #WashingtonSquarePark #Bluetooth #NYC Visit the Adaf...
8/8/2019 is CircuitPython day! If you need to get in touch with us for planning your event and more, email: circuitpythonday@adafruit.com
13,078 thanks! Together as a community, we reached over 13,000+ humans thank you!
https://blog.adafruit.com/2019/07/14/13000-thank-yous-celebrating-13000-members-in-the-adafruit-discord-community-adafruit-discordapp/
Lurking/listening while landscaping today. I'm finding dirt underneath the sod. And there's lots of it!
Thank you for your hard work Deshipu at EuroPython!
could you give us a link to the two podcasts you were on?
@tulip sleet did you see my comment on the Bundle PR for skipping bundling beta releases?
@raven canopy - not yet; I may have deleted the email by accident. will go look
@tulip sleet Can you mute?
oops
LET THE KODEZ BE FREEEE
Have a great week all -- have to run ๐
back to work for me... :eeyore:
@slender iron I opened an issue yesterday on adafruit_si5351.py and ladyada asked me to submit pull request with fix. I have new branch with fixes, but am getting authentication failure. How do I get authenticated to publish new branch for pull-request?
OK
@tulip sleet in mpconfigboard.mk, there's CHIP_VARIANT and CHIP_FAMILY. Ignoring anything but SAMD for now, what is CHIP_FAMILY? Is it samd## for all the SAMD chips?
@idle owl we only support samd21 and samd51, so yes CHIP_FAMILY is one of those two. Then the CHIP_VARIANT is the specific chip (which will have varying pins, and also sometimes varying features (like no I2S on the small '51 chips)