#circuitpython-dev
1 messages Β· Page 106 of 1
The busio in the bundle?
where did you get the driver @drowsy geyser
GitHub....
I just created an i2c object on my device, and hit "i2c.", and then tab. The lock function shows up attached to the i2c device
Ah, cool, @floral dagger !
yeah, you can do it manually but most drivers use I2CBusDevice and context managers to handle locking
I was just trying to track down where to look for it
sorry, @slender iron I wasn't trying to talk over you. I tend to look down when I type.
no worries π
@formal plover Being cool with Kattni is pretty much of the epitome of electronics.
Haha so true @idle owl
I wish I were cool with Kattni.... π
@drowsy geyser You're rockin' it.
`>>> while not i2c.try_lock():
... pass
...
`
Thanks, @formal plover !
You're welcome @drowsy geyser! https://learn.adafruit.com/circuitpython-basics-i2c-and-spi/i2c-devices
That's where I stole it from. Lol
Ah, another gentle "RTFM". π I swear, y'all have the most polite "go do yer homework" messages of anyone I've ever worked with!
Bwhaha! Sorry @drowsy geyser
Nah, that's ok!
I know so little, I spend a lot of time RTFM. Haha, so only reason why I'm good at finding things.
@formal plover I'm familiar with that!
@slender iron Let me know if you want to try to test audio early. I'm around.
kk, we're gonna head down to the meeting room in ten minutes and then will
Oh! Almost forgot about the meeting and left for lunch. Thanks for the reminder!
ok, we're in the channel @idle owl
That is correct apparently
I'm in, I can hear @tulip sleet and @idle owl fine, but there's a lot of background noise.
Shipping is a Good Thing!
hey all. just listening in.
Hi @tidal kiln
@timber lion and @slender iron Maybe monitor the LiPo 3.7v input and detect when a clean shutdown is needed?
Ack! Quite a hack!
I'll go order the RGBW ring now....
nope
RGB with RGBW
Ok, thanks!
Thanks all!
Thank you!
@idle owl here's the mega demo for circuit playground express.. still a couple things I'm tweaking so i kinda consider it beta right now and will put on github soon after tweaking a few small things. check the readme inside it, i link to a video I made of the older arduino version that shows the usage: https://www.dropbox.com/s/8kpev2269cfnnoc/CircuitPlayground_CircuitPython_Mega_Demo.zip?dl=0
each demo is a class inside mega.py
and the VUMeter class is where I have start tone and stop tone
@timber lion Thank you! I'll check it out now
@drowsy geyser Adding the bpp=4 to the Trinket demo code causes it to not light up at all. Adding bpp=4 to my own quick test code, and it works.
yeah you probably have a RGBW strip or circle then
and on trinket it's a dotstar I believe, so only RGB
@timber lion It definitely is RGBW. I knew that and it made sense once you nentioned it, but it didn't occur to me before that π
oh no worries, yep i've made that mistake a lot π
I got the demo working! Ended up doing a full flash erase and reinstall, and I needed to copy one library on, but now it works.
<@&356864093652516868> Here is the video of the CircuitPython Weekly today: https://youtu.be/XldFAVRiidY
Join here for the chat all week: http://adafru.it/discord The weekly happens normally at 2pm ET/11am PT on Mondays. Check the #circuitpython channel for noti...
aw, I missed it (but I knew I did)
there's a working group that gets to rename all our conference rooms here and I wanted to be dang sure I was on it π
@opal elk posted the video so you can listen if you like
Hi @timber lion , I tested your mega demo. You may have forgot to mention that there is an "on/off" switch and nothing will take place if it is on the "other" position.
@half sedge He still has a lot he plans to do - I don't think he intended to release it yet, that was something he did quickly so I had the code to work with it. That's a really good note though. Thanks!
You did mention around 13:00, but it should be in the readme or very early... or one customer could believe it is broken. π
Thanks @slender iron!!!
@slender iron The recording turned out really well even with the background noise. Nicely done!
SAMD51 has a peripheral for it.
Hi, is there a table somewhere that compare Circuit Python board. Something that tell the number of pin, type of pin (breadboard friendly/sew-me), build in hardware, soldered power option, unsoldered power option, Express (or not), storage size, ...
I have a few of those board, but there seems to be missing a "buyer guide" that would help picking the right one.
@half sedge There are a few introductory guides that have some of this information, but I'm working on creating a master table to help people select the correct boards.
Nice that you are working on that... so I don't have to do it. π
Here are some "criteria" I was looking for: Express/Not Express /// Breadboard/Croco /// number of pin (maybe there is a list of pin on the M0 and knowing wich one are exposed is interesting) /// powering option is maybe important such as is there a jst connector, or can you solder one /// storage (but it seems to be the same info as express or not /// UF2 or not is very important to know if it is a legacy board or a new board
Time to sleep in my timezone, it is now tomorrow. See you and goodby/night.
Good night!
Closing this for now; let us know if you still need this.
Closing this for now, but happy to add it when you need it.
Just caught up on the weekly. As soon as I get home from maker fair I'll get the project setup on my laptop and try to look at some of the stuff that was mentioned in the weekly. What would you guys recommend looking at first?
Good question @sand bloom ! Do any of the beginner friendly tasks jump out at you?
@sand bloom Hi! Exactly what @slender iron said! I was going to suggest checking the issues listed on Github and pick something that interests you.
@slender iron now with Azure ML Workbench make use circuitpython more as @timber lion made the a video using Circuitpython board with jupyter notebook
@slender iron @idle owl I'm thinking a driver for the TCS34725 RGB Sensor
@sand bloom that would be awesome! just check the bundle for any driver first
@sand bloom Nice!
@slender iron will do!
Thanks for getting involved @sand bloom! 
@formal plover I'm super excited!
@sand bloom Yay! I'm excited for you!
What boards do you have that support CircuitPython?
@formal plover I have a Gemma and a trinket
@sand bloom Nice! Two small form factor boards, double the fun.
The Trinket and the Gemma are going to be super popular.
@sand bloom That's great!
@formal plover I agree! You can stick those things anywhere and sometimes you don't need all of those I/Os
@idle owl should I get anything else?
@sand bloom It sounds like you're already off to a great start. Those two boards have tons of options. And you've got that sensor you want to do the driver for. I find that if I have a place to start, it leads to me knowing what other things I want to get. I had no idea when I first started. π
@idle owl Yay! I still need to order the sensor but it looked interesting to me when I saw it.
@sand bloom Oh! Right, ok. Do you have a breadboard, or alligator clips?
See this is what I mean, the more we talk it out, the more I think of.
O K PUTTY is officially making me crazy. I have a very simple terminal program called TexasDisplay. It works with REPL nicely. I have flashed 3 new NodeMCU esp8266 with micropython and they all behave the same. I get the boot blurb and >>> but the win7 and win 10 putty term just locks up.!!!
@idle owl Yup! I've got those sorts of things. I guess I should order a neopixel or some sort of rgb led and the sensor.
@sand bloom Excellent! You're definitely off to a great start.
@idle owl Yay! Thanks for the encouraging words!
@sand bloom You're welcome! Make sure to keep us updated. And we're always here for questions. I'm really excited for you!
@sand bloom I just realized you made those Wi-Fi Deauthing Sandals
That's awesome! Such a cool project. And uses my favorite.. The ESP8266.
@idle owl Will do
@formal plover Haha yeah I did make those! I too love the esp8266. It's a really neat board
@hollow tartan does ampy work?
@floral dagger don't know, have not tried it yet. ESPlorer is a mess too, as far as I know.
@sand bloom Hi. I think the best thing I got for prototyping is a pack of screw in terminal blocks that fit on th breadboard. It makes dealing with things like motors that have two loose leads so much easier
@haughty harness are you flashing nodemcu or circuit python?
lol I just atted the wrong person
@hollow tartan is flashing micropython onto NodeMCU ESP8266. Orig post corrected for failure to spec.
Ah, ok. How do you have the ESP powered?
Powered from Desktop PC USB in both terminal cases: 1. TexasDisplay, 2. PuTTY
@hollow tartan What you are getting sounds like an issue I was having. For some reason the board would flash, but the filesystem was weird on it. Sometimes it would start up, but no boot. Using a separate power source fixed that for me
by not boot, I mean run or install boot.py...sometimes it would, but it would freeze.
@floral dagger what exactly is your other power source?
Right now I'm using a small breadboard power supply. I also used a 4AA battery pack for a bit.
but my board is 5v tolerant on the power pin
A powered USB hub may work too
sometimes that power flux is a lack of Capacitance on the board itself.
or power bun lol
lol @formal plover
I think, for my case, the USB port just didn't have enough gumption to power the board well enough. It may be worth a try if you have something you could use
that may not be your problem though. I dunno. It just sounds familiar
yes, I have some BB 5V/3.3V supplies.
@hollow tartan Did you do an erase first?
@formal plover Yes, no slouching on the erase.
import os
os.listdir()
os.remove("file_name")
@hollow tartan What are you using to flash?
I am using esptool at the Windows Admin command prompt.
Not this one @hollow tartan? https://github.com/espressif/esptool/
N'est-ce pas?
you got me, I still don't know why it is funny. Power Bun. ?
@hollow tartan, @floral dagger were troubleshooting the other day and he said power bun instead of power hub. Sorry, somewhat an inside joke
ah ha.!
lol yeah, was on my phone and autocorrect got me
Hey @hollow tartan Did you get everything sorted out?
have loaded ampy. it works.
@hollow tartan fantastic!
Ahhh, I remember that! π
@slender iron I know at some point I saw a datasheet type thing for the CPX, but I can't find it now. Is it still posted somewhere? I'm trying to figure out what libraries I need to request - I think it might just be the lisd3h, but I don't know whether there's specific model numbers for any of the other chips and sensors.
@idle owl you should be able to base it on your imports instead
@slender iron Ok, good to know. That's what I had started to do, but I was trying to think ahead to the sensors I haven't written code for yet.
I can't think of any separate ICs.
doing it by import will make more sense from the inclusion standpoint anyway
Excellent, thank you
np π
Quick question. If I have a script/library that I need to import at startup time, can I do that in the boot py file?
Trivia Minute How does the LED connected to this pin behave?
pin=machine.Pin(10,machine.Pin.OUT,machine.Pin.OPEN_DRAIN)
pin.on()
pin.off()
@floral dagger I'm not sure - I always use code.py.
QQ: Is anyone developing the drivers for either the Ultimate GPS Featherwing or the BMP280? I need both for the rocket flight controller, so if nobody is working on it I'll start hacking up some drivers. π
Who would up vote an oversized FeatherWing with bigger 2 of the led 8x8 panels?
Tera Term has won the competition. PuTTy Lost.
@hollow tartan its micropython code that turns a pin on then off
@floral dagger yes, only esp
ok, thanks @slender iron
np
Anybody have an ESP8266 that would want to test the demo code I just uploaded for websockets/webrepl interaction?
@floral dagger That's really neat! @formal plover has the ESP board, but he can't do any testing until after work.
@floral dagger I have one, but it isn't flashed for micropython yet. Let me try flashing it now and then I can see if it works.
Oh cool @sand bloom let me know how it works! I am using circuit python on my board. I'm not sure how much of a difference that will make. I don't think I used any CP specific calls
thanks @idle owl
Whee memory allocation error!
I can test it tomorrow probably @floral dagger. I last maker Wednesday until my wife goes on maternity leave. Needless to say I'll be working on stuff from the second I walk in the door until bedtime
To balance odors π
@slender iron You are correct. However, the Trivia Quiz has been slightly modified. Do you want to change your answer?
Spending tonight playing around in CP with the new dotstar featherwing.
Sounds good @formal plover There's really not a whole lot in it at the moment. It's just activating a couple of pins, and allows you to switch between them. I'm probably going to fool with it some more. I'd like to expand on it some to make it more robust, but not sure which direction togo yet.
I can probably use the simple http webserver learn guide to display the status of the pins as they change as well @floral dagger
What do you mean? @formal plover
Section 5.3 at the bottom of the page:
http://circuitpython.readthedocs.io/en/latest/docs/esp8266/tutorial/network_tcp.html @floral dagger
ooooohhh, That's really cool
@formal plover that most likely would work. If you have the serial repl open, it shows all the input and output going back and forth as well
Ah OK, that's cool too!
As many times as I've seen that, and I never even really paid a whole lot of attention to it
Yeah, I mean I did that and the Asciimation one above it when I tested CircuitPython for the first time. Only reason why it's in my head.
Dotstar featherwing CP result of this eveningβs work. Next is to complete the font.
@umbral dagger Awesome!
@umbral dagger That's great!
That's really cool @umbral dagger . I love seeing all the stuff that people ae doing.
Do you have a larger project in mind for that?
Git repository hosted by Bitbucket.
@floral dagger No, nothing bigger in mind. Just having some fun. I've been digging into the feather ecosystem, and this board looked cool so I got one. Then found no real support or docs. So I started exploring π
awesome!
@umbral dagger 8x8 led arrays come in two different configurations, row common cathode and row common anode. My question is does the feather wing only work with one of the types or is the software able to accomodate both on the 16k33 chip?
@hollow tartan Not a clue π
@hollow tartan Well.. looking at the wing front on, with the reset button at the left, LED 0 is at the top right. It scans left fromt there. LED 12 is on the second roe, far right. It carries on from there, for all 6 rows. LED 71 is at the bottom left.
That's using the adafruit_dotstar module.
@hollow tartan Thinking about this. This wing is dotstars that have a clock and data signal daisy chained through all 72 elements (conceptually similar to neopixels). I.e. they aren't a matrix; they're a linear chain.
@hollow tartan Sorry, it's been a kind of rough day... it took a while to grok exactly what you were asking.
@slender iron any udpates on porting the micro:bit speech to Circuitpython ? thx
@umbral dagger It's cool. I did not know it was the neopixels type device.π
@cunning seal nope, its not high on our list. need it for something?
@slender iron Scott, is anyone working on an Ultimate GPS driver for CircuitPython? Or a BMP280 driver? I need both for the rocket project, so if nobody has it yet, I'll take both. π
@drowsy geyser not that I can think of
@slender iron Cool! Tag I'm it. π
Good idea!
@slender iron That's a great idea!
There is no current support for the Ultimate GPS boards (breakouts or Featherwings) in CircuitPython. We need to develop a buffered I/O library and command interface for sending and receiving NMEA data.
Apparently I don't have perms to create a new tag. If you create a "driver" tag, @slender iron, I'll edit the issue and add it. Thanks for the suggestion to create an issue! That's the right way to do it.
LOL, scratch that. I was in the wrong place in GitHub. Driver label created and added.
We don't currently have a BMP280 driver for CircuitPython. Fortunately, we can use the register and busio libraries to simplify writing this one.
looks good @drowsy geyser ! thanks for setting it up
@idle owl finally getting to your email now
No worries. And, in all honesty, I've already started the code. π
@slender iron We figured out the NeoPixel issue, so you can leave that one out.
@slender iron Well you were there for that anyway. I verified the issue.
yup yup, will look at the cplay docs
@slender iron I think it's probably some missing space or blank line in the formatting of the new API we added. That's my guess anyway.
I looked at the formatting in my API again, and it's not exactly the same as the others.
That's why I suspected that first.
have you run sphinx locally at all?
Nope, I didn't even know you could
I'm trying to remember if I wrote up how to do it
I don't think I did
@opal elk @meager fog is reviewing your guide now
@idle owl you free for a bit? I can help you get setup with sphinx
@slender iron My friend who just bought the CPX just got here to get started learning how to use it π
yayyyy!
@opal elk https://blog.adafruit.com/2017/09/27/new-guide-cpu-temperature-logging-with-circuitpython/
@meager fog polished it up. I just blogged it up
I mean I knew my image was terrible. I didn't know if there was a place to get stock ones
You can always grab them from the store
3ad01dd Add Ananlog Pin aliases to trinket_m0 pins.c - jerryneedell
@vague monolith I believe either will work. I have been using main myself.
As have I, I also found an easy way to corrupt the main.py file blanking it out. Not sure yet if it's a filesystem bug or circuitpython related.
@vague monolith It's not hard to corrupt the filesystem, especially on Windows. After you write a file, do an "Eject" or "Safe Removal". Otherwise it can take up to 90 seconds for all the changes to be written to CIRCUITPY.
Sorry. Other way around
@vague monolith Linux also delays writes to the filesystem, though not for as long as Windows. On Linux, just type sync after you edit or copy a file, and it will write out the rest of the changes. In general, don't press the reset button or unplug/plug if you can help it.
@tulip sleet , I'm aware of sync just didn't have time to pin down the source of the issue as it only happened twice. I'll mess with it more, if I notice it again.
It's a nuisance. We are thinking of adding helpers to some editors to make sure the filesystem is sync'd after a write to CIRCUITPY.
It is hard or impossible from the CircuitPython side to know when the writes are all done.
@tulip sleet , I don't think it's a sync issue since the unit is being reset automagically by whatever is monitoring the file system. It occurs when i'm monitoring the serial connection(screen), editing files and letting it auto reboot. It hangs randomly, and that's when the issue occurs. Like I say I didn't have time to repeat it. I'll see if I get more time if I can trace it down.
@vague monolith The problem is that some of the data is written, but not all of it. In general the file data is written promptly, but the metadata that says which blocks in the filesystem are in use is written 10-20 seconds later. So CPy sees a change to a file, waits 500mscs, and then auto-reloads. But if the metadata is delayed, then it will read a broken file. If you wait a few tens of seconds, you will see it auto-reload again. For instance, if a file is one block long, and then becomes two blocks long, the new file data will be there, but the filesystem will think it's only one block long until the later metadata is written.
Makes sense and sounds like what I was experiencing with the multiple blocks.
My friend just left, she's so excited! I'm so proud of her! She picked up on MakeCode quick. She's going to come over again tomorrow or the next day to keep learning, and she can't wait to get home and play with it some more tonight. She loves her CPX. So excited for her!
@umbral dagger Looks great!
@idle owl Thanks.
Ooo I like that font @umbral dagger! Great job!
fyi example code from learn guides is starting to get checked into a github repo: https://github.com/adafruit/Adafruit_Learning_System_Guides
@slender iron Nice!
@formal plover Iβm happy with most of it (15 minutes effort... took longer to type in the data), but a few are βughβ. M, W, N are the worst IMO.
@umbral dagger Gotcha. Well at least the worst letters aren't all vowels. haha
@tulip sleet @timber lion I'm gonna release a new bundle
actaully, maybe I should wait for the tuple fix
@slender iron Maybe we should fix the neopixel library now and include it instead of waiting for Jerry?
haha, thats the other option
Go ahead and fix it. I don't think he'll mind!
We can approve the pull request and then fix it up.
actually, I'll do the time sleep stuff instead
@slender iron I can do neopixel if you want to make a release
nah, I'll wait
okee
Thank you for this PR! I'm not going to merge it however because we don't want to use context managers in our examples. Instead, we need to fix the crash itself. Its on @dhalbert's TODO list.
fixing the audioio crash would be good too
yeah, I know
@slender iron That stuff is high priority. I fell asleep at my desk after writing that last email, which is highly unusual, so I may not get to it today, but it's first on the agenda for tomorrow.
kk. sleep is top priority!
There is a stable branch in adafruit/circuitpython. Did you make that? We made a 2.x, but maybe it should be stable instead? I'm thinking about the .travis.yml file in the libraries which uses the stable branch to build mpy-cross. I'm not thinking so clearly.
Somebody send @tulip sleet a nap
we can change stable to 2.x
yeah, @tulip sleet take a break
we had a busy weekend
I took a nap but was interrupted
disable wdt?
2.x will change to 3.x later, so I wanted a "stable" or "release" branch or tag for the .travis.yml checkout
@tidal kiln lol - the housecleaner showed up
@tulip sleet My cat is usually the one who interrupts my naps
@formal plover It'll be a tiny human soon!
@formal plover what? there is the clowns what scare people again
@formal plover π πΆ
you can type into the emoticons popup over there and it will search! β‘β¬
Haha yeah, it's pretty slick
Need to include adafruit_thermistor, adafruit_lisd3h and adafruit_bus_device in the Circuit Playground Express frozen modules. The LIS3DH library starts to cause memory allocation issues when imported, and @dhalbert suggested integrating it to resolve this issue.
So, ah, is the micropython uart support not ported yet? If not, it will make the GPS driver more problematic. π
@slender iron Is there a reasonable way to make an mpy file on Mac? The only writeup I've seen involved some complicated looking things on Windows.
@drowsy geyser there is UART support
@idle owl you'll need to be able to build circuitpython for it
Oi. Ok π
what do you need it for?
@slender iron Me, or @idle owl ?
@idle owl
@drowsy geyser RTFM. lolololol
Trying to adapt Tony D's mega demo code. That was one option, and now I'm not heading down that path.
@drowsy geyser in busio
Errr?
Okie dokie. Was RTFSing and didn't see it obviously.
@formal plover Thank you for your support. π
@drowsy geyser hahah what else are friends for?
Thanks, @slender iron. Off to RTFM now. π
π
@slender iron I might take a stab at seeing how difficult it is to this working: https://www.adafruit.com/product/881
Since the last I2C project was an epic fail
I added "image" support:
"..XXXXXXX...",
"....XXXXXXX.",
".....XXXXXXX",
"....XXXXXXX.",
"..XXXXXXX..."]
display_image(starfleet, (0x20, 0x20, 0x00))```
@formal plover https://github.com/adafruit/Adafruit_CircuitPython_HT16K33
@slender iron I'll see myself out
@drowsy geyser will not let me live this one down
driver doc link is out of date: https://micropython-ht16k33.readthedocs.io/en/latest/
Hahahahaha, sure I will. π
@slender iron Just trying to find something to work on that's not like crazy difficult.
I was digging through my order history because I have so many parts I don't know which Feather Wings I have haha. Then I saw that and ADD kicked in.
@formal plover I literally have a gallon ZipLoc bag full of Feathers and Wings....
is it wise to be doing USB hacking right before show and tell?
my usb webcam could be a casualty
control your webcam using circuitpython
@idle owl Scott uses Mac natively as a build environment; he installs what he needs using brew. I'm not familiar with that. You could also make an Ubuntu VM with VirtualBox, and it's not hard to get a build environment going there. Or you follow Tony's guide for vagrant: https://learn.adafruit.com/micropython-for-samd21/build-firmware. @slender iron could also just drop you a pre-built Mac mpy-cross. Maybe we should put Linux and Mac versions of mpy-cross in the release ...
@tulip sleet I need to take a different route with what I'm doing anyway for this particular problem. However, this was something I was wondering about previously as well.
@tulip sleet That's the guide I saw about it too. It was more than I wanted to do for the issue I was having at the time.
@tulip sleet homebrew on mac?
@idle owl I started with vagrant on Windows but ran into a bunch of issues. I run Ubuntu VM's and native machines all the time, so that was easier to get going. Right now I develop on a native Ubuntu machine (the machine is dual-boot with Windows and has two SSD's, one for each). And I have an assortment of old and new laptops and other machines with Ubuntu and Windows. Just ping me sometime if/when you're ready to try something.
@idle owl it was on AML Workbench what needed to do before using it was homebrew
@sick creek I only found out about it in the last few months.
in Windows you need just download and install using it from msi but in mac need to download 3 files i think and homebrew before install it
before using machine learning as write python and control your circuitpython board
Yeah I installed it once I started using Python for the first time. It was for a RaspberryPi camera project I started.
so multistep process
I think it was, but it wasn't difficult. Just a few things and then I had brew.
I don't remember specifically.
it was this https://docs.microsoft.com/en-us/azure/machine-learning/preview/quickstart-installation as tonyd made that jupyter notebook for circuitpython so with that tool you could use it nicely using only python and circuitpython
"..G.....W...",
"..G..W....W.",
".GGG...W....",
"GGGGG.......",
"WWWWWWWWWWWW"]
xmas_colours = {'W': (0x20, 0x20, 0x20),
'G': (0x00, 0x20, 0x00),
'Y': (0x20, 0x20, 0x00)}
display_coloured_image(xmas, xmas_colours)```
@umbral dagger cool! (and festive!)
Repo for my dotstar featherwing hacking: https://bitbucket.org/dastels/dotstar-featherwing
Git repository hosted by Bitbucket.
Ok. One more for tonight.
'W': (0xFF, 0xFF, 0xFF),
'G': (0x00, 0x20, 0x00),
'y': (0x20, 0x20, 0x00),
'Y': (0xFF, 0xFF, 0x00)}
xmas_animation = [["..y.w......w",
"..G.....w...",
"..G..w....w.",
".GGG...w....",
"GGGGG.......",
"wwwwwwwwwwww"],
["..y.........",
"..G.W......w",
"..G.....w...",
".GGG.w....W.",
"GGGGG..w....",
"wwwwwwwwwwww"],
["..Y....W....",
"..G.........",
"..G.w......w",
".GGG....w...",
"GGGGGw....W.",
"wwwwwwwwwwww"],
["..y..w....w.",
"..G....W....",
"..G.........",
".GGGW......w",
"GGGGG...w...",
"wwwwwwwwwwww"],
["..Y.....w...",
"..G..w....W.",
"..G....w....",
".GGG........",
"GGGGG......W",
"wwwwwwwwwwww"]]
display_animation(xmas_animation, xmas_colours, 0.05)```
I should. The repo readme has docs.
perfect! email me a link and I'll look tomorrow
It's public: https://bitbucket.org/dastels/dotstar-featherwing
Git repository hosted by Bitbucket.
@slender iron Just rough docs for now. I'll give some thought to making it better and/or more complete.
sounds good!
@slender iron Are there author guidelines anywhere?
@slender iron Sounds good.
thanks @umbral dagger
We still won't be able to run tests but we will be reset into the
bootloader to test other stuff.
@slender iron I'm gonna rename branch 2.x to stable, if that's OK by you. When master 3.0.0 is done, we'll advance stable to that. Etc.
wouldn't we have to keep both up-to-date by merges, commits, etc, or can I add a name to a branch?
yeah, thats a good point
it's easy to rename: https://gist.github.com/niqdev/a327c3d8d24ddbd7584c
doesn't seem like you can give a branch a second name. I was worried that stable was a micropython-ism, but it looks like you created that name
I was provoked to do this by the .travis.yml files in the libraries that want the latest released version, and by the stable branch in the readthedocs. But I like 2.x in readthedocs better, kind of like how the CPython docs have pathnames with the version. Maybe stable or whatever could be a moving-target tag name. I can study up on this some more and see what other people do.
or we add logic to parse all of the tags for the #.x pattern
Could do that, but having a fixed name for latest-release makes it easy. I'll read up and report back on other people's use cases. It's not urgent to change now.
ok thanks!
Oh, good heavens, it's a pain to write a NMEA parser from scratch!
(Context: CircuitPython Ulitmate GPS driver.)
@drowsy geyser can you copy/steal from an arduino implementation?
it seems like it's mostly a regex parser, though maybe import re doesn't work
@drowsy geyser what @ Sigafoos said
https://github.com/adafruit/Adafruit_GPS/blob/master/Adafruit_GPS.cpp#L33
but also i'd think python would let you make it more pythony
Ok, so I mentioned this the other day but now I have some new info, so maybe someone can help? I have a Feather M0 Express and I was doing CircuitPython and ran into some limitations (no NeopixelDMA) so decided to try Arduino IDE. I was working on my program and had it semi-working when I saw the drive unmount pop-up and Arduino IDE lost track of the port (as did OS X, El Capitan). No combination of board resets and mac restarts is getting the board recognized. I can boot it into FEATHERBOOT mode and drop a new uf2 file on it but if I eject it immediately pops back up as FEATHERBOOT. I've tried it on my other other laptop which I just upgraded with High Sierra as well as a Linux box with CentOS. Same deal. So, how can I get my board back in a useable state? The USB circuitry is working or it wouldn't show up as FEATHERBOOT but I can't get it to show up as a flash drive.
@marble talon Did you try the flash eraser uf2 bfore loading a new uf2?
@idle owl No, tell me about that?
Download the right one from here:
Doubletap to get into FEATHERBOOT. Drop that on. It should do some blue lights, and then green I think, and then you doubletap again to get it back to FEATHERBOOT, and then load a new uf2 firmware or code file onto it
It will erase everything though.
Strangely, it's been going right into FEATHERBOOT without the double tap.
I seem to remember thinking you had data on there you wanted to keep.
Yeah, I didn't want to lose my code but don't have a choice. That's the problem with editing in place!
It's true... I manage to remember to keep backing it up 90% of the time, and then it's always when I get in the zone on the hardest of the code that I forget and lose the most difficult part I wrote. I totally understand.
I should have made a copy when I switched to Arduino anyway. I'm not entirely certain how the Express knows which code to run?
It runs code.py, code.txt, main.py, and main.txt by default on booting up.
So you edit those files locally (but be sure to backup! .. oi.) and it alters the code live.
Or rather runs the altered code on save, etc.
If you're in the serial REPL, you'll see it reload every time you save, and then run the new code immediately.
Wait. No that's what CircuitPython does. I'm not sure how Arduino knows....
I misread what you were asking, heh.
I need to run for a half hour or so. I'll be back after that.
Yeah, I was wondering how it picked between Arduino code and CircuitPython code.
Doesn't look like erase is working--neopixel never turns blue...
@idle owl Hey, so it's not showing up as a flash drive but my port is back, so I'm back in business with Arduino IDE... Β―(γ)/Β―
@marble talon arduino code replaces the circuitpython core. the file system on express boards should be preserved because its on separate flash
you won't get a CIRCUITPY drive if you load an arduino sketch on it because it replaces circuitpython which provides the CIRCUITPY drive
@opal elk and @tidal kiln Starting from scratch allows me to use a more Pythonic approach than would scavenging C++ code! For example, I can use a dict to map GP codes (e.g., GPGAA) in the NMEA sentences to funcitons, then execute the functions dynamically.
yep
@opal elk The identifiers do, yes. They are GP followed by a three letter identifier.
okay, that makes it much easier
Yes it does! π
though I guess for i in range(len(sentence)): if not sentence[i].isnumeric() return i isn't too hard either
I'm mostly a 2.7 person so using range() over xrange() is still a little weird
@marble talon I'm glad it helped at least a bit!
@opal elk Most of my annoyance is in unpacking non-standard data encoding. For example, 4708.223 is 47 degrees, 08.223 minutes. You have to write a method like nmea2dd(encodedData) that does the 47 + (08.233/60.0) to convert to decimal degrees. Not insurmountable, of course, but lots of detail to account for before you can even get a test framework in place.
ah, yeah
@slender iron Good to know. So a reflash should have gotten me back to CircuitPython, though, correct?
@marble talon The flash eraser clears it. Doubletap to FEATHERBOOT after the flash eraser, load the CircuitPython uf2, and then you'd have CP.
In theory π
Yeah, but since the neopixel never went blue and there was no pause I don't think the flash worked. If I ever try to take the board back to CircuitPython I might be here again asking similar questions! But I'm unblocked for now for this project and still have another Express board to play with later. Onward and upward!
Ah, I see. Ok. Good to know you're moving then! We'll be here for questions π
Much appreciated!
@marble talon yeah, after arduino you need to reflash circuitpython
That's what I tried, but I don't think it worked.
@marble talon does double tapping to get to FEATHERBOOT work?
weird @marble talon
Hello, everyone. So the buzz is that esp8266 is supposed to show up in windows as a flash drive with some files like code.py, code.txt, main.py, and main.txt . I do not see it on my Windows 7 pro. I have seen the files list by using REPL's >>>os.listdir(). Any clairity offered will be happily accepted.
Goin' to the Maker Space in Marietta, GA this weekend. HooRay!
Hoping to get some Laser Cut Beam Chariot Critter parts and maybe my first 3D print ever. Target: RPi Zero cases and esp8266 cases.
@tidal kiln It Actually goes directly into FEATHERBOOT when I plug in the USB. When I eject it in Finder it immediately reappears as FEATHERBOOT
@hollow tartan I don't think the ESP8266 can do that. At least, I haven't seen it happen yet on mine
@hollow tartan how do you connect to the REPL?
Gah I figured out my code!!
@floral dagger even with mircoPython or CircuitPython loaded?
@hollow tartan not that I have found, no
using teraTerm.
Hooray! @idle owl
Three days I've been trying to adapt .. I think the terminology is adapt functional code, making it more procedural and less object oriented.
@hollow tartan @floral dagger is correct. only M0s can do the USB drive. the esp8266 doesn't have built in USB support
@floral dagger Thank you π
@slender iron I read about some git workflows, and found a lot of dogma. "git flow", "github flow", "oneflow", "threeflow", etc. You could Google all that if you want, but it may not be worth it. The main q is how to treat master: whether as the latest stable release, a dev branch that's always deployable, etc. Most not too relevant to our situation, though it was somewhat interesting to read. It's just a matter of style and what's better for continous integration and various release frequencies.
We can just keep our current situation: 2.x has fixes and enhancements to the 2.x line. master is dev for 3.0. stable should be the latest stable release: right now 2.0.0. It should always be able to be fast-forward-merged from 2.x to the release. I'll fix up stable to be that, or maybe you already have (I haven't checked).
sounds good @tulip sleet
@hollow tartan The "drive" Circuit Python trick does not work legacy board. You need an UF2 boot I guess. So SAMD is not sufficient, but you don't need Express a Trinked M0 and Gemma M0 also expose that drive. The nice part is that you only need an editor on the host. Pushing file on an ESP8266 is/was still difficult.
@half sedge thats true for the boot drive. legacy M0 boards like the adalogger do show a CIRCUITPY drive
oh, right!
that doesn't happen for the feather
I can't believe I didn't think of that
you have to use ampy or some other way to upload code
sorry π¦
So M0 and from Adafruit is the only requirement?
@half sedge if you manage to load CircuitPython on a non-Adafruit M0 you'll also get the drive
@slender iron Let's say it does not exist yet... the attack of the clone is to be expected sooner or later.
So UF2 mean easy to flash a new version of Circuit Python.
How can we know if someone is already working on porting some I2C device to Circuit Python... to avoid double work?
I have this baby https://www.adafruit.com/product/3595 (in fact a similar more costly available since much longer) and discovered they only provide arduino library. And I wanted to use it in Python...
May I attract your attention to this: https://talk.pokitto.com/t/first-micropython-test/382/8
I believe that for the it is not Micro Python, but Circuit Python, the adafruit spinoff/fork. If you do Xxx Python, I suggest you don't try to display the REPL on the screen. Let it be a serial REPL and try to work out a library to access the screen. You might be limited in memory and anyway, there no keyboard, but only a few game button, so there is no point in trying to have the Pokitto be a standalone development environment. I really love that idea as I play a lot with Micro Python...
@half sedge I would suggest asking here (which you've done), checking the issues list on Github and verifiying that it's not in the current CircuitPython bundle.
@half sedge That chip is on my radar, but I've got a lot lined up before I can get to it.
Somebody try to run MicroPython on a M0 chip device that might be using the same chip as Adafruit CircuitPython stuff.
@half sedge please file an issue on circuitpython with the driver label
Hi folks, I've been out of the loop recently. Can I get an update on HID over USB and HID over BLE? Specifically, I'd like to know if the Trinket m0 or Gemma M0 can use those now if we add a BLE breakout?
@slender iron in the Bundle or in the driver?
Bundle or kernel (or whatever the name)
@half sedge here to start: https://github.com/adafruit/circuitpython/issues
@tough flax only USB HID is working. we haven't started bluetooth work
Ok, thanks Scott
I have an "APDS9960 Proximity, Light, RGB, and Gesture Sensor" and plan to do a minimal support library for Circuit Python (maybe just gesture detection).
This is a place holder to avoid duplicate work if somebody is working on this.
I will update if I make any progress... and if you start working on this, please say it here.
From pull https://github.com/micropython/micropython/pull/3137 if its not pulled upstream.
About HID over USB. I had a lot of fun with a Gemma M0 pressing SPACE and BACKSPACE in loop. In chat room, this make it look like you are typing a long message... However, when trying to play with HID over USB on my MAC, I get a message from OSX that say it does not recognise the keyboad and ask to press on a specific key. Is there a trick to keep the MAC happy and accept a Circuit Python as a keyboard without too much annoyance (this is not Circuit Python specific, it is more a MAC issue).
@slender iron will the NRF52 Feather support CP? I didn't think it had the memory necesssary?
@half sedge I always just close out of that dialog
@tough flax yes but it won't have the USB support
??I thought CP kinda required the USB storage device stuff?
@slender iron When you have time, should we try to get Sphinx setup?
@tough flax its not supported at all now. sit tight
Gotcha
@idle owl @formal plover was working on it yesterday
@slender iron Yeah I remember that. You had mentioned walking me through it yesterday, but my friend showed up. So I wasn't sure if you still wanted to do that.
Friendly reminder (:-) When a controller w/BLE HID & USB HID that is USB Storage programmable exists, I have about a dozen AT projects that will click into place. I'm probably up for purchasing hardware, pizza, and beer to make it happen π
@tough flax I know. We're waiting for a new chip to do it. https://www.nordicsemi.com/eng/Products/nRF52840
Can we do it on two chips w/Trinket M0 & BLE breakout?
I don't know
Ok, thanks. Don't mean to sound impatient, just hate waiting for manufacturers on this kind of stuff π
its not a high priority for us. sorry
@half sedge I asked a Mac user about that, and the person said it the query about the keyboard type only happened the first time they plugged it into a particular port. Does it happen every time? ... Yes, it should identify itself better, though. You can file an issue here, and I'll investigate at some point if there's a fix: https://github.com/adafruit/circuitpython (it's really a CircuitPython issue at base; the library is not the problem)
I had it multiple times... but likely with multiple board. Or I had it once, but I had it with other device of that kind. But yes, it might be that once you skip it, it does not come back.
@tough flax You could probably work up a driver for the https://www.adafruit.com/product/2633. But the adafruit_hid library uses the HID devices supplied by CircuitPython, so if you want the functionality of that library, the low-level stuff would also have to change.
Ok, I have a BLE breakout board (I think its the UART version) - if it's going to be a while I'll write up my first CP library by ripping off their stuff. I only need KBD control, no joystick/mouse (although I'd use Mouse later).
@tough flax I don't think it would be that hard, since the keyboard presses are just AT commands: AT+BLEKEYBOARD or AT+BLEKEYBOARDCODE for lower-level keypress/release.
Right. I'll take a look this weekend
@slender iron I ordered parts for a Rosie East. I may try to boot the RPi from a USB hard drive, or I may try a little Dell box I have that's NUC-sized. I looked into SLC uSD cards, which are supposed to last a lot longer, but they are quite expensive (so-called "industrial" SD cards). I'll let you know when I have something sort of working (or not).
sounds good @tulip sleet !
For reference, *Python ressources that can be usefull
Some very old attempt in Micro Python I made a year ago: https://gist.github.com/dglaude/1ab912dd060f22e54aa9dc083b058957
Some GPL code for plain Python found on Github for a simple version of the chip (9930 vs 9960):
https://github.com/Depaulicious/python-apds9930
+
https://gist.github.com/Depaulicious/08689d6d1e58f7700e4a
Some Python project that failed to use apds9960 because of missing library:
https://www.hackster.io/bast...
@slender iron & @idle owl, I just walked in the door. What's up?
@formal plover We were talking about Sphinx.
And yes I got sphinx running, but I have to uninstall it and reinstall. All the guides available are outdated. All the prompts and setup is different
@slender iron I think we lost our Nitro services. Can't use the custom Adafruit Emojis

Back now, weird
Still gone in DMs
I don't really care that much, just pointing it out.
bigger fish to fry
DMs happen outside the server boundary I think
Must be
@idle owl and @formal plover I can help with sphinx after I eat some lunch
Sounds good @slender iron
@slender iron I will take you up on that.
k, give me 30 min or so
No worries or rush
ok back now
I created a repository for this library: https://github.com/dglaude/adps9960-circuit-python
Lo, @timber lion diagnosed the Arc Reactor problem with a mere description! RGB NeoPixel ring arrived to replace RGBW, and magically everything works!
@idle owl
I was just comparing Circuitpython ustruct with Python 3.5.2 struct and ran the follow tests. In Python 3.5.2, the @lLlL pack format and the lLlL format produce 8-byte integers while <iLIL and >iLiL format produces 4-byte integers. Circuitpython produces 4-byte integer in all cases. I think that the native size of long on my Ubuntu machine must be 8-byte integers therefore this difference should be allowed.
Mike
struct.pack("@lLlL",1,2,3,4)
b'\x01\x00\x00\x00\x00\x00\x00\x00\x0...
@drowsy geyser Excellent! I verified it as well - I can get the neopixel ring to work with code from scratch, but not with the prebuilt demo code that talks to RGB.
How do the docs define what the result should be? Is it platform dependent?
@slender iron on adafruit/circuitpython stable branch, did this:
git push -f
So now stable is set to the 2.0.0 tag (it was at 1.0.0 before). Whenever we make a new release, we can do something similar.
kk
I was thinking we could have a specific tag or branch call "mpy-builder" or something
to specifically be the version we build against
That would be OK. It wouldn't necessarily change that much. Does the stable branch influence the readthedocs stable/ tree? Is it going to rebuild automatically?
Should we have a 1.0.0/ tree as well in rtd?
so we could add 1.x and 2.x to the rtd builds, and give out links to those in preference
ya
The Python 3.6 docu (section 7.1.2.2.) says "When a format string that starts with @ character or no special char, the native size is the used. When using native size, the size of the packed value is platform-dependent.". If the format string starts with '<', '>', '=','!' the number of bytes is specified in a table (i.e. not platform specific).
I can add those; I think I have the right privs. We have to go out in about 20 mins. Will prob do later tonight.
This also updates ASF4 to include flash APIs.
This pull is two separate commits to make it easier to see the patching changes from the ASF4 changes.
@slender iron I can't picture what the start_tone and stop_tone code would look like. In my mind I'm writing it like circuit.play_tone(frequency, input_trigger) with the trigger being a button or touchpad, and the tone plays for the duration of the trigger event. I can't figure out how start_tone and stop_tone play into that format.
@slender iron Can you give me an example of how you're seeing it?
It's so obvious. I was thinking I needed to cram every one of these API options into one line. So I've been trying to work within that this entire time.
π
@slender iron Thank you π
its more like what you did originally
What would be the best way to implement a color chooser? I was going to have a list of colors for neopixels and then when a button is pressed select one of the colors from the list. When the button is pressed again select the next color etc... Would you use itertools.cycle() Or is there some other obvious way I'm missing. I also can't wrap my head on a way to do it without a global variable
@vague monolith you could adapt tony's wheel code to only change when a button is pressed rather than time
@slender iron Wheel code?
@slender iron I do.
@slender iron Isn't it the same as the demo code on Trinket and Gemma? It looks the same to me...
@slender iron Got it, I was just making sure I was understanding the question.
# Color wheel function from neopixel strandtest. This takes in a value
# from 0 to 255 and outputs a smoothly changing rainbow hue. Both 0 and
# 255 values go to red so animations can happen without any noticeable
# break in color.
if pos < 85:
return (int(pos*3), int(255 - (pos*3)), 0)
elif pos < 170:
pos -= 85
return (int(255 - (pos*3)), 0, int(pos*3))
else:
pos -= 170
return (0, int(pos*3), int(255 - pos*3))```
@vague monolith you could have a number you increase when the button is pressed and use the color from the above function
I was asking more about.
colors = ((0,0,10), (0,10,0), (10,0,0))
iter_colors = itertools.cycle(colors)
while True:
if button.value:
np.fill(next(iter_colors)
A way in which it would keep track of the current selected color form the tuple or list and each button press would select the next predefined color... Just curious if there was a better way.
Or if I was doing something wrong doing it this way.
@slender iron so rosie is build with python?
@vague monolith You want to cycle through colors basically?
@formal plover yes
that makes sense. you could also just track an index
@formal plover A set group of colors
That shouldn't be too difficult to scheme up.
I just alway question that I'm donig something the best way after I implement it.
I wouldn't use itertools. I'd just track a count and wrap it using mod (%)
I guess a generator would be more effecient.
Ahh but stop iteration would be raised.
I was thinking as Rosie have that linux rasbi guide so
@sick creek https://github.com/adafruit/rosie-ci
I try to think if the python is good for the test as i dont put linux to my raspi3
ok it should work
@sick creek What?
I am going to show you guys Rosie-CI how happy she is with the Fluent UI
basically I put rocie-ci to nanocontainer what go to raspi3 and not run in linux but run it in windows
Ahh
Doesn't need to be changed, but consider using subprocess.run("some {} command {}".format(...), shell=True) to make the command line easier to change and read.
0bbb7a8 Add support for patching newer ASF4 code. (#292) - tannewt
Ok, @formal plover , I imagine I'll be instructed to read the manual, but I've been looking at ReadTheDocs and can't seem to locate this bit of information. I'm trying to write the rocket flight control software in CircuitPython, but I'm a bit stuck on the status LEDs. I have an eight-NeoPixel stick for my display, but I can't figure out how to address an individual pixel. For example, I set all the colors to blue initially to show the pixels are working. Then, as a subsystem checks out, I change the associated pixel to green. If there's a problem, I want that pixel to be red. If the altimeter fails to initialize, the first three pixels should be green, the fourth red, and the rest blue..... But I can't figure out how to address individual NeoPixels....
@drowsy geyser oh yeah, this is definitely some read the manual stuff. Haha just kidding. I believe @idle owl and I were just talking about this a day or two ago. I have a NeoPixel ring, I'm assuming addressing individual NeoPixels is the same as your stick. I won't be able to check it out for a few days however. Kattni might be available though.
@drowsy geyser ```
import board
import neopixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixels[0] = (10, 0, 0)``` here 1 for 1 pixel you will hav e more...
pixelsl[n] is for LED n
@formal plover No rush. It's payday, so I have until Tuesday before the rest of the flight controller arrives from Adafruit. π
AHHH Magical! It works on the stick! I was indexing pixels incorrectly when I guessed what it would look like!
I was thinking it was analogous to the Arduino addressing, so I was trying variants of pixels.fill(2, (255,0,0))
The way it actually works is much cleaner.
I have started on a proof-of-concept module here: https://github.com/pewpew-game/circuitpython/tree/buttons
Turns out we don't need the interrupts, since we need a timer for de-bouncing anyways, we can poll in that timer. For now I put the functions in the samd module, because right now the code is specific to that platform. Of course ultimately it would go to its own module.
There are two functions: setup_buttons takes up to eight DigitalInOut objects, and configures CircuitPytho...
@solar whale returns! Just in the nick of time!
Well there ya go @drowsy geyser glad to hear you're all set.
One of the many reasons I love this community. There's always multiple people who can help.
I haven't seen many outstanding issues last longer than a day here.
b2dcc5b reset pins on PDMIn deinit(). Fixes #275. - dhalbert
@dhalbert could you take another look at this today? Thanks!
You could do SysTick_Config(ticks_per_ms) to replace lines 49-53.
I remembered what Dean told me about CMSIS and thought there might be a function to do this.
Why are you doing them all together rather than as individual objects?
I agree a new module would be better. Its OK to have ones that are only implemented on one platform to start with.
@slender iron I had some questions about the lifetime of audio objects, especially that use DMA. Not sure what their state and the DMA state is when they are deinit'd. Trying to mark them as deinit'd in a clean way. Do you have time for an audio or video chat?
in 20 minutes or so. finishing cereal now
ok, tnx. ping me. That reminds me; I should eat lunch.
kk, eat some lunch and then we can chat
Why are you doing them all together rather than as individual objects?
Memory and speed. And the fact that in practice you always want to check them all at once anyways, and have some big switch statement for the different combinations in your main loop.
@tulip sleet I'm ready. Lets chat whenever you are back from lunch.
@tulip sleet Is it possible (or will it be) to play audio while doing something else in the main loop? I'm trying to do NeoPixels and audio at the same time and when my audio plays my neopixels turn off.
@marble talon I think so. The audio should be playable in the background
@marble talon They shouldn't turn off even if the audio is blocking. But the audio is not blocking. Could you post your code (could be an attachment if it's long; click the plus sign on the left)?
@marble talon do you mean all three pixels go dark when the audio is playing?
Yes
The loop will block while any audio file is playing due to to the while x.playing: pass
Actually, I have a 4th that's not part of the code that stays on
Yeah, I grabbed that code from somewhere but wasn't certain of the purpose
it loops until that audio file finishes. but that should not affect the neopixels. What board is this?
what version of CircuitPython are you using?
Feather M0 Express
2.0.0
Yeah, removing that helps, though I do get some artifacts in my audio
And I can't explain all those 256s! Changed to 255s... π
wait, do you mean they still go dark with 255? 256 is like 0
No, no, they just weren't changing brightness. All good and wasn't really a factor. Hmmm. I don't think so, at least? Because the problem went away when I fixed the pass, but the 256 being like 0 would explain the darkness.
I think I need to play with it for a little bit now.
it's only 8 bits, and that top bit will be dropped.
ok, well get back to us. The 256 didn't register the first time I looked at it. I think that's it.
Yeah, I think I converted the wavs to 8 bit with sox. That was a week or two ago so I could be forgetting...
Either way, the pass definitely helps remove the artifacting so I may either have a delay or artifacts. I can probably put up with either in a pinch.
the width of the wav's doesn't matter. It's that the color values range from 0 to 255. 256 is out of range and will wrap around.
Yes, understood. I fixed that. It was just an oversight the first time, but it's possible it was messing with my observations.
keep testing and let us know the outcome
Will do. I'll hit up #show-and-tell. Thanks for the help!
Really enjoying CircuitPython.
@slender iron ok now?
yup!
@slender iron Will you be at GeekGirlCon?
no, but @timber lion and @fierce oar will
Yeah, @fierce oar was pitching it to me.
Looks like I've got this circuit working well enough to make a showing!
CircuitPython ended up working better than Arduino after all. I couldn't get SPIFlash to work from Arduino, which would mean no sound.
There's minor artifacts and I could do with a little more timing flexibility (but would need NeopixelDMA for that, I think) but that's my perfectionist side showing.
I'm not surprised there are artifacts. All the audio stuff is very new
going for a run now! be back in an hour or so
Enjoy!
thanks! (going now that it stopped raining)
Run while you can, then! Gonna be a long 9 months...
totally π
Is there a way to create multidimensional arrays in Python? I see how to do it with lists, but not arrays. I could make three arrays, but that just feels wrong π
if it helps, I am trying to modify the motor.py file from the PCA9685 library to work better with the PCA9685 breakout. The one there seems to be designed for the featherwing motor controller version, and has fixed pins stored in a tuple to match the connections to the motor controller. The breakout doesn't need these, so I'm working on a way to edit them.
@marble talon That's great to hear!
@floral dagger no compact way that I know of
by making sure we define CONF_USB_COMPOSITE_CDC_ACM_EN before including ASF4 files.
Fix #279
This adds a buttons module to the samd port, with two functions useful for button handling: setup() and get_pressed(). The buttons are automatically scanned every 32 ticks, de-bounced, and reported to the user as a bit mask.
I moved everything to its own module, and added some docstrings.
I think there should also be a compiler flag for disabling this, but not sure how to best do it.
Ok, this is ready for review. I confirmed time.sleep works. I don't actually know what code calls delay.
I have another difference in behavior Python 3.5.2 struct and CircuitPython 2.0 ustruct. See below the same code is on both systems. I was being a little tricky and and set the offset to 1 instead of 0. The Python 3.5.2 case placed the short int right at the offset=1, while CircuitPython placed it at offset=2! I am not sure why, but I am guessing the CircuitPython is forcing packing alignment from the beginning of the buffer,while Python 3.5.2 does the alignment starting at offset=1
**...
Is this relevant? https://github.com/micropython/micropython/issues/3314 ("ustruct unpack_from with nonzero offset doesn't match CPython (esp8266)"). Our code is the same as MicroPython.
@slender iron I was running into a limitation today where there isn't a time_ms, so I couldn't do subsecond delays. Would that be a feature request?
@marble talon time.sleep() takes a float, so you can do fractions of a second. time.sleep(0.010) would sleep for 10 msecs.
@tulip sleet Ah, is the leading 0 necessary? Maybe that's what I missed.
@marble talon It's never played nice for me without the leading 0, so that's my assumption
@marble talon .01, 0.01, and 0.010 are all the same number. I just did this in the REPL:
>>> .01
0.01
Interesting.
Now I'm wondering what other thing was broken in my code that I blamed on the leading zero, lol. This isn't recent, but still.
I can't find any syntax that seems to get confused. The json module wants a leading zero: https://bugs.python.org/issue19871
but otherwise it seems fine. I like adding leading zeros to make it easier to read.
@tulip sleet I'm sure it was entirely me. I think I've only ever seen it written with a leading zero so I've assumed it was necessary and have continued to use one.
Good question. Is this why Micropython called the class ustruct or was it something else. The good news is that Micropython ustruct.packinto() and CPython struct.pack_into() do have the same signature. And they function very much the same. Also since the native formats are platform dependent, maybe this edge case can be different.
Have you tried it separately? I think the API would make much more sense with individual button objects.
import button
import digitalio
import board
d = digitalio.DigitalInOut(board.D0)
b = button.Button(d)
while True:
if b.pressed:
print("pressed!")
How much speed is actually gained by this? Have you tried doing it in Python? I'm not convinced this is necessary.
@mrmcwethy Sounds like we'd just need to rename it.
I'm ok with us varying where CPython platforms also vary.
Thanks for looking into this!
That's not how you would use it in a usual program, though. Whether it's a menu, a game or a remote control device, you would have a main loop where you check all of the buttons at once on every frame, and decide what to do based on which buttons are pressed. Just think of a simple "press any key" check, to pick an extreme case. With your API, that would lead to a lot of boilerplate β either copy-pasted lines of code, or loops and lists everywhere. And of course all those objects consume extr...
You can take a look at two games in which I'm using a very similar API:
https://github.com/deshipu/pewpew/blob/master/games/snake.py
https://github.com/deshipu/pewpew/blob/master/games/tetris.py
It seems to be working rather well.
Thanks for the example links!
I was getting a bit distracted by the API. I want to focus on the need for a C module to do this instead. In my mind there are two main reasons to require a C module:
- Functionality is only available through a C API.
- Multiple steps must occur in a strictly timed sequence.
I don't believe 1 applies here because pins can be read through digitalio.DigitalInOut already and debounced in Python.
I'm also not sure 2 does either. The time between read...
I have tried a naive implementation of pew.keys() in Python, of course. The games were completely unplayable because button presses would be missed or registered several times.
The problem is that we can't poll the keys fast enough and still let the user code to run at the same time.
The basic feature required here is the ability to poll the keys at regular intervals (so that de-bouncing is consistent) and fast enough (so that we don't miss short button presses) while at the same tim...
Ok, that makes total sense to me! That explanation should go in the module docs please. I'm going to move feedback to the PR from now.
In addition to adding the description from the issue here is more feedback.
What do you think about renaming this to gamepad? I'm worried that calling it buttons implies that you need it whenever using a button.
I also think it should be a proper object rather than using statically allocated memory. That gives more flexibility on its use going forwards without impacting the size of a global state. The only global state should be the object mechanics (functions and name dictionaries)...
I also think it should be a proper object rather than using statically allocated memory. That gives more flexibility on its use going forwards without impacting the size of a global state. The only global state should be the object mechanics (functions and name dictionaries) plus a global for a pointer to a Gamepad object that tick updates.
Let me see if I understand this correctly. I would have a global (extern) pointer to a GamePad object, initialized to NULL, that would be checked...
I think we're close to the same page. gamepad.GamePad(b1, b2) would construct a python object and set the global state to it. I was thinking tick would then see if the gamepad global is null but its probably better to have it always call something in gamepad which can do a null check internally.
Although C doesn't have methods, its common for CircuitPython code to pass around a struct representing an object as the first argument similar to how Python passes self around.
@slender iron rosie-ci seems not have logo?
Ah, so instead of setup() you want a class. But then what happens when you create two such objects? With setup(), you simply replace the previous configuration, but doing that with class constructor would be surprising.
Yeah, you could either throw an exception or have the underlying structs be a linked list that can be updated.
Then we also need a way to remove keys, and to deinitialize the whole thing, and it becomes much more complicated.
I will try to use an object internally, but leave the API as it is for now, we can test it and think about a better API then.
Why do you need a way to remove buttons?
Needing to deinit is a common problem in the existing APIs. They do it through __exit__, __deinit__ and an internal reset that can reset the global to null.
It seems natural that if you can enable something, you should also be able to disable it.
One use case that comes to mind is a common trick with sharing buttons with the SPI pins β the buttons are connected through resistors, so that when the CS pin is asserted, the pins are in output mode and SPI has control over the lines, but when we finish and deassert CS, we switch them back into input and read the button states from them. It's a bit of a hack, but surprisingly common, and it would be...
I tried it with a dynamically allocated object, but the extra code made it not fit on the Trinket anymore. Is there an important reason to avoid those 8 statically allocated bytes, or is this just a question of style?
Could you push that version anyway? Its mostly style because static storage is always used vs the heap which is dynamic.
Hah! start_tone and stop_tone work!
@delicate pike Thanks π It's been a few days of work.
Congratulations @idle owl π
But.. Sphinx is unhappy with my unsigned short. At least I now know before I break the entire doc again.
I will try again, but I really wonder if it's worth it to fight for those 8 bytes, especially sice the global pointer to the object alone will take 4 bytes already, not even counting all the extra code that is needed.
I will try again, but I really wonder if it's worth it to fight for those 8 bytes, especially sice the global pointer to the object alone will take 4 bytes already, not even counting all the extra code that is needed.
is "sleep" the only method working in time? I was looking through the readthedocs page (http://circuitpython.readthedocs.io/en/stable/docs/esp8266/quickref.html)
and this sample code does not seem to be working:
time.sleep(1) # sleep for 1 second
time.sleep_ms(500) # sleep for 500 milliseconds
time.sleep_us(10) # sleep for 10 microseconds
start = time.ticks_ms() # get millisecond counter
delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference```
@formal plover Yuuuuuuuuup.... π
@floral dagger what is not working?
@solar whale time.sleep(1) is the only thing that is working
Hmm. Iβll take a look when I get back to my desk. Should be in the next hour. Do you get errors or just no delays?
i'll try one real quick and post the message...one sec
On esp8266?
yes
>>> time.sleep_ms(500)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'sleep_ms'
>>> start = time.ticks_ms()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ticks_ms'
>>> time.
__name__ monotonic sleep struct_time
>>> time.
``` that's what I get @solar whale
Ok. Iβll check. On thought. Try import utime as time.
I tried that earlier. utime is not there
the message is ImportError: no module named 'utime'
ok, thanks. no hurry. In the meantime monotonic is working to get the time, and sleep(0.3) is working as well, so the functionality is there, just not the way I thought π
latest stable, so 2.0 I believe
Adafruit CircuitPython 2.0.0 on 2017-09-12; ESP module with ESP8266
@floral dagger ticks_ms is a non-standard thing that micropython introduced to the time module so its been removed.
yup, its also non-standard
time.monotonic is the alternative that matches CPython
we've debated adding a precise_time module but anything in the python VM is subject to timing variance
@floral dagger - just looks like the esp8266 docs are a bit obsolete regarding time.
ah, ok. Thank you both.
@slender iron Is there a description of the CP branches on github - or can you just give a quick explanatiion of them. Is stable == 2.x and master == 3.0.0-alpha?
OK - thanks
np π
woohoooo!!!!! encoder wheel is now being read! Now I can start working on motor calibration.
this is the code I am using for reading the sensing pin into an 8 bit number for debouncing. Not sure this is the best way. Is there a more appropriate way to keep the number at or below 8 bit when performing the bit shift?
cState = int(cState << 1 | encoderPin.value()) & (0xff)
Checking brain: time.monotonic is the (rough) equiv of arduino millis(), right?
best I can tell, it is fractional....so kinda @royal ridge functionally it works the same, but the precision seems to go further than millis
or maybe that's just been a quirk with the test readings I have been getting. the digits of precision haven't all stayed the same for me
I believe fixing this issue consists of the following tasks:
- #define MICROPY_PY_STRUCT (0) for atmel-samd and esp8266 ports
- implement struct module in shared-bindings and/or shared-module
- repair the bundle library .py code that uses import ustruct
- change docu where needed
@floral dagger @royal ridge with time.monotonic() I think you alwasy want to call it to set teh start value, then call again and subtract to get the "elapsed time" in seconds (float). the actual value returned is not meaningful - onlty its diff from an earlier value.
x=time.monotonic()
do some stuff
x = time.monotonic() - x
now x is the elapsed time
This is a placeholder to avoid duplicate work.
How do I assign myself to the issue I just opened?
I have ordered this and plan to make a driver for it.
@sand bloom I don't think you get assigned to it, you create it and the issue exists with your name on it. There's a driver label though that would be helpful to add.
@idle owl for some reason it won't let add labels
@sand bloom I've not had to do it, but I didn't think you needed to have permissions to tag your own issues. I would wait until dhalbert or tannewt are around and ask. On weekends, they might lurk but for the most part they're around on weekdays.
Okay! Sounds good!
@sand bloom That should help π
Yay! @idle owl
hiya do you mean parsing out the data? because we do have buffered UART I/O that works quite well:
https://learn.adafruit.com/adafruit-gemma-m0/circuitpython-uart-serial
i can't seem to consistantly get touch.value to ever be True on a trinket or gemma (running 2.0.0) this has happened to me before too....
could it be a threshhold thing? is there any way to expose the raw_value? maybe could help debug
Yes, @ladyada, it's about creating the classes and methods to abstract the parsing from the user (e.g., breaking out the int into hours, minutes, seconds). This will allow users to make a call like "gps.getLat()" and receive a float decimal degree latitude in response. I currently have this built on top of the busio.UART interface.
ok whew - just makign sure!
I just tested on a Gemma and Trinket with the same pins, and it's working for me on a wooden desk with my finger directly on the pad or with an alligator lead. Code is just something like:
import board
import touchio
t = touchio.TouchIn(board.D1)
t.value
I put it in a loop, etc., and it was OK. Anything else going on?
We have an old pull request from a user for the raw value that was never finished (#136). We could revive that easily or do something similar.
i grabbed another trinket and on that one, D1 works but not D3/4 - but those pins definitely work for other stuff. so, i kinda suspect a threshhold thing?
i'd dig having the raw_value if we can fit it in
@slender iron I'd appreciate some feedback: https://bitbucket.org/dastels/dotstar_featherwing
@slender iron I'm working on a "learning guide" type document as well.
I sent @ladyada some test builds with .raw_value available.
Started working on the first non-prototype (I hesitate to say "production") of my trinket/CP project.
yeah the 'default raw' value is 2000 for D1 and ~1500 for the others. you can see how D1 doubles when i touch it, but maybe because it is higher than D3/D4 it doesnt trigger?
# Trinket IO demo - captouch to dotstar
import touchio
import busio
import board
import time
touch0 = touchio.TouchIn(board.D1)
touch1 = touchio.TouchIn(board.D3)
touch2 = touchio.TouchIn(board.D4)
dotstar = busio.SPI(board.APA102_SCK, board.APA102_MOSI)
r = g = b = 0
def setPixel(red, green,...
The threshold for .value == True is twice the initial reading when the object is constructed.
that is waay lower than the threshhold ASF uses - they use maybe like 64 points
@fading solstice Thanks for the dht library - works well. It's very nice to have available. I did find a few errors in the example: ```
import adafruit_dhtlib
should be
import adafruit_dht
then when used the full name has to be used:
dhtDevice = adafruit_dht.DHT22(<pin>)
or
import adafruit_dht as dht
@solar whale I'm just curious: why are you using the DHT rather than something like an Si7021? I started my prototyping with a DHT, but switched for the I2C bus and the smaller (post-breakout stage) part.
@umbral dagger I just saw that the dht library had been added and have a few laying around so I thought I'd give it a try. Si7021 is next on my todo list π I agree that the i2c sensors are very nice.
@slender iron what branch should i make my changes to for the "ustruct to struct" issue . Iplan on making my own branch, but I wondered what it should be created from inially
@solar whale yes please add an issue.
this doesnt exist in python i think but its an interesting idea - can we pop out from the main.py code to REPL but still have access to that context?
@umbral dagger @solar whale i think that it happened only because i wanted to write one AND the adafruit store still sells DHT sensors. Gave me a chance to get my feet wet on a low risk project.
We could. Micropython actually worked that way originally where the heap
was shared. There was no way to continue main though. Would the goal be for
debugging?
On Sat, Sep 30, 2017 at 3:12 PM ladyada notifications@github.com wrote:
this doesnt exist in python i think but its an interesting idea - can we
pop out from the main.py code to REPL but still have access to that context?β
You are receiving this because you are subscribed to this thread.
Reply to this email directly, vi...
what branch should i make my changes for this issue . I still plan on making my own branch, but I wondered what should be the source branch.
Note that i have made the changes to to shared-bindings and shared-module. The atmel side of things build with error, but the esp8266 has many unknown compile errors. I am assuming that i do not have the appropriate sources for esp8266 to build.
@mrmcwethy Fork this repo into your own copy. Then checkout 2.x and then make a branch off that. When you're done commit your changes and push to GitHub. When you look on GitHub you'll see you can create a pull request. You may need to choose the adafruit/circuitpython 2.x branch from the dropdown. It might default to master.
yeah like "stop here i want to see my variable state" - im ok with not being able to re-continue
I re-did the GamePad module, this time I simply made it a singleton object β trying to create more than one simply re-configures the existing one. I still don't like the fact that you have to keep the reference to the created object and pass it around your program.
I'm really starting to like circuit python. It's taking me some time to get the basics down (python noob), but so far it all seems very straightforward. Nice work folks
@floral dagger That's great!
managed to port my little rover/bot project over to CP pretty easily. I'd expected it to take the rest of the weekend to get the coding done, but functionally it's about ready. It's surprising how well CP works.
That's great to hear! That's the goal.
@floral dagger I'm a Python noob too, started with it three months ago, and ended up doing a lot of my learning through CircuitPython. I found it easier to get into when I had immediate results on a board. Blinky lights are great!
nice @idle owl. Yeah they are. It's pretty cool to have physical feedback.
Now I just need to figure out this github monstrosity, and start poking around in the code.
I'm just learning that too. I have basic commits figured out, and working with branches. Most of my usage involves going back through my terminal history because I haven't gotten much of it memorised yet.
Yeah, it's a lot to pick up for sure. I'm still hoping to find that one person that can explain it without using terms that only someone who knows how to use github would know. I'm sure they're out there somewhere.
I totally get you there. I've got a friend who can. That's who has been teaching me. I've watched presentations on it, and most people, like you said, use git terms and that doesn't help if you don't know them.
lol ikr....all I hear is "ok, now you jus flippityfloo the whatsit, and that creates your bloppiter for your flamwangler"
lol exactly!
@floral dagger By the way, if you have any git questions, feel free to ask. If I haven't learned it yet, I have someone who can explain it to me in normal terms, and I might be able to bring it back to you the same way. There's a few people here who were able to explain some things to me as well, but I can't recall if I'd already started using it - which is to say using git terms at that point wouldn't have been gibberish to me if I'd already been working with it some.
@floral dagger Same here (wrt CP). I was exposed to python in 2003 but never cared for it. I tried it again 5 years later at Google, but it didn't click. Ruby always filled that niche for me. CP feels fundamentally different, however, and I'm rather enjoying it. Still running into plenty of "how do I do that in Python" moments, but getting some real code written.
@floral dagger @idle owl I'm using GitKraken for most of my git use these days. Cross platform, free for non-commerical use, and is pretty decent. So mostly that, and then some command line use as well. Git is pretty much the standard for source control now.
@umbral dagger The more I use it, the more it's starting to gel for me, but I'm still getting started, so there's a lot of asking the same questions.
@floral dagger @idle owl Git is massive in terms of what it can do. I've been using it for over 10 years and use/know a portion of it.
@umbral dagger Yeah my friend who seems to know it inside and out has been teaching another friend pretty much weekly for 3 years and he's still in the dark about so much.
Thanks to Hak5 they explain a lot of such things
@umbral dagger got the si7021 and an mcp9808 up and running - all 3 sensors are close in temperature but the si7201 does do a better job with humidity. Also get occasional errors reading from the dht22 - that is typical in my experience. I would definately recommend the si7021 or mcp9808 if you dont need humidity.
Thanks, Dan. I got the esp8366 to build as well. The resultant uf2 runs correctly on Metro and CPX.
I have a question of project design. I noticed that there is a separation of code between shared-bindings and shared-module. Can you define what code should go in either and what should not be in either? My first attempt was to move internal STATIC function into share-module, but i think i need to do more.
@tannewt designed the shared-bindings / shared-module split. This doc page describes it in more detail. Basically, the wrapper code that implements the Python API and calls down to the lower level HAL (hardware abstraction layer/level) is in shared-bindings/. Lower-level code that is architecture-independent and can be shared between ports lives in shared-module/. Then there are (for now) atmel-samd/common-hal/ an...
@solar whale I used went with the Si7021 for my sensor node design. I'm sticking with it for version 2. I've added BMP280 (for barometric pressure... not sure it it's worth keeping in the long run), and am interested in seeing how the temperature readings of the two compare.
that is waay lower than the threshhold ASF uses - they use maybe like 64 points
Not sure I know what you mean here. Do you mean the raw value range is only 0-63?
The current algorithm is to read the raw value on construction, and then double it for the True/False threshold. E.g., if the initial raw value at construction is 2042, the threshold is 4084. Your worst case was 3774/2038 = 1.85. We could lower the threshold to 1.75*the initial raw value.
On my samples, the ratio is always...
oops i mean, like 64 points above baseline
I tried a Makey-Makey style use:
Banana, clip lead on stem, no-touch / touch:
D1: 3573 / 4064
D3: 2763 / 4064
D4: 2879 / 4064
Apple, clip lead on stem
D1: 3000 / 3891
D3: 2183 / 3694
D4: 2257 / 3727
Clementine well past its prime:
D1: 2896 / 4064
D3: 2231 / 4064
D4: 2187 /4064
I think this suggests we should use an absolute increase above baseline rather than a ratio. Also maybe we really should expose the threshold for getting/setting.
I don't know why D1 has a consis...
D1 is shared with the DAC circuitry so i think it has a different built in capacitance
CPX A0 is connected to the speaker, so it will not work for touch input if the speaker is in use. This should be documented if it's not already
In addition, Touchio.TouchIn(board.A0) often ends up with a very high initial threshold value when the object is created. If you deinit() the object and re-create, the threshold is more reasonable and is closer to the raw_value read later. I tried reading the value twice on during construction but it was still high to being with.
@timber lion I tested your mega demo (the Monday dropbox zip version) and found two bugs.
@timber lion If you get into the touch demo, activate the sound option, trigger a sound and switch to the next demo. The sound stay and never stop.
Fixes #297. Makes the threshold be 100 above the initial value, instead of 2 times the initial value. Works better for attached objects such as fruit. Add .raw_value and .threshold objects to allow debugging and fine-tuning of touch sensitivity.
@half sedge He mentioned that when he talked about it before posting it. He hadn't put in a hook to stop the tone.
@timber lion Then, if you switch to another demo a few time, it get stuck after the rainbow.
@idle owl Yes, but latter, it freeze completely when looping through the demo.
Anyway, that demo is a very good selling point. I showed that at an hacker space... and they did put that on their shopping list. π
It would be great if the demo would work with the mega.py version. Because that is editable on the fly.
I believe that removing the accelerometer demo and code would make it much smaller.
Not enough memory. We're working on integrating a few things that might make that work, but we won't know for a bit.
Removing it does help, but it can still run into memory issues.
I have make changes to several bundle library projects: lis3dh, max31855, pca9685, rgb-display, si7020, and register. which branch of these projects should I be updating. I assume master, but I want to make sure first. The changes are simple: import ustruct -> try: import struct except: import ustruct as struct. change module references from ustruct. -> struct.
<@&356864093652516868> @tulip sleet I think we're on for the weekly meeting tomorrow (Monday) at 2pm ET/11 am PT!
Master please @mrmcwethy. For small projects, master is the place to go.
On Sun, Oct 1, 2017 at 12:09 PM Michael McWethy notifications@github.com
wrote:
I have make changes to several bundle library projects: lis3dh, max31855,
pca9685, rgb-display, si7020, and register. which branch of these projects
should I be updating. I assume master, but I want to make sure first. The
changes are simple: import ustruct -> try: import struct except: import
ustruct as struct. change module re...
Absolute increase works for me! Thanks for the investigation @ladyada and
@dhalbert.
On Sun, Oct 1, 2017 at 9:06 AM ladyada notifications@github.com wrote:
D1 is shared with the DAC circuitry so i think it has a different built in
capacitanceβ
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/adafruit/circuitpython/issues/297#issuecomment-333386886,
or mute the thread
<https://github.com/notifications...
@slender iron My attendance will typically be hit or miss. Since I'm working till 4pm EST. For right now I am working from home on Mondays, so I'll be able to listen, but probably won't be able to talk. You can try to verbally ping me though, I might be able to depending on what I'm working on at that moment.
π
@slender iron I'm also tied up at work this afternoon. I may be able to listen only, but even that is doubful today since I am in an all day conference. After this week my availabilty should improve.
@slender iron I'm not going to be able to make this evening's chat - I have dad-taxi related duties to fulfil (my 13yo needs driving to Taekwondo). Should be able to do other weeks tho.
@slender iron I'll be here for the weekly.
thanks all for the rsvp! I'll record it again in case you want to listen later
if you remove the SD card between read/write's (say in repl) theres no timeout or error
hi smart people. My metro express board is sad. 2 clicks on the reset button shows the Boot Drive and I can copy a different .uf2 file onto it, but the run-time drive shows and disappears quickly. plus the serial communications is not allowed. This happened right after copying updates onto the drive. The drive will not mount on either ubuntu or windows. Is there a way to set the board back to factory settings?
@fading solstice Have you tried the flash eraser yet?
no, i did not know about the flash eraser
Excellent! Download the right file from here https://github.com/adafruit/Adafruit_SPIFlash/tree/master/examples/flash_erase_express and follow the instructions from here: https://circuitpython.readthedocs.io/en/latest/docs/troubleshooting.html#file-system-issues
Basically download the uf2 file and drag it over, and it wipes the flash completely.
Then you need to doubletap reset it again and copy your CircuitPython or desired uf2 file to it.
@idle owl you are the best!
@fading solstice Thanks! I'm glad I could help!
@fading solstice your mic is super loud
Hello, how do I join?
Click "CircuitPython (recorded session)"
click the circuitpython voice channel on the left
Towards the bottom of the list on the left.
(lurking)
lurks too
(just listening)
#datkeyboard
cherry clicky
is this the chat channel for the meeting?
yup!
sorry discord is a bit... interesting UI wise π
so the voice channel is separate and just always in background I guess?
yeah
woo @idle owl !
Thank you! π
π
nope
thanks @tidal kiln !
π π
oh. forgot. hug report. thanks to dan h for helping with a forum post.
sorry cat seizure
oh no! I hope it's okay
oh that's good he's ok though
hrm is there any audio? i just heard it stop
There is audio, yes
I don't hear him
oh i heard scott for a sec
oh this happened before
i only hear scott
I can hear @fading solstice
I can hear him as well
I think web people can't hear certain people? I heard mr mcwethy before too
hrm i just hear bits and pieces of scott
same here, can only hear you scott
I'm using the client and can hear everyone
lol so funny to see everyone typing about invisible conversations
reconnect fixed it.
for our libraries they have an examples folder that I've tossed examples in, so check their too (the guides point at examples in the folder there)
er there
learn guide github repo https://github.com/adafruit/Adafruit_Learning_System_Guides
I had to step away for a call. I'll be back.
i wouldn't frame it as a podcast personally, it's more a what's going on and less a produced show
I'm typing only
I used to do a podcast for years and it had less production value than this, so, π
Now that the SAMD51 is showing up for sale, is there a feather board floating around that could be dev-ified like the m0 express one I did?
yeah its insider baseball
yea, totally - awesome podcast
Or some other eagle stuff I could do?
With software in mind, could some work be put in to the CONTRIBUTING.md to make getting started with the software?
You mean like a metro to feather pinout adaptor?
Should be fairly easy, I'll give it a look this week
hrm i only hear scott
I might... if you could use a guide on my Halloween costume I could hopefully do one of those π
ah!
hey, yeah no big update since last week.. travel and prep for geek girl con took my time
tomorrow i'm flying to denver so trying to fix a few bugs and things before leaving
working on the ili9341 guide update too
GGC was good! good cosplays
i think i'll miss wed. meeting
if all goes well i'll be 14k feet up a mountain π
oh one thing
@brave cipher @dreamy dagger I hit the memory erase on battery level low again
on my circuit walker shoes π
so FYI, it's pretty easily reproed
yep
it only ever happens on the express boards i've seen
i've had a feather m0 basic run out of battery and it seemed good, didn't wipe it all
testing one two three
you need to lock that down by level, though
hello world
I heard it too
i heard it, on web app
tts engine is different for each app
funny how each app is totally separate π
beep boop i am a robot
will be good
oh wow scott just cut out a bit for me, back now
One other question: If I were to get a Saleae, which would be good for this type of dev work? I was looking at the Logic 8 bit would the 8 Pro be worthwhile for any reason?
i think the regular 8 is good, the pro is just faster and has analog
but for I2C and basic SPI sniffing up to 50mhz or so from the basic is fine
i2c is 400khz and sometimes 1mhz, SPI varies but really only big LCD displays run fast (multiple megahertz)
The docs show the 8 having analog inputs. Is there something that the 8 pro has that makes analog support better?
oh interesting yeah looks like they do have analog on the non pro too
it's just a little faster so can get more signals, but it's not really a proper oscilloscope.. like it doesn't have the same protections or voltage range
good in a pinch but not a replacement
the 4 would be too limiting i think though, you really want 5 pins sometimes for SPI devices to see the CS line, enable line, etc and clock, miso, mosi
Trying to decide between an Rigol 1054Z and logic as a first purchase. I'll probably get both eventually but I'm leaning towards the Logic first
Yea, that's what I thought
π 
π
if you're at open hardware summit join #ohsummit20
@tulip sleet you might like this
from living computer museum blade runner party over the weekend
they had the whole museum open though
awesome!