Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

80% Positive

Analyzed from 465 words in the discussion.

Trending Topics

#arduino#file#more#files#con#commands#things#https#github#com

Discussion (12 Comments)Read Original on HackerNews

ls6553625 minutes ago
I made something similar a long time ago partly as a challenge to see what could be done with just 2 KB RAM [0]. It was possible to implement some very basic context switching between two "processes", pipes (okay, I only had a single pipe, and it only worked between certain commands), and some other things like a few built-in games (pong, snake, and a breakout-style game, naturally). I didn't go as far as adding any filesystem functionality though, and ultimately yours does feel more Unix-like overall, but it was a fun little project where you learned to always consider every single byte as precious.

[0] https://github.com/ls4096/avrsysh

jrfloabout 3 hours ago
Fun idea! The real time interaction with GPIO from the CLI is the most interesting thing here, I could see a general framework for that being useful for early-stage prototyping with new hardware/sensors if you included things like I2C, SPI, and UART.
MisterTeaabout 2 hours ago
The next level of this is serving the Arduino as files: https://github.com/echoline/NinePea then mounting that on your host OS. A friend wrote his own 9P server while doing embedded work on an ST Arm board by mounting the board under Linux. Files are just nodes to RPC calls that you the user decide so the file server can do anything.

Your IO points can be individual files so you can 'echo 127 >/n/arduino/pwm0' to set and reading is just as easy 'cat /n/arduino/pwm0' If you want to save all the pin states you 'tar -c /n/arduino | gzip >arduinostate.tgz' then reverse that process to write the values back.

To change pin config you can create a ctl file which you can use to control and configure things using key=value pairs, e.g. echo 'pinmode pin=3 mode=output' >/n/arduino/ctl. Errors are communicated through the file system so a failed write() will return -1 along with an errstr(2) message to your calling process.

Want a cli in addition? No problem, just make a file called e.g. con (console) and hang a REPL off it. Now open that file using a console emulator like con(1) on Plan 9: 'con -C /n/arduino/con' and type your heart away.

I have toyed with the linked library on 9front and tinkered with robotfs and the RNG demos. This is one of the cleanest ways to interact with software IMO.

Someoneabout 1 hour ago
For that, a Forth is superior because it allows you to augment the set of commands.
DoctorWhoofabout 3 hours ago
Missed opportunity to call it "Unox"
tostiabout 1 hour ago
Yes, but only if its rookworst flavoured.
zsergeabout 2 hours ago
Reminds me of a good old arduino shell, Bitlash - https://github.com/billroy/bitlash/wiki/commands
lpcvoidabout 2 hours ago
>// The descriptive files (i.e., README and QUICKSTART) were written by Claude AI (with minor tweaks). Why? Because if I had done it myself, it would have ended up as a few lines of incoherent gibberish that wouldn't tell you anything.//

I would have enjoyed your lines of gibberish far more than the slop that Claude spit out.

But it's a cool project, thank you for sharing.

whattheheckheckabout 2 hours ago
Mike stonebraker said the filesystem should be a database in a recent podcast with ryan peterman. Any thoughts on trying that out?
dale_glassabout 2 hours ago
Very neat, but why Arduino Uno? It's well past its prime.
boznz31 minutes ago
The UNO is definitely past it's prime, but I think the exercise was more a "can I do this" challenge. The code is pretty generic C++ so the techniques should also be good for other more up to date micro's and for others to learn from.
malickaabout 2 hours ago
Probably because that’s what they had or needed. :^)