Learning Arduino - Page 1
Forum section: electronics / general

author: WaveyDipole
author_rank: Frequent Contributor
timestamp: September 12, 2016, 11:48:47 am
content: Apologies if this should have been posted in Microcontrolers, but it is also beginners question!I have a good programming background and am reasonably competent with electronics and would like to get started with Arduino. I was thinking of purchasing the official starter kit in order to educate myself, although there seems to be a number of cheaper kits on the market so I'm not sure which one to go with. I was also wondering whether there is any difference between Arduino and Genuino, or whether it is worth considering another microcontroller platform? Also, can the standard UNO v3 board program an ATMEGA16A controller? I have one with something on it and would like to examine and possibly improve what it contains.

author: klunkerbus
author_rank: Unknown
timestamp: September 12, 2016, 12:56:34 pm
content: The starter kits will vary mostly in what projects they support and in the quality of the documentation.As I understand it, Arduino has opted to rebrand their products in Europe as Genuino. US products are still produced under Arduino. So, they're the same thing.If you don't have the source code for the ATMEGA16A controller, you're wasting your time trying to read the program out of it. The AVR chips store the program as executable machine code, not something like Basic that can be read, understood, and modified.

author: rstofer
author_rank: Super Contributor
timestamp: September 12, 2016, 01:09:57 pm
content: If you want to know more about the 'Arduino trademark dispute', Google for it.If you buy one of the starter kits, there will be parts to build a variety of projects. This is a nice way to get started. There is a ton of sample code included with the IDE and the Internet is full of projects, all of which gets you on your way with your own projects.The documentation for Arduino is excellent and the platform is a lot more approachable than something like the STM32F4xx boards.

author: MosherIV
author_rank: Super Contributor
timestamp: September 12, 2016, 02:20:06 pm
content: HiI have run a couple of Arduino beginners courses based on the ARDX kit from herehttp://www.oomlout.com/a/Based around the Arduino UnoVery easy to follow for absolute beginners

author: alanb
author_rank: Frequent Contributor
timestamp: September 12, 2016, 03:32:11 pm
content: if you have a programming background you may prefer developing in Microsoft Visual Studio with the Arduino (Visual Micro) plug in installed. Both free at the starter level.

author: klunkerbus
author_rank: Unknown
timestamp: September 12, 2016, 03:42:12 pm
content: Yeah, I also like the ARDX kit. I couldn't think of the name of it when drafting my first response. One of my grown daughters asked for help in experimenting with Arduino. Looking around at various kits for her, the ARDX seemed to stand out for use by a non-electronics, non-programmer beginner.One place where it is available ishttps://www.adafruit.com/product/170. I ended up not purchasing the full kit. I purchased the mounting plate and breadboard, available separately from AdaFruit, and pieced together a subset of the kit using parts I had on hand for her to start with. It took a bit to scale my printouts of the wire layouts so they'd match the holes in the breadboard, but that's no big deal.EDIT: The ARDX is available in the UK from places like Amazon.uk. I listed Adafruit because it goes beyond all other sites I've looked at for ARDX as far as a description, component list, wire layouts, and the manual all available through their site. I only had to go to oomlout for the source code files.

author: MosherIV
author_rank: Super Contributor
timestamp: September 12, 2016, 03:48:03 pm
content: The OP is UK based.The ARDX kit is available from the UK sitewww.oomlout.co.ukIt is a bit anoying that the UK site is just about selling and has not links to the training material on the .com site.

author: WaveyDipole
author_rank: Frequent Contributor
timestamp: September 12, 2016, 05:10:45 pm
content: Thanks for the replies so far.Ok, I do not have the source code for whatever is on my ATMEGA16A chip so it looks like unless I wanted to work in machine code, then I will not be able to do much with this.I have just been reading about the Arduino vs Arduino legal issues and find this very unfortunate for the community. I am inclined to walk away from Arduino and focus on another platform instead. I had a look at the oomlaut site, but everything there (both US and UK) appears to be out of stock?I have noticed that there are boards on eBay for very little money and even the prototyping board (breadboard) can be purchased far cheaper than from form Maplin. I am considering also maybe the Teensy boards. I couldn't find anything related to Wiring. Are there any boards that support this?

