On “Not using an Arduino”

LowQCab

Joined Nov 6, 2012
4,023
Considering that most of the Thread-Starters here are demonstrating an interest in
"learning Electronics", (whatever their idea of that may be),
I think that there are 2 distinctly different "Worlds" that must be learned to
have a well rounded ability in working with "electronics".
First, and from my viewpoint, the easiest, or most basic, is learning Analog and simple Gates,
mostly because this knowledge is virtually required for most, if not all, interfacing
with the outside World,
whether You are using a Micro-Controller, or making a fully Discrete-Device.
So I consider learning Analog and simple Gates a prerequisite to learning Micro-Controllers.
Unfortunately, Micro-Controllers "look" far more simple than they really are, and
I think this may cause many people to "start-in-the-middle" of the learning-curve,
leaving-out all of the intricacies of interfacing a Micro-Controller to the World, and
also leaving out complete alternatives to using a MC which, on occasion, may be a superior solution.

There are also 2 distinctly different learning "activities" when looking at the
differences between learning Analog-Circuits and MC Programming,
Analog learning, generally, is mostly Math-Based with a set of associations of
anomalies of particular types of Components,
whereas Programming requires learning a whole new type of foreign Language,
or even multiple Languages, some of which apply under certain circumstances
and others that apply under different circumstances,
therefore, learning to "Write Code" favors a type of person
who has, what is loosely called, a "Photographic-Memory",
( I have a genius I.Q., but I do not have a "Photographic-Memory" ).
A "Photographic-Memory" can be a very useful thing at times,
but it can also make a not-so-bright person appear to be very smart,
when in reality, they may not be smart at all,
but on the other hand,
they can quote "Chapter-and-Verse" from any book they ever had an interest in,
but not necessarily be able to tell You what it means, or how it relates to other information.
This is all to point-out that to become proficient in Writing-Code
You need to posses a fairly high I.Q., and a "Photographic-Memory",
and have a need or want to use it, and exercise this skill regularly,
otherwise it becomes a "Copy-&-Paste", then "cross your fingers" and hope it works type of scenario.

In my estimation, the above boils-down-to 90% of the people that want to use a MC for a project
have no clue of what they are actually asking for,
and the people who are insistent on "No-MC" know even less.
But, of course, everybody has to start somewhere .........

I simply loose interest when I find-out that the person is not really trying to learn anything,
they just want to be told what to buy on Ali-Express, and how to plug it in,
but if they are working hard to actually learn something,
all of my very broad experience is at their disposal.
Unfortunately that includes Zero Code-Writing experience,
which isn't necessarily a bad thing,
because if the project doesn't have some sort of "Display" requirement,
I can probably offer an alternative Analog-Solution to the problem.

Another factor to consider is just plain being tired of hearing the constant barrage that
Arduino is the answer to World-Hunger, and the greatest thing since Sliced-Bread.
It gets old after a while, and truly innovative and useful uses for them,
( aside from flashing LEDs ), are not really all that much "better".
Analog-Circuits and MC's each have their strong and weak points,
and should be evaluated against each other on a case by case basis.

After saying all this, I'd like to make it clear that I think MC's are very important,
but more important than Chips, are highly-competent future Code-Writers,
and they need to learn at least the basics of Analog first.
.
.
.
 

nsaspook

Joined Aug 27, 2009
13,084
As an uncontested expert you are >100% welcome to shun Arduino simply because you don't like how the name sounds or for any reason you need not even explain because you won't need someone on this forum to come up with the alternative solution for you. You know enough to know why you don't want it on your workbench, what the alternatives are, how to implement them, and how to make your implementation better than arduino would have been.

I have no problem with you rejecting arduino. I have a problem with Joe Noob asking me to design his project around unnecessary constraints that the isn't qualified to specify.
I don't shun the actual hardware for initial designs. I use it because it's cheap and there is usually something you can use to make a quick prototype. I just don't use the Arduino IDE environment to design, build the software for the systems or use Arduino hardware products in production systems that are expected to be up 24/7 for decades.

