Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

The Arduino dilemma

Status
Not open for further replies.

Wond3rboy

Member
Hello

I know this question has been asked many times before but I wanted to ask away again. I am about to teach a small microcontrollers class at a college. I obviously want to work with PIC microcontrollers as I have experience with them. We have some programmers available, some chips and other required hardware. However, another part of me suggests that I should go with the Arduino which is easy to understand and fast to develop applications with. But, since this is a microcontrollers course using the Arduino means I am depriving them of basic microcontroller fundamentals such as architectures, ports, interrupts, configuration of modules, etc.

About the course: It is supposed to be a thorough course about microcontrollers with discussion on architecutre, port operations, timers, counters, interrupts, specific modules, stepper and servo motor control running for 16 weeks with 3 hours each week for lab sessions and 2 hours for lecturing. Some students might not have an electronics background.


I am really torn between the two choices. Since most of you have more experience then me in working with them as well as instructing, can you guys pitch in?

Thanks very much!
 
... Some students might not have an electronics background.

That pretty much says you should use the Arduino. Get the Atmel data sheet for the processor, and use that to teach the hardware.
 
Thanks mike. That makes sense

I guess a part of me wanted students to work on the PIC. I have an upcoming class after this with students who have a background in electronics, I intend to work with PICs there. Do you still suggest the same there?

I ask this sincet me wanting to introduce PICs has a personal motivation and therefore my decision is biased.
 
I am depriving them of basic microcontroller fundamentals such as architectures, ports, interrupts, configuration of modules, etc.

I don't think you are **broken link removed**

Architecture is almost a separate course. You still have to cover pull ups, pull downs and basic interfacing as part of the fundamentals You also have to cover number representations and sign extension.

I don;t see any reason why not to use the Arduino, but you do have to bring in the ARM architecture vs an environment. The Mbed environment is another example that CAN use the ARM processor.
 
Last edited by a moderator:
If the PIC had the same tool chain and USB bootloader as the Arduino, I'd be more inclined to use it. I suppose you could look at the Basic w/bootloader that is available for the PIC, but even the crippled C in the Arduino is better than that...
 
I think it's better to split into basic course and advance course. For basic course microcontroller, using Arduino is better. Arduino is easier and will raise the interest to learn electronics and microcontrollers. For advance course microcontroller, you can use PIC, AVR, STM,...etc.
 
I prefer the PIC because I have such a long and troubled relationship with it in the past.
Getting into Arduino felt - well - almost too easy.

I think Arduino is better for a beginners course because it has so much support, codes already supplied, support groups and forums.
If your students want to do homework at home, the Uno has its own programmer. Its easier to pay a little more from the start and have a platform which can do anything.
 
It is better to use Arduino if you want to teach "what a microcontroller can do".
It is better not to use Arduino if you want to teach "how microcontrollers work".
 
You have lecture and lab.
I have seen classes where the lectures went on for weeks, we got bored and lost interest.
I would have the class type in a "blink the LED" program for the first lab. Even it they don't understand. Those that get done fast can try to make the blink faster or slower. Or blink a different LED.
I believe part of learning is to jump in and try something. Some people learn best by lecture and some learn best by doing.
 
Thank you so much everyone for the replies. :)

ronsimpson that was one of the reasons I was considering the Arduino. I didn't want to bore the students off.

Arduino it is then!
 
I think it would be more apt to say you could be depriving them of basic microcontroller fundamentals, the arduino is a microcontroller, you can program an arduino in a similar manner to a pic, I think the point you were making is that you can overlook some of the fundamentals easily with an arduino as it was designed to make development easy, and it does that well, little knowledge is needed to get some things working, you can however write code on a lower level.
If you structure the coursework well you will be able to convey as many fundamentals with a arduino as with a pic, in fact you can use the simplicity of the arduino to get students started, then go into the deeper mechanics of the chip.
 
