How to start using AvrStudio, C code and Arduino

Hello to everybody, here you will encounter a simple introduction on how to make the jump from the arduino IDE to plain simple C code with no extra grease(from all those libs made by god know who).
First we will install AvrStudio, which is the official IDE from Atmel(the maker of the micro-controllers used in the arduinos), you can do the download right here:
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725
Then just scroll down until you see this line:
AVR Studio 4.18 (build 684) (116 MB, updated 11/09)
Thats the name of the IDE installer, you will need to register to be able to download but its fast and easy and its only a minor thing, then I recommend installing the SP3:
AVR Studio 4.18 SP3 (b716) (31 MB, updated 9/10)
And finally you will need to download the WinAvr that contains the C compiler that will be integrated into the AvrStudio.
http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download

After having downloaded the 3 files you can start installing then, first the AvrStudio file, the the AvrStudio SP3 file and finally the WinAvr, I recommend you to not change any install folder of any of this 3 installers or you may have problems with the compiler not being able to find some files.
And you are ready to enter the great world of embedded C programming.
If you want to follow this tutorial series without changing anything in your system I recommend you to create a folder called AVR in your root directory in C:/ or D:/, in my case I created it in C:/.

You can now start your AvrStudio, you should see this image:

After that you can click in “New Project” and the IDE should show you this window:

As you can see I already filled some of the text boxes and you should copy what I have done in  you window, as you can state the “Project Name” is blinky, tha famous hello world of the micro-controllers, its simple but its great to learn how to use the IDE and how to upload code using the avrdude, as you can also see, the “Initial File” is filled with the same text that the “Project Name” text box has inside, you should also enable the “Create initial file” and “Create folder”, this way the AvrStudio will create one folder for each new project that you create and will also create all the needed files inside that folder.
As we want to programm in C, you need to select the “AVR GCC” line in the “Project type” zone, and don’t forget to change the “Location” to your C:/AVR/ folder.
Now click “Next >>”, this will present you a new window:

As you can see in the image you should select “AVR Simulator 2 ” as the Debug platform and select the “Atmega328p” as your “Device”, because this is the chip present in the Arduino Duemilanove/Uno, after selecting this click in finish and the AvrStudio should present you with your fresh new and empty project ready to get some code in it:

Now we can just start writing down our code, but first lets do it using pseudo-code:

Infinite loop
Turn led on
wait 500ms
turn led off
wait 500ms

Pretty simple hey?
Now lets start to turn this into real code.

#include <avr/io.h>    //This contains definitions for all the registers locations and some other things, must always be included
#define F_CPU 16000000UL    //F_CPU tells the compiler that our crystal is an 16Mhz one so it can generate an accurate delay, must be declared above delay so delay knows what is the value of F_CPU
#include <util/delay.h>        //Contains some delay functions that will generate accurate delays of ms and us

int main(void){            //In ANSI C, the main function as always an int return and using void will give you an warning
while(1){            //This gives us an infinite loop, there should always be an infinite loop in your code, because micro-controllers cant return from main to anywhere and that will give you bad results and unpredicted behaviour
PORTB |= (1<<PB5);    //Turn led on, this is the led included in the arduino(digital pin 13)
_delay_ms(1000);    //Wait 1 second
PORTB &= ~(1<<PB5);        //Turn led off
_delay_ms(1000);    //Wait another second
}
return 1;
}

You can see in this image how to map the pins nomenclature used by arduino to real port names/values using this image:

There is yet one thing to do, can you see what’s missing in the code?
Well, we need to tell to our avr if the pin is an output or an input, using direct port access and the like, this is done using DDRx, where x is the port name(A,B,C or more if you have avr’s with many legs), in our case and as seen above we are using PORTB pin number 5, so the code will be:

DDRB |= (1<<PB5);

And our final code will be something just like this:

