> - Open-source also needs some commercial operations to keep healthy. I'll try my best to balance everything. They are out of my expertise and I have to learn. I do have to settle down and support my family, rather than sleeping lonely on a foreign land.
Note that he said he hasn't open sourced them _yet_. It sounds like he just launched the project, and is going to take steps to open source the code/files once he figures out a business plan.
I definitely noticed that irony. I think he'd probably get just as many customers even if he open sources it, just because a lot of people like me don't really have the time or expertise to assemble this.
Sure: I'd like to purchase three versions of it _simultaneously_ to learn how it works: fully assembled, as a kit, and in a source form. That way I guess debugging it would be much easier, and should the two get assembled successfully, they'd make great gifts!
Not only that, but it's marked as GPL but the author says in the FAQ that they want to avoid sharing source or "inheriting" the license. Yet it apparently uses GPL code.
Plenty of projects use GPL'd code but do not release the resulting product. It all depends on how it is put together whether or not that is in compliance with the GPL or not. Hard to say without having access to the resulting binaries.
From reading it several times it does not appear that authors first language is English and it could very well be that either his understanding of the GPL is somewhat lacking or that he is not capable of wording his stance in a clear way. The technical parts are all very lucid but the rest is not. I'd give him the benefit of the doubt until there is a product that can be evaluated.
What I always wonder when seeing animal-like robots: they don't have a tail, which however seems to be pretty important for animals to keep balance... how do robots (or de-tailed animals) compensate for the lack of a tail?
I think a lot of the compensation comes from slower speed and lower-complexity movements. It's absolutely the case that a cheetah uses it's tail when making turns at high velocity, but it's also true that a robot can ovoid the need for a tail by turning slowly and not having any lateral g-forces to contend with.
Off topic, but this has always astounded me - the cheetah's tail was the inspiration Kobe Bryant used for fixing his form on his fade-away jumper; one of his legs is always stuck out in a seemingly awkward manner but he's using it to balance his body as he falls away from the basket.
Excellent work. I have been using the Arduino for some projects. Other than a horrible development environment it is very fun to play with. Been trying to get it to work with CLion, but after a good twenty hours of work there are still uglinesses.
I've just started out with Arduino. What's the advantage of programming the AVR directly? I guess there's a bit more overhead you can remove? What are the cheaper options? That programmer you linked to seems like a fairly expensive option for someone just looking to get started — can you still use the Arduino board as an interface to program the chip?
Edit - Bonus question: when you use something like that programmer doesn't the code/write/move-chip-into-circuit cycle become really laborious?
I've been programming microcontrollers my entire programming career and now do a fair amount of work with Arduino.
The only advantage I've found to not using the Arduino libraries is when I need raw speed. e.g., a few months ago I had a project where I needed to read an analog input, calculate/lookup sine & cosine, do some math, and generate an output all within 300 uS.
At first glance, it seems trivial, but there was no way the Arduino libraries were fast enough. They are optimized for ease of use, not speed.
However, remember that in most modern programming, the programmer time is the most expensive variable. Using the Arduino libraries keeps that cost in check.
Real product versus toy: The arduino libraries are not the standard AVR libraries you would use to program a real product. In a real product you would also never use an arduino, too expensive and bulky.
Also, the arduino ties up a bunch of pins and space compared to just the chip, for not much payoff in a typically sharp focus microcontroller use case.
I think the cost for a programmer is a wash when you consider that you only need to buy bare chips after you learn how to use the programmer.
Real products absolutely do use Arduino libraries, it's not a toy. They are just embedding the AVR directly for cost (and using an external programmer), but there's no reason the Arduino libraries don't work for products that ship. Arduino only eats two pins for serial - I suppose you could drop that if you wanted, but in practice most commercial products have a debug serial port anyway.
As I understand it the Arduino libraries are big, but I have never tried. What are the advantages to not just using the AVR libraries if you are embedding the chip in the circuit and using the programmer?
Functions you don't call get stripped out of the final binary. The advantage is you get a bunch of high level functions like analogRead() that do all the setup for you. avr-gcc/avr-libc mostly just provides register definitions, so it's likely you're going to duplicate most of the code inside analogRead() anyway if you roll it yourself.
That said, I've done plenty of projects with bare avr-gcc (especially for chips not supported by Arduino at the time) and it's not terribly onerous, but often you don't need that level of control for every little thing.
As an embedded developer, I would agree that there is this sentiment that arduino is somehow inferior, bigger code sizes, worse code quality, training wheels, etc.
However, I've recently used a couple different Teensy boards in some personal projects, which are a line of 3 or 4 different freescale kinetis cortex M0-M4 parts that have their own plugin for the arduino IDE. I've been very impressed with the breadth of libraries, and how well it all works and integrates between different boards. The code is well written, and looks like it could easily be dropped into arm-gcc. Maybe Teensy is the exception, but there are some high quality Arduino codebases out there.
Not being able to use in circuit debug tools is a huge pain, however.
I always found it odd that one "needed" a large amount of software (Windows, IDE) to program something so small.
Additionally, the IDE is often under the control of the manufacturer. I understand there are good reasons why this means there will be "bloat". Manfacturers are acting sensibly in their own self-interest.
As a hobbyist, I prefer chips that I can program using a UNIX-like OS that I can compile from source.
I prefer to program from VGA textmode, i.e., no GUI. I am not going to run Windows just to program a tiny microcontroller.
"Handling" dependencies automatically is fantastic when it works. But it reaches varying degrees of anarchy and hopelessness when it doesn't.
The more ambitious the framework, the more you have to wade through to figure out what it's actually doing when something breaks...I'd much rather have to deal with some cross-compilation headaches and dependencies than to be at a dead end when the 'black magic' stops working.
The 'new project' menu even includes 'import from Arduino sketch', and it's easy to add an external tool link so you can use avrdude to program the Arduino, just like the Arduino IDE does.