A "Lowest common denominator" controller API across many controllers lines is a neat idea that can result in "Lowest common denominator" functionality in actual applications when engineering tasks to specific types of controllers..
 
Last edited:

nsaspook

Joined Aug 27, 2009
13,084
Arduino (API) did what Mbed wants to do
https://os.mbed.com/
A 'universal' api across microcontrollers.
I think the roots are in the Wiring API, I'm not sure which is the chicken and which is the egg
( edit: oh it seemed 'in the beginning' there is wiring:
https://electronics.stackexchange.com/questions/866/wiring-vs-arduino)
http://wiring.org.co/reference/
https://www.arduino.cc/reference/en/
These days it is the API that matters.
Projects like Marlin Firmware
https://marlinfw.org/
would have been more difficult if not for the API, at least things like blinking a led can be 'standardized' using
Code:
pinMode(pin,OUTPUT);

digitalWrite(pin,HIGH or LOW);
it probably saved some #ifdefs as otherwise it could be
Code:
#if defined(a)
  do this;
#elif defined(b)
do that;
#elif define(c)
do it another way
...
#elif
...
endless
...
Wiring was such a kludge to make it compatible across controller lines. I included the Digital I/O API from Wiring in an old Linux kernel driver for the RPi. It hides the gpio mapping complexity in the API across different types of controllers but makes actual pin control inefficient.
For systems that use Linux there is a more general API: https://www.embedded.com/linux-device-driver-development-the-pin-control-subsystem/
 

strantor

Joined Oct 3, 2010
6,782
Considering that most of the Thread-Starters here are demonstrating an interest in
"learning Electronics", (whatever their idea of that may be),
I think that there are 2 distinctly different "Worlds" that must be learned to
have a well rounded ability in working with "electronics".
First, and from my viewpoint, the easiest, or most basic, is learning Analog and simple Gates,
mostly because this knowledge is virtually required for most, if not all, interfacing
with the outside World,
whether You are using a Micro-Controller, or making a fully Discrete-Device.
So I consider learning Analog and simple Gates a prerequisite to learning Micro-Controllers.
Unfortunately, Micro-Controllers "look" far more simple than they really are, and
I think this may cause many people to "start-in-the-middle" of the learning-curve,
leaving-out all of the intricacies of interfacing a Micro-Controller to the World, and
also leaving out complete alternatives to using a MC which, on occasion, may be a superior solution.
Regarding "starting in the middle" - I see your point and I don't disagree with anything other than the word "prerequisite" and the implication that "in-the-middle" is an inferior place to start. I mean, after all:

everybody has to start somewhere .........
I learn by doing, so "the middle" is where I start learning most things. Or more accurately, "one step shy of where I need to be" is where I start learning most things.
"The middle" is just as good a place as any in my book.

I recognize there are such things as hard prerequisites (ex: have to know how to subtract before learning long division) but I don't think this is one of them.

Anyway, "the middle" is relative. "The middle" is very different for the Semiconductor Engineer who designs a server processor and the programmer who builds upon it. A Materials Scientist would probably opine that a welder's knowledge begins (and ends) "in the middle" But a Welder's opinion about the precise location of the middle probably involves terms like "Stick," "MIG," and "TIG."
 

Thread Starter

Ya’akov

Joined Jan 27, 2019
9,070
Regarding "starting in the middle" - I see your point and I don't disagree with anything other than the word "prerequisite" and the implication that "in-the-middle" is an inferior place to start. I mean, after all:



I learn by doing, so "the middle" is where I start learning most things. Or more accurately, "one step shy of where I need to be" is where I start learning most things.
"The middle" is just as good a place as any in my book.

I recognize there are such things as hard prerequisites (ex: have to know how to subtract before learning long division) but I don't think this is one of them.

Anyway, "the middle" is relative. "The middle" is very different for the Semiconductor Engineer who designs a server processor and the programmer who builds upon it. A Materials Scientist would probably opine that a welder's knowledge begins (and ends) "in the middle" But a Welder's opinion about the precise location of the middle probably involves terms like "Stick," "MIG," and "TIG."
One of the biggest pedagogical mistakes is to demand people learn fundamentals before they have any satisfaction from learning the subject. When I taught classes on computer administration and networks I always started with a demo involving very sophisticated automation of tasks I knew my students were currently doing manually at great cost fo time and a lot of boredom.

Because any sufficiently advanced magic is indistinguishable from technology (yes, I mean to type that, apologies to A. C. Clarke) my wizard status was instantly cemented. Often there were gasps of disbelief and always great interest. I would ask how many people were doing this in their environment, and of course, no one was.

So, I would tell them “Well, I did this and you don’t know how. I am going to tell you how so listen to me and don‘t imagine you can know what I should be telling you, you don’t.” I then went on to teach them a mix of fundamentals and high level concepts, and to show them practical applications.

I adopted this policy when I began to receve 50/50 love, hate evaluations for a new course I had written. The management of the company that organized the two-day seminars was confused and concerned about them. They knew about mostly good or mostly bad evals, but half 5-star and half 1-star reviews was not something they had see or could understand.

I recognized the source of the problem right away, though. Half the class expected me to be flipping through screens and showing which checkboxes to check and what magic words to type into the edit boxes. Of course, I wasn’t ”teaching“ like that, and wasn’t about to start. As I told the class, I am going to be teaching you principles and key details, everything is in the help file already. If you know what to look for you rather than what to do your knowledge is portable and future proof.

It worked, and the evils went from 50/50 to 98/2. Some people just don’t get it.

The point of this longer than expected answer is, motivation for learning comes from seeing the results. That’s why switching back and forth between high level successes and low level fundamentals is best. For a very few, learning about circuits is, in itself, reinforcing. These are like the people that enjoy learning math for nothing more than knowing it.

The vast majority of people are motivated by tangible success, things happening in the world, and that’s what makes Arduino so powerful. Taking sensors and actuators and then writing a program that actually changes the world is fascinating and satisfying. Putting in learning circuits along the way is very good, because they are linked to the practical outcomes.

But in the end, I can see nothing wrong with wanting nothing more than to know how to connect modules to a development board and write code that does something you imagined. This is just fine.
 

MrChips

Joined Oct 2, 2009
30,712
These are all interesting points of view and good food for thought:

1) Start with the fundamentals
2) Start in the middle
3) Start one step shy of where I need to be
4) Start at the end point.