author: rrinker
author_rank: Super Contributor
timestamp: September 12, 2016, 05:37:10 pm
content: One thing to keep in mind is that the various experiments in most of the Arduino starter kits mirrors the information given on the Arduino home page. Heck, the sketches are pre-installed with the IDE, for the most part you don't even have to type in the code. The real learning comes in thinking of ways to take each basic experiment further, and trying to implement your idea. There are plenty of people who lose interest early on (not just an Arduino thing), such as after the basic blink an LED. That one doesn't even require any external parts, the LED is already on most Arduino variants. The next step is t modify the setup and make it do something similar but not exactly the same. Maybe double blinks. Or add more LEDs and blink in patterns. If you are not a programmer, small steps like this will help you get a feel for why you use certain statements in certain orders to make a specific thing happen with the hardware. The tutorials available for free generally follow this type of pattern, building on the previous example. Such as moving to the basic button reading. By this time, you already know how to turn on an LED, what commands are needed to make this happen. So now the new thing is thrown in - reading an input pin.If you are a programmer but new to the hardware side, you may find it tedious wiring up the circuits If you understand the hardware but are not a programmer, getting the code right is going to be the hard part. Especially if you are not an experienced coder, don't jump right into complex projects. If you already know C/C++, you might be able to decipher a complex application, but if this is all new to you, start with the simpler examples and get a feel for how building blocks of small modules go together to make a larger more complex application.This is all probably about as useless as, well, pick your favorite. My learning is mostly self-directed. I'm an EE by degree but I've never practiced in the field, most any circuits I've designed and built have been on a hobby basis. I've been programming in various languages for nearly 40 years, since I was 11 and learned BASIC on a TRS-80 Model 1. But I don't make a living as a programmer, either. I do SOME development work for work, but most of the things I've written have been for hobby and personal use. I'm fairly new to Arduino myself, but most of the snags I've hit have been quirks of the environment or stupid human tricks like having the current limit of my power supply set lower than the design I was trying to test required, and not even noticing the voltage drop and the constant current light being lit.

author: rstofer
author_rank: Super Contributor
timestamp: September 12, 2016, 05:56:17 pm
content: Quote from: WaveyDipole on September 12, 2016, 05:10:45 pmArduino, in one form or another, will be around forever. Other than the Parallax Basic Stamp, it is the best documented system on the market. There are plug-in shields to do just about anything. It is a PERFECT place to start.I have used the Teensy and a number of other boards. All have pluses and minuses but none are as fully documented as the Stamp or Arduino. I like the mbed platform (the original LP1768 version), I like their online toolchain, I like everything about them. But it is at least an order of magnitude harder to get started. Then, when the STM32Fxxx comes up, they are yet another order of magnitude harder. They are NOT for beginners.When I want to knock out something real quick to try an idea, I reach for my Arduino UNO, I don't reach for my STM32F's. Even if Arduino (or whoever they really are) decide to quit manufacturing boards, the Chinese will still be making copies. Somebody, somewhere, will tap into this platform for the next decade.For its intended goal of allowing artists to do mechatronics, the Arduino is superb.http://howtomechatronics.com/tutorials/arduino/