#include <avr/io.h>    //This contains definitions for all the registers locations and some other things, must always be included
#define F_CPU 16000000UL    //F_CPU tells the compiler that our crystal is an 16Mhz one so it can generate an accurate delay, must be declared above delay so delay knows what is the value of F_CPU
#include <util/delay.h>        //Contains some delay functions that will generate accurate delays of ms and us

int main(void){            //In ANSI C, the main function as always an int return and using void will give you an warning
DDRB |= (1<<PB5);        //Define digital pin13/PORTB5 as an output so we can blink our led
while(1){            //This gives us an infinite loop, there should always be an infinite loop in your code, because micro-controllers cant return from main to anywhere and that will give you bad results and unpredicted behaviour
PORTB |= (1<<PB5);    //Turn led on, this is the led included in the arduino(digital pin 13)
_delay_ms(1000);    //Wait 1 second
PORTB &= ~(1<<PB5);        //Turn led off
_delay_ms(1000);    //Wait another second
}
return 1;
}

Now you can just type in or copy and paste this code inside the AvrStudio text editor and press F7 that is the button that compiles/builds your code, this should compile without any error or warning, and as you can see in the bottom of the IDE this blinky only uses 172bytes of Flash memory, a lot less than the blinky generated by the arduino IDE.

My next tutorial will be about bitwise operators, so the |=, &=, << and other operators will soon be explained in great detail as they are very handy when you are making some embedded programming.

Now, lets upload our code, but how, there is no button that does this like the Arduino IDE does it, well you will need to use the command line and the avrdude program that is also present in the arduino IDE but its disguised.
To open you command line, and if you are using windows Vista or 7, just type Run in your Start bar, just like this(my images are in Portuguese):

Then in the Run window type “cmd” and press “Enter”/click “Ok”:

And there it is, the Command Line in all its glory:

Now, if you have created your AVR folder in the C:/ just like I advised type the following in your Command Line:

cd /
And press "Enter".
cd AVR
And press "Enter".
cd blinky
And press "Enter".
cd default
And press "Enter".

I know that you have not created the default folder, but this is an folder that is created by the AvrStudio when you compile/build your project and this is where the .hex file is located, this is done for all your projects and is always called default.
Using your Arduino IDE check what is your COM port as you will need that to use the avrdude to upload your .hex file to the arduino.
The generic command to upload code to your arduino using avrdude is this one:

avrdude -p m328p -c avrisp -P com* -b 57600 -F -U flash:w:your_hex_file.hex

In my case the com is com5 and the .hex file is called blinky.hex because the hex file that is generated as always the same name of the project, but if you are unsure just type:

dir

And press “Enter” in the command line and this will show what files are in the default folder.


If you are using an arduino that is not the duemilanove, but maybe the uno, the baud rate(-b 57600) is wrong, the same goes if you use an arduino mega the -p m328p that says what type of Avr is in the board is wrong to, but if you need help send me an email or just leave a comment.
So, to upload our fresh code type this(remember that your com port may be other than 5), and that avrdude is case sensitive, so if it throws you an error check your writing.
So the command line to upload the file in this case is:

avrdude -p m328p -c avrisp -P com5 -b 57600 -F -U flash:w:Blinky.hex

Now, when you press enter to upload your code you need to press the reset button in your Arduino because this simple command line will not activate the auto-reset feature, if you don’t press the reset button in time you will get an “Out of sync” error, but relax and just try again, you don’t need to be very fast, 1-2 seconds of delay between pushing “Enter” and pressing the reset button works fine for me and I never got an “Out of sync” error, if your upload is accomplished with success you should see this:

Now you can watch your Arduino blinking its led with a lot less code inside it and with an happy felling that you are now one step closer to be a better programmer and how things really work inside your arduino, and if you spot any error don’t hesitate about reporting it.
There will a series of tutorials covering all the common things used with an arduino: ADC, timers, interrupts, Serial comms, I2C, SPI, using flash to store big amounts of data, and some projects made by myself to show you even more things, stay tuned.

About these ads