I find it interesting that some progressive university level engineering programs start at step (4).
The idea is to present a complex problem up front and then set students on the journey so that they can appreciate what needs to be learned to order to reach their final objective.
 

SamR

Joined Mar 19, 2019
5,031
use Arduino hardware products in production systems that are expected to be up 24/7 for decades.
That was the argument that went on in the Automation Systems and CAD arena about using Windows platforms years ago. They were entrenched on using 200kUSD Engineering Workstations (mini mainframes) running Linux and very expensive per seat applications and it was blasphemy to even suggest using a 2kUSD Windows platform instead. But it was done, and survived, and grew in popularity to become the majority of the market today. But, to survive on the plant floor it has to be "hardened" to survive EM noise and dropouts, dust, dirt, and extremes in temperature. Some of that can be overcome with uninterruptible power supplies and locating in HVAC controled environments. That is what is going on now. Plant Engineers don't build systems from components, they buy ruggedized equipment that can survive in their harsh environments and are easily programmed. 20 years ago, the trend towards "Micro PLCs" was in vogue. Moving away from octal based relay cabinets to small DIN rail mounted systems that took up much less space and point for point were cheaper and more reliable. I can see Arduino going the same way and apparently there are companies building those systems today for installation.
 

nsaspook

Joined Aug 27, 2009
13,084
...

But in the end, I can see nothing wrong with wanting nothing more than to know how to connect modules to a development board and write code that does something you imagined. This is just fine.
I agree that that's fine and good for personal projects or a school related learning experience but don't ask me you hire you for even a simple actual industrial controller design job until you at least start taking the steps to understand why the dev board was designed the way it was and why the API and libraries used were designed and coded.
 

djsfantasi