author: DrMag
author_rank: Regular Contributor
timestamp: September 12, 2016, 06:23:36 pm
content: QuoteWhat are you really looking for in a platform? Do you just want to make things happen, or do you have any interest in really understanding how the chip works? If you're inclined to the latter at all, I'd suggest looking elsewhere. My (admittedly limited, for this very reason) experience with Arduino was frustrating, because so much about what was really going on was abstracted away, and the coding quality of all the tutorials/examples I was looking at was abysmal. I also didn't have any interest in the existing shields or whatever, because I wanted to learn to do it myself.For me, I ended up working with the MSP430, and I've really enjoyed it.TI is having a sale right now, where buying one of their launchpads nets you a free license to Code Composer Studio. Technically, you could use CCS at no cost anyway, as long as your compiled code was never more than 16 kB--fine for the small chips the launchpad comes with. But having that license can be nice, if you like the CCS environment and ever want to work with bigger chips and projects. What I found in the MSP430 that was lacking in Arduino was a simple architecture that I could understand, which has taught me a great deal about what a microcontroller does in general. I also really enjoy the low-power aspect of it.But it's not perfect for all things, and that's really one of the most important things to learn about microcontrollers--eventually you'll need to be familiar with more than one device and be able to choose the right tool for the job. Having a solid understanding from your first platform makes learning the others much easier, in my experience.Edit: I should also point out that you can program AVRs directly and not ever deal with Arduino--which can have the same benefit about understanding the chip itself. So buying an Arduino doesn't mean you *have* to use Arduino IDE for everything you do.So what are your goals with jumping into the hardware side of things?

author: macboy
author_rank: Super Contributor
timestamp: September 12, 2016, 06:28:28 pm
content: I'd recommend an Arduino UNOclone. Buy from your pick of sources, ebay, aliexpress, or a domestic reseller. You will pay between $3 and $10 depending on source. That is much much less than the official Arduino boards. I'd also recommend "Nano" clones, these are almost identical to UNO (same microcontroller) but smaller. The Mini and Micro are not quite the same.Arduino hardware is all open-sourced, which is what makes these clones both possible and morally acceptable. Some people think you shouldn't use the Arduino software IDE with these clones. Let's keep in mind that the Arduino folks did not invent that either. They got it from the open sourced environment Processing/Wiring and added very little to it, and it remains completely open-source. So if your budget is limited, don't be afraid to stretch it by purchasing inexpensive clones. Beginners do make mistakes, and burning out a $40 genuine Arduino is no fun. Losing a $3 clone is a relatively minor inconvenience.

author: klunkerbus
author_rank: Unknown
timestamp: September 12, 2016, 07:36:51 pm
content: DrMag and macboy beat me to some of my follow-up. I use Arduino-compatible hardware all the time, but never use the Arduino IDE. WaveyDipole, if you have much of a programming background you'll likely grow weary of the Arduino IDE quickly. The development environment I use is Atmel Studio with an AVRISPmkII programming dongle (both provided by the company that sources the AVR parts used on the Uno and many other Arduino boards). This means I blow away the bootloader that is preprogrammed into the ATMEGA328P processor and don't use the associated USB interface, but I don't care.I use the Arduino-compatible hardware because it is cheap. Far cheaper than I could build a board by myself. Although I don't use the Arduino IDE at all, I do frequently search for Arduino software when I' trying to do something new. It's almost a sure bet that no matter what kind of controller-based project you want to do, someone somewhere has already done it and posted information about it. Try it. Google "Arduino fish finder", "Arduino halloween prop", "Arduino holiday lights", or whatever else suits your fancy. Looking at people's source code is often a laugh, but it quite often provides at least a conceptual approach that I can go off and code for real, optimized in however my project needs it to be.EDIT: Starting out with the Arduino IDE gives you simplicity that's hard to beat. It's admittedly tougher to get that first project running in something like Atmel Studio, but there are resources out there that can help. The avrFreaks forum, for example, can be argued as invaluable.

author: Bukurat
author_rank: Regular Contributor
timestamp: September 18, 2016, 06:37:04 am
content: I use Eclipse with an Arduino plugin. This gives me all the eclipse tools, access to all the library code from the IDE and more control than the Arduino IDE.The one I have running on both windows and Linux is Sloeber. This is a complete package ready to install and run.http://eclipse.baeyens.it/has hdetails and the install. Jan Baeyens originally wrote a plugin that called the Arduino IDE and since then has added to it so that it completely replaces the Arduino IDE.