Arduino is not a microcontroller.. this is the thing that will confuse your students if you go with Arduino. Arduino is a microcontroller based Development System. IDE and hardware. You do not have to know anything about the microcontroller on the Arduino board.. you do not need to know anything about the microcontroller peripherals. Just write a line of code and everything works! Nothing to learn.

Even if you can write code on lower lever for Arduino, I think the whole Arduino concept will be confusing to students. With Arduino you are not teaching microcontrollers, you are teaching Arduino IDE, bootloader, hardware and microcontrollers. I think you should only teach microcontrollers and programming (not Arduino libraries).

If you like Arduino, maybe the next class should be Lego Mindstorms. Are you teaching them to be Lego-Engineers or Engineers?
 
Last edited:
  • Like
Reactions: 3v0
Thanks all for your valuable input.

Yes, I intend to give them lectures about the AVR chip on the Arduiono Mega (since we have them available here). Some basics about speed, ports, interrupts (later on). I would like to dig deep in to the module stuff too (analog comparators, pulse measurement [ I just saw a function which exists] etc). Hopefully I will be able to convey it properly. Will leave external libraries at the very end after I am done with steppers, servos, 7 segments, LCDs etc.
 
Given that these people already know c I would go with PIC.

Contact the edu people at microchip and they will give you a hand with materials. Not sure to what degree as it has been years since I taught microcontroller. They provided chips and were in the process of gathering educational stuff so I expect by now they have a lab manual and curriculum you can print.
 
Hello,

Why would a course on microcontroller(s) (note the 's' in parens) focus on ONE particular microcontroller? The key to understanding the plural form is understanding each of their strengths and weaknesses. From what i can see the PIC and AVR are the most common, so it would make sense to start with them. Pick a low end PIC and low end AVR to teach the micro's themselves, then choose Arduino (and maybe AVR Studio) and PicKit3 to teach how the programmers for each are used. It is important to learn about the development environments so they will learn the development environments as well as the micro's themselves. You can not program a uC chip without knowing how the dev environment for that chip works.

I have worked with both types of uC. Lately i have been using the Atmega 328 (flat and DIP packages) using the Arduino tools. I can tell you that the Arduino environment is not complete, so sometimes it is necessary to dig into the data sheet for the uC chip and find out how to do something that is not pre thought out by the Arduino people. For example, if you want to use an 8 bit port fast you have to know how to set up the chip itself as there is no library function for that. Alternately you'd have to use instructions that set every pin one by one, which takes a lot of time, so you need to get into the data sheet for that which teaches how ports work. For another example, if you want to measure the +5v power line to the 328 chip WITHOUT any added wiring to the board, you have to dig into the data sheet and find out how to set up the ADC to do that as there is no pre built code to do that either.

So my vote goes for "both" or perhaps more, so they also get a feel for several types of chips and available programming tools, and so then can make informed decisions later in life when it comes time to choose one for a project.
 
Remember!!!! You don't have to use the Arduino environment!!! You can just use the Arduino as an AVR dev board!!! I use the pinguino board and immediately remove the pinguino bootloader and use it as a MikroE dev board...
 
If you're not going to go with the arduino env why go with the arduino at all? The only advantage you have left is the shield socket.

With the PIC you can use ICD and ICSP instead of a boot loader. Students seeing code execute is a big advantage.

Microchip supports education. He may be able to get some help there.
When I was teaching Microchip was gathering together educational materials for redistribution and provided free uC's. Not sure what they are up to now.

Atmel did not even bother to reply to emails.

At the intro level the sort of micro used really is not all that important. In a single course there is barely enough time to teach about one. I would not want to have to try to teach about several.
 
3v0 hit the nail on the head. Customer support is extremely important when one is going through the design process of any device.
 
Here are two different ideas:
1) Take one micro and go deep into it. Look at all the details.
2) Take two very different micros with two different software(s) and do the labs for both. (reason: God knows then you get out of school and into the real world your next micro will be something very different, and you need to know how to jump to "different".)
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top