Joined Apr 11, 2010
9,156
but don't ask me you hire you for even a simple actual industrial controller design job until you at least start taking the steps to understand why the dev board was designed the way it was and why the API and libraries used were designed and coded
I don’t mean to be argumentative here, but consider this. Many times in the past a lack of understanding of what’s possible and the current technology have made some of the greatest advances possible.

“Man will never fly.”
“Travel to the moon is impossible…”
“Touch Tone phones will never catch on!” (A personal experience)
“It’s impossible to hold a computer in your hand!”

“Hold my beer!”
 

nsaspook

Joined Aug 27, 2009
13,084
That was the argument that went on in the Automation Systems and CAD arena about using Windows platforms years ago. They were entrenched on using 200kUSD Engineering Workstations (mini mainframes) running Linux and very expensive per seat applications and it was blasphemy to even suggest using a 2kUSD Windows platform instead. But it was done, and survived, and grew in popularity to become the majority of the market today. But, to survive on the plant floor it has to be "hardened" to survive EM noise and dropouts, dust, dirt, and extremes in temperature. Some of that can be overcome with uninterruptible power supplies and locating in HVAC controled environments. That is what is going on now. Plant Engineers don't build systems from components, they buy ruggedized equipment that can survive in their harsh environments and are easily programmed. 20 years ago, the trend towards "Micro PLCs" was in vogue. Moving away from octal based relay cabinets to small DIN rail mounted systems that took up much less space and point for point were cheaper and more reliable. I can see Arduino going the same way and apparently there are companies building those systems today for installation.
You're right, time marches on but IMO I just don't see industrial strength Arduino systems as the future of plant automation. We are still running VME based systems from decades ago because there were designed to run for decades in harsh conditions 24/7. When run with nice uninterruptible power supplies and located in HVAC controled environments they practically run forever.

https://www.rugged-circuits.com/10-ways-to-destroy-an-arduino
 

nsaspook

Joined Aug 27, 2009
13,084
I don’t mean to be argumentative here, but consider this. Many times in the past a lack of understanding of what’s possible and the current technology have made some of the greatest advances possible.

“Man will never fly.”
“Travel to the moon is impossible…”
“Touch Tone phones will never catch on!” (A personal experience)
“It’s impossible to hold a computer in your hand!”

“Hold my beer!”
That's great for science and research but not for a factory floor. We still use pagers for emergency factory communications because that infrastructure is bullet-proof.
 

MrChips

Joined Oct 2, 2009
30,712
I think that the discussion is not about the latest technology in vogue but about one’s knowledge required in order to perform a given task competently.
 

SamR

Joined Mar 19, 2019
5,031
don't ask me you hire you for even a simple actual industrial controller design job until you at least start taking the steps to understand why the dev board was designed the way it was and why the API and libraries used were designed and coded.
Such is the life of the Plant Control Systems Engineer. You get thrown to the wolves. You don't have the luxury of knowing what's under the hood, you simply interface System X to various sensors and controllers. The Chemical Engineer develops the Process Flow Diagram, then the Instrument Engineer develops the specifications for the various control sensors and controllers and makes the Engineering Flow Diagram, and then the Control Engineer has to design the racks and modules to interface with the field instruments and design the Operator Faceplates and configure all the controls in the Control System. By the time it got to me, it was all pretty much decided upon and up to me to make it work. I didn't need to know (it was proprietary anyways) how it did it, only what it did and what the limitations were.
 

nsaspook

Joined Aug 27, 2009
13,084
Such is the life of the Plant Control Systems Engineer. You get thrown to the wolves. You don't have the luxury of knowing what's under the hood, you simply interface System X to various sensors and controllers. The Chemical Engineer develops the Process Flow Diagram, then the Instrument Engineer develops the specifications for the various control sensors and controllers and makes the Engineering Flow Diagram, and then the Control Engineer has to design the racks and modules to interface with the field instruments and design the Operator Faceplates and configure all the controls in the Control System. By the time it got to me, it was all pretty much decided upon and up to me to make it work. I didn't need to know (it was proprietary anyways) how it did it, only what it did and what the limitations were.
That's one reason I'm designing (all hardware, software and interface specifications) internal products to have total control of the hardware and software on hopefully stable platforms. For instance, I've converted sensor interfaces to prototypes on a PIC32 Arduino compatible board (programmed using XC32 and MPLABX) for testing and certification of operation and then converted the hardware baseline to a modern PIC32 custom PCB(s) with capabilities and features far beyond the classic Arduino environment processing. With an experienced embedded developer the more bare-metal software approach is just as fast and allows for much better utilization of advanced controller resources for tasks.
PXL_20220825_221515914.jpgPXL_20220825_211327302.jpg