author: dannyf
author_rank: Super Contributor
timestamp: September 18, 2016, 11:31:55 am
content: QuotePractically identical with minimum difference.As to the particular boards you may with, it depends on what you want to do. I tend to pick the generic form factor ones for the shields, or dip ones for size. If you want to do analog, pick atmega32u-based arduino.

author: Buriedcode
author_rank: Super Contributor
timestamp: September 19, 2016, 12:47:34 am
content: I too have noticed the sheer number of boards, form factors, and clones.A standard UNO compatible board 5V, 16MHz, is cheap, and there are many many 'shields' available for it. This makes learning different peripherals and 'add on modules' easy - plug'n' play. LCD's, switches, RF stuff, most shields will have buffers on them if they're interfacing with 3.3V logic so you won't have to worry about level conversion.As for 'other microcontrollers', I've used PIC, AVR, ARM, MSP... frankly nothing is cheaper and easier than an Arduino (AVR), the sheer popularity has driven down prices, meant many have contributed hundreds of libraries and is a great introduction to embedded programming/hardware. I'll use others depending on the appication but very often develop on an Arduino purely because its so quick to test out ideas.I would start off with the Arduino IDE (C++) as its the quickest way to just 'write code' and get things up and running - you can use the same hardware programming bare-metal on AVR studio in C later on.Also, as mentioned it can be supported by visual studio too should you prefer that.As for decompiling firmware from a programmed chip. It can be done but its so much work it really isn't worth it. Any compiler would simply read the machine code and spit out assembly with non-intuitive labels and var names that can bare no resemblance what-so-ever to the original C it was written in (if it was written in C). I've done it on PIC's but they only have ~40 instructions.

author: ebclr
author_rank: Super Contributor
timestamp: September 25, 2016, 08:30:01 pm
content: If you want to learn arduino and lot's morehttp://makezine.com/2015/11/17/xlr8-project-blends-fpga-speed-arduino-coding/This the most expensive arduino available, But you can do much much more than a regular Arduino, It's a foot on the nice words Arduino and Fpga

author: WaveyDipole
author_rank: Frequent Contributor
timestamp: October 09, 2016, 06:44:38 pm
content: Quote from: DrMag on September 12, 2016, 06:23:36 pmQuote from: DrMag on September 12, 2016, 06:23:36 pmThese question have had me thinking, so much so that I haven't been back to this thread for a while.I became aware of Arduino a long time ago when I saw bits with the brand in Maplins. As I mentioned, I have considerable programming knowledge, but I also dabble with Electronics on a hobby basis and do the occasional repair for friends and relatives. I have also built projects using circuits in magazines and even designed a couple of my own. When I first saw Arduino, my first thought was "what is the point of this?" So I did a bit of research and now understand its based around a programmable Micro-controller and various plugin modules or discrete parts can be added to make a project. Its main purpose seems to be prototyping although most Arduino based self assembly kits on eBay seem to be described by those in the know as 'toys' or 'cheap junk' so is it little more that a way for kids to learn electronics? I know there are a number of programming 'projects' on the Internet that can teach you the basics such as lighting up a LED or running a motor. Obviously the real challenge is to go beyond the basics and design practical circuits and after teaching myself the basics, that is where I would to aim.For example, I have a set up Russian gas display tubes from which I would like to build a clock and I thought maybe I could use the Arduino to prototype it. I did however notice that there seems to be a limit of 2k memory on board the processor chip, which seems rather limiting?So yes, I do want to make things happen, but I also want to understand how they happen - i.e. how it works. I'm not sure whether I have interest in the shields either. I don't know the platform well enough to make an informed choice, but I do know that whatever the board can do, I can, and would probably prefer to do myself. I don't need to by a lot of tutorial parts as I have a lot of spare bits and pieces lying around such as LEDs, resistors, transistors and diodes, even 7/8seg displays. I'm not really interested in automation or robots, which also seems to be a related theme.I thought I would combine two things I enjoy - programming and electronics and explore the platform and see what it can do in an effort to understand better what it is about. I have no prior experience with Micro-controllers. I am thinking that maybe my best option is to get a relatively cheap kit with the basics - Uno board, breadboard and jump wires and maybe a few bits, (perhaps for no more that £30) to - quite literally - play with it and see where it leads. I will either enjoy it and if I feel I want to pursue more advanced projects then I could invest in more advanced boards. On the other hand I may get bored with it, not see the point in pursuing it further and therefore abandon it, at which point, I haven't then spent too much learning. Even then, breadboard and leads would likely still come in handy anyway.I note with interest the suggested programming platforms. In addition to the Arduino IDE I might therefore give Eclipse a try.