74 responses to “How to start using AvrStudio, C code and Arduino

  1. Lili, the Princess

    Hello Capitan.
    Your Windouzzz should be in english.
    That’s all capitan! See you later at the station! *

  2. Hey, I am checking this blog using the phone and this appears to be kind of odd. Thought you’d wish to know. This is a great write-up nevertheless, did not mess that up.

    – David

  3. Great tutorial. Even better than most of the Arduino team itself.
    Olá, como vai? Sou brasileiro e trabalho nos Correios do Brasil com máquinas de triagem (Siemens, NEC, Alstom e Crisplant). Tenho conhecimento em liguagem c e em microeletrônica. Aqui em São Paulo temos um pequeno laboratório de eletrônica onde desenvolvemos algumas soluções pois os equipamentos com que trabalhamos já estão obsoletos (10 anos de uso ou mais) e não há no mercado peças para reposição. Por que não compramos máquinas novas? Burocracia de empresa estatal. Mas enfim, recentemente tenho trabalhado com programação embarcada, e procurando um projeto simples na Internet achei o Arduino, mas como a liguagem dele não é plain C e não me adaptei aos seus sketches, continuei em minhas pesquisas, e foi aí que achei seu excelente blog. Muito didático e elucidativo. Obrigado. Thank you for share your knowledge. Let me know if I can send you some pics of my handmade board. Abraço.

  4. Hi, great tutorial.

    Well, I tried to follow your instructions but I can’t upload my code to Arduino Mega 2560. I always get the “out of sync” error. What are the right parameter of avrdude for it to work properly?

    Thank you.

    • To use the avrdude you should modify it for the atmega2560 chip and also make sure that you are selecting the right com port, the avrdude command should be:
      avrdude -p m2560 -c avrisp -P comX -b 57600 -F -U flash:w:Blinky.hex

      Note that comX is your Arduino com port.

  5. Awesome tutorial! Thanks!
    All worked fine since I got this message:
    avrdude: verifying …
    avrdude: 172 bytes of flash verified
    avrdude: safemode: Fuses OK
    avrdude done. Thank you.
    BUT! But the problem is that the led isn’t blinking at all despite the successful flashing. Only the PWR led is on.
    Any ideas what may be the problem?
    Thank you!

    • It looks like it isnt programming the Arduino at all, can you show the complete output from avrdude?
      Are you copying and pasting the avrdude command to the command line or are you typing it, you may have done some mistake and forget the -F flag or something like that.

  6. Thank you for the quick reply!
    Here is the full message I receive.

    C:\AVR\default>avrdude -p m328p -c avrisp -P com3 -b 57600 -F -U flash:w:Blinky.hex
    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################### | 100% 0.06s

    avrdude: Device signature = 0x1e950f
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed (NOTE: This one here I wonder. Is it supposed to erase?)

    To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file “blinky.hex”
    avrdude: input file blinky.hex auto detected as Intel Hex
    avrdude: writing flash (172 bytes):

    Writing | #################################### | 100% 0.11s

    avrdude: 172 bytes of flash written
    avrdude: verifying flash memory against blinky.hex:
    avrdude: load data flash data from input file blinky.hex:
    avrdude: input file blinky.hex auto detected as Intel Hex
    avrdude: input file blinky.hex contains 172 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################## | 100% 0.10s

    avrdude: verifying …
    avrdude: 172 bytes of flash verified
    avrdude: safemode: Fuses OK
    avrdude done. Thank you.

    This is what I get.

  7. PROBLEM SOLVED!!!!!
    I have specified the wrong pin for my led. I have connected my led to pin 13 but in the code wrote 1, like in the examples above.

    int main(void) {
    DDRB |= (13<<PB3); Here! Instead of "1" I put "13" Same below.
    while(1) {
    PORTB |= (13<<PB3);
    _delay_ms(100);
    PORTB &= ~(13<<PB3);
    _delay_ms(100);
    }
    return 1;
    }
    Thank you once again! Looking forward to more great tutorials!

  8. Thanks for your well setout tutorial.

    You have not mentioned lock or fuse bits.
    If I have a 328 with the arduino boot loader what happens to it?

    Will avrdude upload of a hex file affect:

    26.5 Boot Loader Lock Bits

    The user can select:
    • To protect only the Boot Loader Flash section from a software update by the MCU.

    26.6 Entering the Boot Loader Program

    Alternatively,the Boot Reset Fuse can be programmed so that the Reset Vector is pointing to the Boot Flash
    start address after a reset. In this case, the Boot Loader is started after a reset. After the application
    code is loaded, the program can start executing the application code. Note that the fuses
    cannot be changed by the MCU itself. This means that once the Boot Reset Fuse is programmed,
    the Reset Vector will always point to the Boot Loader Reset and the fuse can only be
    changed through the serial or parallel programming interface.

    Boot Reset Fuse

    BOOTRST Reset Address
    1 Reset Vector = Application Reset (address 0x0000)
    0 Reset Vector = Boot Loader Reset

    That is do we lose the bootloader?

    • For all this tutorials I use an Arduino Duemilanove board, and that as the Arduino bootloader.
      The avrdude cant change the fuses of the Atmega chip via the serial bootloader, only using an Jtag, ISP or high voltage programmer enables access to the fuse bits.

      • Thanks for the answer.
        I understand now.
        You are copiling a hex file using AVR studio and then using avrdude and the arduino bootloader to upload .
        Can you go the other way.
        Say I have a good arduino sketch can I use the HEX file from the build
        and upload it using AVR studio(with ISP programmer) to a bare 328.

      • Yes, you can also do that.
        To know where the .hex file is hold Shift when you press the Verify sketch in the Arduino IDE, then go to that folder and copy the .hex file to another place because it will be buried in the temp folders.
        Then using the avrdude try this command:
        avrdude -c avrisp -p m328p -U flash:w:yourfile.hex

        If it doesn’t work try with avrispv2 instead of avrisp.

  9. I solved my problem with my Arduino Uno by changing baud rate to 115200 and after executed the avrdude command, i pressed reset button in Arduino Uno board!

    I am happy to realise that i can now practice C programming with AVR Studio suite by having Arduino Uno connected with USB :)

    First i got this error with AVRdude:

    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude done. Thank you.

    Then i just changed my command with 115200 baud rate as the following, pressed and right after that pressed button on Arduino board. And the miracle happened! :)

    avrdude -p m328p -c avrisp -P com16 -b 115200 -F -U flash:w:Blinky.hex

  10. Thanks a lot for your time.
    Best wishes for your site.

  11. Hi. Nice site: well documented, helpful. May I suggest two changes: first, add to your source code (before the while(1) loop):

    DDRB |= (1<<PB5); //set portB bit 5 as output

    and second, add to the avrdude command line:

    avrdude -c arduino -p m328p …

    for use w/ UNO board.

    Thanks!

  12. Hi and greetings from Portugal ;-)

    To automatically control the DTR line on the arduino Duemilanove, thus controlling the reset line (avoiding the need to press reset on the board before uploading hex file), instead of “avrisp” following the “-c” switch, use “arduino” and avrdude automatically asserts DTR line before uploading the hex file.

    So the line (in my case) was originally:

    avrdude -p m168 -c avrisp -P com8 -b 19200 -F -U flash:w:test.hex

    and became:

    avrdude -p m168 -c arduino -P com8 -b 19200 -F -U flash:w:test.hex

    (Tested with avrdude 5.10)

    Regards,
    Carlos Santos.

  13. hmmmm, guess that was more or less what Jon Edwards said, just saw it now :/

  14. I will be going through your tutorials. Looks fun so far!

    My first comment is the following:

    1.) I’m using AVR Studio 5 rather than the 3 files posted. With this new version I only need to install that single installation along with something called the AVR Hex Uploader (this replaces having to use the command line to upload code)

    The Uploader can be found here: http://www.ngcoders.com/downloads/arduino-hex-uploader-and-programmer

    Additionally, there was a weird baud rate problem on the uploader page. My Arduino uno is not at 57600 but rather 115200, just incase others have the same problem.

    • Pedro Manoel Ferreira

      Hi David Li !
      I started with this nice tutorial, thanks HeKilledMyWire !
      But now I also have used the Studio5 with ANSI C for programming a ARDUINO UNO and then I saw your post I started using the excellent AVR Hex Uploader instead of averdude by console. Thanks for the tip!

      I would like to know if you are also using ARDUINO libraries inside Studio5.
      I have tried to follow this tip: http://www.engblaze.com/tutorial-using-avr-studio-5-with-arduino-projects/ but I have not been successful.

      Regards,
      pedromferreira

  15. Neha Aggarwal

    Hi
    Thanks for the tutorial. It worked perfect. Just need to change the baud rate for arduino uno (115200).

  16. Hi, I really appreciate your very simply stated tutorial. I have a slightly more advanced project that requires me to change the fuse bits. Could you comment on how to do that?

    • To change/program the fuses you need an ISP programmer, do you have one?
      Then the best thing is to read the datasheet carefully and use this fuse calculator:

      http://www.engbedded.com/fusecalc/

      And if you have doubts about what to configure leave a commentary here.

      • Thanks for the quick reply. I have an arduino UNO. I see that it has an ISP header, but is that for programming the chip on the UNO from another ISP device?

        I found a post on sparkfun about programming an AVR with an arduino that involved setting the arduino with an ISP bootloader. I didn’t follow the post that well, but could that be something that would help me?

        Thanks

      • In the Arduino UNO there are two ISP connectors, one is near the Atmega8u2 that does the usb to serial platform, that has the ISP pads only, the ISP pins that are connected to the Atmega328p is the that is populated with pin headers.

        If you have two Arduinos, you can put a skecth called Arduino ISP in it and then you need to put a small resistor in the reset pin to the 5v pin to disable the auto-reset so the ISP skecth works as expected, the resistor can be about 300-500Ohm 1/4 watt, then you need to connect the two ISP connector and power the two Arduinos, then using AvrStudio or PonyProg you can read the fuses, and then write new ones, but be carefull because wrong fuses settings can lock your chip in various ways.

      • Do you mean 2 UNO’s or similar, not 2 ATmega328 chips, right? I have only one UNO, but I do have several ATmega328p’s. This sounds like what you are describing: http://arduino.cc/en/Tutorial/ArduinoISP

        The project that I made has an ISP header so could the UNO just act as an ISP programmer? Could I put one AVR on the project board and one on the UNO, program the one on the UNO with an ISP bootloader and use it to program the other AVR that is on the project board?

        I think that this post on sparkfun is what I am describing, but I’m not completely sure:

        http://www.sparkfun.com/tutorials/200

        Or if that doesn’t work, would this be a good investment?

        http://www.sparkfun.com/products/9825

        Thanks again for your help

      • Sorry for the confusion, for sure that you dont need two Arduinos, you can program any chip that you want using the ISP programming interface.
        For example you can mount a breaduino in a breadboard and then use the ISP to program the bootloader or to program it always and don’t lose the 2Kb that the bootloader takes.

        That sparkfun tutorial seems to cover everything, and yes if you want to have a dedicated standalone ISP programmer that board is a great one and pretty cheap.

  17. posting again to subscribe to this thread.

  18. Doug Strickland

    Absolutely excellent tutorial. Very well done.

  19. so great…really helping…for begginers

  20. Very good tutorial!

  21. great tutorial, something I wanted to clarify is if I could use arduino Ide language to program in AVR studio? Is this possible? thanks for any explanations .

    • Yes, it is possible, all you need to do is include all the files that the Arduino IDE calls being the scenes, and then including all the cores folder, I will look it up and post a better explanation in the comments.

  22. thanks a lot would be of great. help. by all the files the arduino IDE calls, you mean any libraries dont you? any *.h? thanks a lot

  23. Nice tutorial. Got the ball rolling for me. Much appreciated!

  24. Great tutorial: covers pretty much everything one needs to know to finally start running away from the god-awful default Arduino IDE.
    Definitely gonna stick around and read some more articles (more like all of them).

    I guess I’ll have to search around for a way to do this with Eclipse instead of AVR Studio: having Eclipse for Java, Code::Blocks for C/C++, the Arduino IDE (or AVR Studio) for the Arduino and Sublime Text for Python and other assorted scripts (Bash, Batch, etc.) is quite a pain – I’m trying to make Eclipse able to handle everything because of… logistics.
    I guess I’ll stick with Sublime Text for small scripts and generic note-taking, though – it’s kind of amazing too.
    If by chance you’ve done what I’m trying to do since you posted this tutorial, please drop me a line!

  25. Hi great tutorial just wanted to know if anyone could help me understand where exactly should I place in avr the libraries and other files my arduino code used.

  26. Hello, I’ve got some problems with my Arduino UNO. This is my command line.

    D:\pwr\Mikrokontrolery\Arduino projects\sf\default>avrdude -p m328p -c avrisp -P com15 -b 115200 -F -U flash:w:sf.hex
    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude done. Thank you.

  27. Thanks for the tutorial. I’m confused. Why use Arduino at all? The AVR ISP2 programmer only costs about $35 from Atmel and AVR Studio5 is very nice. I have been wondering what the difference between Arduino and C is and your tutorial explains that quite well. Now I am left wondering what the benefit to using Arduino is?

  28. Excellent tutorials from hekilledmywire! Thanks! I’ll share a couple of tips that might be helpful for some more recent visitors. As it was already mentioned above AVR Studio 5 works fine for Arduino board users, just instead loading hex files with avrdude from a command line try ARP UPLOADER (google it). For my particular Arduino MEGA 256 Rev 3 (purchased at RadioShack) board the correct parameters are: -F -v -pm2560 -cstk500v2 -P\\.\COMxx -b115200 -D -Uflash:w:”C:\xxxx.hex”:i But the best & simplest tool I could find is Xloader (russemotto.com/xloader) where you just select your board model, baud rate, hex file and COM port. Works wonderfully and no external programmers needed! Thanks to everyone that made it possible, and good luck to the rest of us! :))

  29. Hi, can this method apply to programming chips that is connected to the Arduino Duemilanove? I am trying to upload C program an atmega32 and atmega328p using the Arduino as a development board for my school project. Thank you sir.

  30. I’m using AVR Studio 6 with this code on an Arduino UNO. WOW, this is a LOT faster then the blinky project in the Arduino IDE! VERY COOL! THANKS! By the way, do you have any tutorials on using an SD card in C++ (or AVR Studio).

  31. I just got the Arduino R3 Uno and i was wondering what Baud Rate do you set for it? And also, i have been dealing with other Avr mirco-controllers and have setup everything on Eclipse. I am just wondering if i would have to use a different command line in the command prompt in order to execute my code.

  32. Pingback: Arduino, le C et Linux au plus près du hard | Osblouf's blog

  33. thanks for the nice tutorial,
    I had to use 115200 as the baud rate for my device.

  34. Shrikant Vyas

    This was really very helpful… Thanks a lot …was searching for something like this since a few days..Arduino Language makes everything way too simple… Thank you once again

  35. Hello, I know that this it’s an old post, but I saw something in your code that’s a little bit odd:

    int main(void){ //In ANSI C, the main function as always an int return and using void will give you an warning
    DDRB |= (1<<PB5); //Define digital pin13/PORTB5 as an output so we can blink our led
    while(1){ //This gives us an infinite loop, there should always be an infinite loop in your code, because micro-controllers cant return from main to anywhere and that will give you bad results and unpredicted behaviour
    PORTB |= (1<<PB5); //Turn led on, this is the led included in the arduino(digital pin 13)
    _delay_ms(1000); //Wait 1 second
    PORTB &= ~(1< return 0, since it’s a void function
    }

    BTW the rest of the blog it’s excellent, keep up the good work.

  36. Hey can u explain me how to use arduino libraries in addition to avr/io library for programming other development board which has a 40 pin atmega16. Also how to print the values to the screen similar to serial monitor in arduino but in avr studio 6?

  37. Pingback: ANSI C PROGRAMMING TUTORIAL | PROGLAN

  38. Now you are hooked you will want new clubs, the best bag, only
    Titleist balls, golfing weekends and holidays.
    Hotels use green certification, either individually or as a
    group, to promote their services. (1888Press – Release)
    Tsunami Worldwide Media is pleased to announce the new television series Tee Time with Susan
    Anton for Fall of 2011; Susan will take viewers on a weekly travel adventure with her dynamic sense of style and no-nonsense approach to travel.

  39. I am using AVR Studio 5 to program ATMEGA16. now when it comes to uploading the hex file I get a prompt that ‘avrdude is not recognized as an internal or external command, operable program or batch file ‘
    i am a newbie to controllers and avr, what should i do?

  40. Thank you so much Sir!

  41. look up the USART, tutorial on avr freaks, it will explain how to do what you are asking without using the arduino libraries. I have an uno r3 with a 328p and hade to create my own header file to translate to the proper port and register names. That got me started and i can now talk to my program through usb, great for debugging.

  42. Man just wanted to THANK YOU. That was what I’ve been looking for . Stay update, you got a follower ..

    And what would the value be for -b parameter for Uno r3 ?
    Thanks in advance!

  43. Chondroitin by itself has shown to improve joint function, ease pain, stabilize joint
    narrowing in the knee and control osteoarthritis
    in finger joints. Therefore, you must have a priority in the list of things
    for your dog to any dog owner who really cares about your
    pet. These compounss are also considered to aid in treatment
    method of glaucoma, osteoporosis, substantial blood pressure,
    coronary heart conditions, arthritis and anemia.

  44. why at the end : return 1 ? and on the screen copy no
    Pourquoi mettre à la fin : return1)
    alors que sur la copie d’écran il n’y en a pas

  45. Ok, vu,

  46. I like it whenever people come together and share
    thoughts. Great site, continue the good work!

  47. Thank you! This is the best tutorial I’ve seen for programming an Arduino in C.

  48. Geiler Artikel. Ähnlich unterhaltsam, wie Videospiele
    auch. So verpönt das Zocken auch dargestellt wird,
    so ist experimentell festgestellt worden, dass das Spielen von Computerspielen, ein dem Alter des Spielenden angemessenes Spiel vorausgesetzt, förderlich für die Stressbewältigungskapazität
    des Spielers ist. Beim Daddeln von Videospielen lernt
    der Spielende fernab vom Alltag schneller als üblich Urteile zu fällen und zwischen wichtig und unwichtig zu differenzieren. Die meisten Videospiele vermitteln zusätzlich auch noch Basics über das Wirtschaften und fördern logisches Denken. Auch die verpönten Multiplayer Spiele können doch in einigen Fällen den vorgeworfenen Effekt
    des Abdriftens in eine falsche Realität} umkehren.
    Der Spieler mag wohl auch einigen Freaks begegnen, jedoch findet man manchmal
    genau in seinem Lieblings-Game Gleichgesinnte.
    Im Endeffekt: das Zocken ist hammer! Egal was man spielt und auch ob PC,Konsole,
    Handy,etc. .

  49. I’m digging your tutorial! But I suppose it would be nice if the pictures where still working^^ Thank you for writing this blog!

  50. top tutorial
    but please reupload the pictures

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s