The whole point of the Arduino IDE is to make the platform easier for beginners to use. There is a proper time and place for it.
 
Last edited:

SamR

Joined Mar 19, 2019
5,031
I can see a niche for an industrial small microprocessor, whether it be Arduino, Pi, or Brand X. When Allen-Bradley came out with their SLC 100 PLC it was cheap, limited in I/O, and wildly popular because it was just that. But it still operates as a simple ladder logic controller with timers and counters available. No analog capability at all and no visual graphic outputs other than indicator lamps. That opens up the niche for small limited I/O analog and digital controllers with some limited graphics availability. If I can have that cheaper than an industrial PC running a control system with full screen graphics and interfaced to a rack of I/O cards for field instrument terminations, I could definitely see a market for it on small package remote operations. It also has connectivity so if I want to monitor its remote operation in the area control room's Distributed Control System and tie a few alarms set points to it so the area operator can be alerted to its need for attention I would be very happy to have it. It's called scalability, sometimes you need a tack hammer and sometimes a sledgehammer and sometimes an excavator with a hydraulic jackhammer mounted on its boom.
 

djsfantasi

Joined Apr 11, 2010
9,156
The whole point of the Arduino IDE is to make the platform easier for beginners to use. There is a proper time and place for it.
But that’s not the only point. I admit industrial control may not be an appropriate platform. But being easier for beginners to use may not be the whole point.

Admittedly, I started with the Arduino and I’m beginning to move on to other platforms. But as a programmer first and an electronics hobbyist second, I’ve discovered there is much more than beginner projects that can be accomplished with the Arduino environment.

If you weren’t aware, I’ve developed a proprietary control language - AnCode(tm) - to control advanced animatronics. It includes technology to automate lifelike movements upon which individual actions are superimposed - ButAlive(tm). (It’s similar to professional puppeteer Steve Axtell’s ActAlive technology.) Plus, AnCode allows several animatronics to collaborate by coordinating their actions over a network. It manages voices of the animatronics including synchronizing mouth movements. Motions can be created by up to 255 servos. Programming does not require uploading new code to the Arduinos, simplifying maintenance and creating new shows.

And the AnCode run-time runs on an Arduino Mega with two+ shields. The only reason a Mega is used is memory. Most GPIO and advanced features are available for future features. (All identified trademarks are owned by me.)

I propose this is not a beginner project. It is an Arduino environment commercial product.

UPDATE: nsaspook, I may have misinterpreted your remark. But the rest of this post is valid.
 
Last edited:

bidrohini

Joined Jul 29, 2022
190
In my university electronics and computer program, students were tasked with designing and creating an ultrasonic range finder without using an MCU.

Why the restriction?

Because the MCU solution was coming up in the following semester.
Yeah right. This is a quite common case.
 

DNA Robotics

Joined Jun 13, 2014
647
I love Arduinos. Compared to PICs, they are too easy.
This topic reminded me…
I learned programming with MS Dos, GW Basic. “Hello World” was a snap and it all made sense. Even with assembly to speed up subroutines. I got pretty good at it.
All of a sudden, I wanted to write an elaborate 3-D Windows program, using C++.
I found out you needed to learn a whole lot before you could do anything.
Talk about a learning curve / cliff.
I felt sorry for anyone starting there with no programming experience.
 
Last edited:

metermannd

Joined Oct 25, 2020
343
And then there are those who buy an Arduino module for a project, find THE official forum, and start asking questions only to get brutally shot down by the regulars there just because they can.
 
Top