author: Ian.M
author_rank: Super Contributor
timestamp: October 09, 2016, 07:38:33 pm
content: Start off with the Arduino IDE - it sucks if you are used to any more normal programmer's IDE, but all the introductory tutorial material refers to it. As soon as you get fed up with its obfuscation of the underlying C++ code compiled by GCC, readwhich tells you how to ditch the Arduino setup()/loop() and replace it with a vanilla C++ main() function. Personally I tend to stay very close to the C89 subset of the C++ language, with a few C99 features, as other embedded toolchains I use are still stuck at the C89 level and it avoids the brain-ache of having to remember exactly what's syntactically valid for each compilerI've posted my current hobby project: anArduino based VFD clockon this forum, and the current status is its running as a 24H HH:MM:SS clock with interrupt driven display multiplexing and keeping reasonably good time so I don't see any real problems getting your Russian Nixie clock project going - if I had suitable driver chips and a HT power supply already assembled, I could rip out the 7 segment software stuff and have it driving them with a couple of hours coding to rewrite my multiplexed SPI VDF driver and no changes to the main clock code.I'm not using much of the ATmega328P chip's resources, only 7% of the program memory, 39 bytes of globals (2% of that 2048 bytes RAM), and a few bytes of locals for each function - the heaviest user being main with 9 bytes of locals. With a little experience you can be extremely frugal with memory usage an a way that hasn't really been possible on PCs since the days when DOS was king.

author: imidis
author_rank: Frequent Contributor
timestamp: October 09, 2016, 09:43:07 pm
content: I bought an atmega 328p-pu for another project, but before using it in that I wanted to see hot the arduino translated from that, so hooked it up on the breadboard, programmed the bootloader with a usbasp then used a ch340g usb to serial to use the arduino ide. I found it helpful just in figuring out how the chips and everything work together. Not sure if that may interest you, but I did find it helpful, I have a few pro mini clones, but wanted to give that a shot.

author: rstofer
author_rank: Super Contributor
timestamp: October 09, 2016, 10:16:19 pm
content: We're just used to major computing power.Let's just reflect on the Arduino Mega: It has 256k of flash (8k used by bootloader) and only 8k of SRAM and it runs at 16 MHz.Contrast this with the IBM 1130 minicomputer I started out with in 1970: 8k words (16 bits) and running at 400 kHz.That little 1130 has a macro assembler, a Fortran compiler along with RPG, COBOL and APL. I don't know if COBOL and APL ran in the 8k version (there were 16k and 32k versions) but I personally used the assembler as well as the Fortran and RPG compilers. They all ran well.Given the number of GPIOs on the Mega, I would easily add 32k by 16 bit RAM and use it for data storage.There's a world of difference between a minicomputer and an Arduino but in terms of compute power, the Mega wins, hands down!Then there's the M0 Pro, a 32 bit Cortex M0, with 256k flash and 32k sram running at 48 MHz. It would blow the socks off that IBM 1130https://www.adafruit.com/products/2417https://en.wikipedia.org/wiki/IBM_1130Incidentally, I believe that 1130 got me through EE school! It had the IBM Electronic Circuit Analysis Program (ECAP) and a plotter. Bode' plots were a walk in the park! Analysis of active circuits and tuned circuits was a lot easier with ECAP than with a sliderule. The HP35 hadn't been invented yet!Yes, the Uno R3 is a little small but some pretty amazing projects will fit in that chip.For people coming into microcontrollers, I can't think of a better platform. Hardware is cheap, the toolchain is free (but upgrade to using Visual Studio for the IDE as soon as possible) and, most important of all, there is a ton of code out there and almost every conceivable project has already been built. Or at least there will be a starting point...Another thought: Skip Visual Studio and move right into Eclipse. You can use this IDE for just about everything. Ada language for PC or embedded, Fortran for college math problems, C/C++ for PC or embedded, Java or Python for PC and so on. One IDE platform for virtually everything you might want to do. It's really slick!

