Sign up ×
Arduino Stack Exchange is a question and answer site for developers of open-source hardware and software that is compatible with Arduino. It's 100% free, no registration required.

I'm a computer systems engineering student and was planning to buy an Arduino to learn embedded C programming. After researching I found mention that an Arduino may not be a good choice for a beginner that wants to learn about programming embedded systems using C.

I'm not sure if that is true, can an Arduino be programmed in C without using C++ and the other included class libraries? I'd prefer to learn how to program things at a fairly low level and not rely on libraries that hide details of the underlying hardware. Can the Arduino be used as a general AVR / microcontroller development platform to learn embedded C programming?

share|improve this question

migrated from electronics.stackexchange.com Sep 29 '14 at 23:42

This question came from our site for electronics and electrical engineering professionals, students, and enthusiasts.

    
Well my programming and electronics skills are quite good (i'm third year student Computer system engineering) got good knowledge in computer architecture, but no experience in embedded systems.So i want to do projects which would teach me about them and how to code for them. –  R3ack Sep 25 '14 at 5:15
    
The format of ee.se is more like a wiki than a forum. The aim is to develop a set of good, specific, questions, which can have fact or evidence based answers. So the usual approach is to update the question with extra information in response to comments. Unfortunately, your question still seems vague, and hence answers would be based on opinion, which is a poor fit to ee.se. Questions of the form, "I want to make an XYZ, my experience is ..., I plan to use an Arduino and an ABC, I have researched the web, found http... and http... however, I still need help with ..." is a better fit. –  gbulmer Sep 25 '14 at 11:41
    
I had a bit of a problem following the title at first, but by "Type-C" do you mean something that can run C code for learning embedded systems? If so let me know and I might be able to edit the question into something more answerable. –  PeterJ Sep 25 '14 at 12:40
    
yeah , it's for c language –  R3ack Sep 25 '14 at 13:26
4  
Yes, an Arduino can be programmed in ordinary C - use of the IDE and the quasi-C++ libraries is entirely optional, one is free to treat the hardware as an ATmega development board and use avr-gcc (or similar) directly, using either the arduino style (optiboot or whatever) bootloader or some other method (ISP, etc) to load the results into the chip. –  Chris Stratton Sep 25 '14 at 15:50

1 Answer 1

The Arduino is a great place to start embedded C programming. You can use both C and CPP. There are tons of tutorials online and there are a bunch of books available. In addition there are lots of libraries available on GIT HUB for interfacing with all types of hardware like RF24 Wireless Transceivers.

If you want to go into more low level programming, you can. For example, you can set all Port B pins to Output:

// the setup routine runs once when you press reset:
void setup() {                

  // initialize the digital pins as an output.
  DDRB = 0xff;
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.