author: WaveyDipole
author_rank: Frequent Contributor
timestamp: October 10, 2016, 06:37:19 pm
content: Strangely enough I was just contemplating the Mega vs Uno. Other than reading that its more 'advanced' and has more output pins (hence presumably more control lines), I'm still a little hazy on the exact difference. I see there are kits based around both boards. Any comments on one vs the other? I don't mind being thrown in the 'deep end' a little. Is the Mega a 'better' investment for learning and particularly experimenting beyond the tutorials than the Uno? If I learn the Mega, are those skills and the code transferable to the Uno and Mini? I'm thinking that prototype working projects might be transferred to a Uno or Mini board long term, while the Mega board is used for development.PS, thanks for putting the computing power into perspective! Incidentally, that Alorium XLR8 board looks interesting, but seemingly still being crowd-sourced and not available yet. Its a USA based project so I would imagine it would also take a while to come to the UK. The TI board also seems to be on sale only in the US but not the UK. In addition, can't get the shipping costs without creating an account, but safe to say, after import taxes etc they would probably exceed the cost of the product. Thanks for the suggestions though. Its useful to see what else there is out there.

author: rstofer
author_rank: Super Contributor
timestamp: October 10, 2016, 07:10:34 pm
content: I looked at the Alorium and couldn't decide what to think. Apparently they are willing to provide modules (source?) but nothing on the core itself. It is nice that the core has floating point, this could be a real boon for animatronics and robotics. I would be very interested in the source for floating point and, though no benchmark was provided, it could turn out that the core is much faster than the regular chip.All in, I decided to wait and see.

author: westfw
author_rank: Super Contributor
timestamp: October 10, 2016, 10:54:51 pm
content: QuoteThe MEGA has more pins, more memory, and more peripherals, all because of using an different AVR chip.On the plus side, "more is better." On the minus side "Less is cheaper and more popular."Yes, most stuff transfers from one to the other.But I recommend that most beginners get an Uno.Most of the examples are shared code will be for the Uno.IMO, the Uno is "right-sized" - if you need a MEGA for your project, you should probably be considering other platforms a lot more seriously. You need a better editor, better debugging, more RAM and a faster CPU, etc, etc. (Note that the MEGA is *not* "faster than an Uno.")Various AVR things get a bit "wonky" above 64k of program memory. The chip and compiler nominally support 16bit pointers, and you start running into weird hacks and "requirements" above that size.

author: WaveyDipole
author_rank: Frequent Contributor
timestamp: October 14, 2016, 11:23:58 am
content: Well I managed to find an ARDX kit based on the UNO which is on its way to me. It was advertised by a private seller for £36 and as being new, so I guess it was perhaps puchased by them but unused. They accepted £30 for it, so I have met my target budget! It appears to contain an official Arduino UNO (not sure whether its R3) board, which is also a bonus - so I will be mindful not to burn it out while experimenting!I just wanted to say thanks for all the feedback. It has been very helpful, even educational.