Category Archives: Tutorial

Last updated by at .

Software Serial

For users with arduino microcontroller has one serial port, such as nano arduino, uno etc., can use the digital port as an additional serial channel. I tried it into the arduino nano board, and will add an additional serial port to D10  as RX and D11 as TX. D10 (RX), D11) is a serial software controlled, unlike the RX (D0) and TX (D1) working in hardware. Required libraries that support additional serial operation, simply add the syntax:


at the beginning of the arduino program. To test the digital pin is used as an RS232 serial communication channels, required-digital USB-Serial dongle. 

Posted in Arduino, Tutorial | Tagged , , | 2 Comments

Timer 2 interrupt event: TIMER2_OVF_vect

In this post, will describe how to use an interrupt event of timer2 using nano board. If you want a process that works in the background and separated from the function loop (), you can use timer2. Timer2 can be set as a timer with overflow mode. When timer2 overflow, certain vector address to be executed. In arduino, vector address to timer2 with overflow mode is TIMER2_OVF_vect.

Initialization of timer2

First you must initialize timer2 as timer overflow mode. To initialize timer2 use the following code:

The code to initialize timer2 can be explained as follows:

  1. At line 10 aims to disable timer2, so that does not work.
  2. At line 12 aims to set timer2 to become overflow during 10ms. 
  3. At line 13 aims to clear flag interrupt of timer2. Each 10ms this flag will be set and will execute address of interrupt: TIMER2_OVF_vect
  4. At line 14 aims to enable timer2 interrupt as overflow mode.
  5. At line 15 aims to set wave generator normal of timer2
  6. AT line 16 aims to set prescaler of timer2 to 1024

How to calculate time of overflow interrupt

The equation is: 

t = (1/F) * 1024 * (255 – R) * 1000 mS

F is frequency of microcontroler in Hz
R is value of TCNT2 register

For example timer overflow will generate every 10mS (t) dan F is 16000000MHz.

10 = (1/16000000) * 1024 * (255-R) * 1000
(255 – R) = (10 * 16000000)/(1024 * 1000)
(255 – R) = 156.25
R = 255 – 156.25 =  ~98 (decimal)

Routine of timer2 overflow interrupt

If the register is set to 98, the routine of timer2 overflow interrupt will be executed every 10ms. Address of vector interrupt is TIMER2_OVF_vect.

In this routine thing to do is to set TCNT2 = 98, so the routine is executed again every 10ms. Additionally TIFR2 set to 00, TIFR2 = 00.

Next, you can add the code in this routine, such as a counter or other variables. Make the code as short as possible, try the code created only manipulate variables.

Codes above can be explained as follows:

  1. Line 21 and 22, set timer2 counter to 10ms and reset timer2 interrupt flag.
  2. Line 24 to 28, change the logic of variable flag_led as toggle every 500ms, using variable flag_500ms as counter to get again time of 500ms.
  3. Line 24, check the flag_500ms whether zero. If zero is reached, flag_led will be invert (line 26). Next on line 27 refresh flag_500ms become value of 50 as time counter of 500ms.

Setup() and Loop() functions

The code of setup() and loop() functions be explained as follows:

  1. On setup() function, line 35 configure D2 to D9 as digital output. Line 36 setup the variable of flag_500ms = 50 for 500ms counter based on 10ms. Line 37 init the timer2 as timer overflow interrupt for time of 10ms.
  2. On loop() function, line 42 and 43 set D2 to D9 with logic 0/1 based on flag_led variable.


YouTube Preview Image

Posted in Arduino, Tutorial | Tagged , , | 4 Comments

Arduino tutorial: How to turn on/off 8 LED using visual basic 6

I will share my experience about how to turn on and off 8 leds through the widget made using visual basic 6. I am using visual basic 6 because the file is not large and light program execution.

How its work ?

8 pieces led Arduino connected to a digital channel from D2 .. D9. Each LED in series with a resistor about 120Ohm is connected to GND. Thus each led will turn of  in a logic 1.

Arduino program

On the Arduino board, was created a program to accept the character as a command to turn off and turn on each LED. Command of the character of 1,2,3,4,5,6,7,8, used to turn on or turn off each LED on arduino board as toggle function. Other characters as  command of “*” character serves to turn on all LED. The character “-” to order all led to turn off.

Each character as commands are sent serially to the Arduino board. Thus,  the Arduino will send back all conditions of leds in string form., for example, “10101010″. The character “0″ means the condition of the LED is die and vice versa “1″ is alive.

Variable and serial event

As a global variable is “charCmd” defined as byte to hold a character as a command that sent from the PC. Variable of ccmdOk defined as boolean is a flag to mark that character just received from PC. The special variable is stateLED defined as char. This is for holding the state of 8 LEDs in bit for each LED.

The serialEvent() function is event interrupt of microcontroler. This function by default on arduino will call automatically if just completely receive a char from RX pin. If the character has been received from PC, the result will be stored in the variable of “charCmd”, then flag of “cmdOk” is set to “true”.


Two functions are made to treat the LED on the Arduino board are:

  1. setLED()
    Serves to turn on or turn off each LED corresponding to logic of each bit in the variable conditions of stateLED. Line 28, is looping to get each bit of stateLED variable. Every bit of stateLED variable, is tested using bitRead function(). Thus, written to digital channel of arduino. The status of each led is sent to serial and received by PC as hanshaking or display status.
  2. invertLED()
    This function serve to invert the logic of each bit on stateLED variable, indexed  by n variable. This function have one passing parameter to point each bit on stateLED variable.

Setup() function

This initialization are open serial using 115200baud and making D2 to D9 as output, also all LEDs turn off. For shortened codes, i used loop of for() statement and variable of d is used as index of digital channels that to be connected to LEDs. 

Loop() function

The loop functio () checks if there are characters that is sent by the PC. If the variable cmdOk = true, then there are characters received from the PC is stored in the variable of charCmd. Next tested whether the character is ’1′ to ”8′, ‘*’ or ‘-’. If the character are  ’1 ‘to ’8′, will call the function of invertLED, means reversing the logic of each bit on variable of stateLED. If the character is ‘*’, stateLED will be assigned to 255 (all LEDs will be turned on), ‘-’ stateLED will be assigned to 0 (all LEDs will be turned off).

Source code of arduino program can be downloaded here.









Widget of visual basic 6

 I made this widget by using Visual Basic 6. You can install directly to a computer to download the setup program by clicking here. Or you can download the source program by clicking here. Do not forget to include the name of program creator, and web link on your project.


YouTube Preview Image

Posted in Arduino, Tutorial | Tagged , , | 14 Comments

Arduino tutorial: 8 LED simple flasher using lookup table

This program is a development of previous post. This uses the table as a data storage pattern of the LED and the constant of the delay.



To save the patterns and the delay led to use of variables and dataDelay dataFlasher as a array of byte and integer. This table will be placed in the microcontroller program code permanently.

DataFlasher variable is a data sequence of LED patterns, written in binary format for ease verification of the pattern. While the variable  of dataDelay is a data constants of each led patterns as passing parameter for the function of delay(). As dummy load, on the end of data of dataDelay variable is set as null. This is for mark that no data after it.

Inside the function of loop() get any data for led pattern, which is in dataFlasher variables to be sent to each bit of LED (D2 to D9). On line 49 is masking of lsb of current dataFlasher and sent to led with d variabel as channel of digital port. Next on line 50, variable of i to be right shifted for the next bit.

The next data is taken, until dataDelay = 0.  

YouTube Preview Image

Source can be downloaded here

Posted in Arduino, Arduino, Tutorial | Tagged , | 4 Comments

Arduino tutorial: 8 LED simple flasher using looping

Examples of Arduino program here that has just been posted here. Simplified the program by adding a loop instruction that is: for ().
Because the digital pin to 8led is D2 .. D9, then the instruction pinMode (), digitalWrite, and delay () can be inserted into the looping of for() instruction.
More programs like the following:

Program can be explained as follow:

  1. On setup(), using looping for() defined n variables as series 2,3,4,5,6,7,8,9. thus, Inside looping of for(), function of pinMode() and digitalWrite() instructions executed for pin of digital as number of 2,3,4,5,6,7,8,9.
  2. Inside function of loop(), each led of digital pin turn on about 100ms. Thus do not need to write down instructions repeatedly, for each LED.

Once the compiled binary code becomes smaller when compared to the previous tutorial.

Having executed the same result as the following video.

YouTube Preview Image

Source can be downloaded here.

Posted in Arduino, Arduino, Tutorial, Uncategorized | Tagged , | Leave a comment

Arduino tutorial: 8 LED simple flasher

Here I will explain how to make a simple 8 LED flasher. Of course the program is made very simple logic, using very little instruction as the lesson.
Instructions used are:

  1. pinMode ()
  2. digitalWrite ()
  3. delay ()

With three kinds of instruction can make a simple flasher 8led. 

Open the program code in the Arduino IDE, the program can be described as follows:

  1. First defined the digital pin for the LED 1 .. 8, using the instruction: int LED1 = 2, meaning that using a pin LED1 D1 (digital channel 1). Similarly to other LED uses the same instruction.
  2. In the function setup (), define each pin as an output LED1 .. LED8 with instructions: pinMode (). Also all led made turn off using instruction: digitalWrite (LED1, LOW), as well as for the other led.
  3. The loop function (), each LED is turned on for 100ms, with instruction in sequence:
    digitalWrite (LED1, HIGH);
    delay (100);
    digitalWrite (LED1, LOW);
    Same for the other led to change their variable LED2 … 8.

YouTube Preview Image

Source can be downloaded here.


Posted in Arduino, Tutorial | Tagged , | Leave a comment

Introduction to the Arduino

Here will be explained about Arduino for beginners. For the programming hobbyists in hardware using microprocessor or microcontroller, the Arduino is an easy choice to make the program like the computer platform programming. 

On computer programming, relations with the hardware for input/output is not necessary to memorize the pin numbers of the hardware.  If you are on a microcontroller environment, must know the pin number that will be used for input/output. Furthermore it should understand the basic philosophy of how to treat the pin. 

Arduino is an IDE for programming microcontroller in order to develop the software as well as computer software development environment.  

Easily obtained using arduino IDE, among others:

  1. The programming language used was C / C + + or combined with the assembly. 
  2. Microcontroller pin numbers are known as fixed by classifying digital or analog channels. Any microcontroller with a label known for Dx to digital, analog to Ax, where x is the channel number. Thus you do not need to remember pin numbers on the microcontroller used.
  3. Programs that have been made using Arduino, can be easily applied to other microcontroller which is recognized by the Arduino. The program does not need to be changed, simply change the configuration of the microcontroller’s used.
  4. To add a new library can be built easily by using C / C + + or combined with the assembly. To integrate with the Arduino program, with enough to include the header of library that will be used. Thus very easy to integrate libraries made by the contributors for use by other users.
  5. Very easy to compile, there are two upload menu to compile and upload, verify menu to compile it. Library search process is done automatically.

How to start ?

Learn to start applying the Arduino, I recommend to you to have an Arduino board first. Avoid advance to make an Arduino board from microcontroller chip. For first, begin to learn programming with a simple application. Many types of Arduino board, more details you can click here.

Next, you must install the Arduino IDE, you can get for free by downloading here. I assume you have a nano to use a microcontroller ATmega328 board. More details about the specifications of this board you can see here.


Connect the Arduino with a USB interface on your computer, then run the Arduino IDE by clicking on the icon’s arduino. The first time you have to choose a board that suits you use. For that, click the menu: Tools-> Board.

Every time you change the type of the Arduino board, you must change the configuration of the appropriate board in the Arduino IDE. Most important is the type of microcontroller used and the frequency used must be matched on this configuration by typing menu.

Examples of program “blink” will appear as follows:

The logic of the program can be described as follows:

  1. There are two default functions, there are two setup() and loop() and must exist in the program. Setup () function as program initialization before the loop() function is executed.
  2. Loop() function is a substitute for the function main() in C programming language in general. The difference of this function will perform a continuous loop when the end of code is executed.
  3. The code in line 11 is initializing channel digital channel 13 (D13) as output. This channel is connected to the LED on the Arduino board type nano.
  4. At block loop () there are 4 lines of program code, line 15 is writing of logic one to D13. And will turn on LED, because there are pulldown series by resistor.
  5. Line 16, execution of time delay function with parameter passing 1000 as 1000ms or 1 second. This means that the LED will be turned on for 1 second.
  6. Line 17 is writing of logic low to D13. And will turn off LED.
  7. Line 18 similar with line 16, will executed time delay function about 1 second. This means tha LED will be turned off for 1 second.
  8. Go to line 15 again, because loop() will executed as looping.

To compile and upload to the board nano is very easy just click the upload icon.

please wait for video

Posted in Arduino, Arduino, Tutorial | Tagged , , , | Leave a comment

Build the Arduino board using ATMega8/168/328 chip

This post is for who want to learn Arduino but a thin pocket to buy a relatively expensive Arduino board. Or for those who really love the person who tinkers electronic hardware. Microcontroller ATmega 8, 168 and 328 have the same number of pin is 28 for DIP packaging, microcontrollers are selling a lot of this type are relatively cheap compared with other microcontroller. By having one of the microcontroller and coupled with a few components can actually function like the original Arduino board.

Build an Arduino board

To make the Arduino microcontroller there are many choices of which will be used. But in this post could use the ATmega 8, 168, 328. I use the ATmega 328 with larger program memory capacity is 32KB. this post could use the ATmega 8, 168, 328. I use the ATmega 328 with larger program memory capacity is 32KB.

Components are supposed to provide are:

  1. IC1: Microcontroler ATMega8/168/328, it’s up to you please choose one.
  2. Q1: Resonator Crystal about 8MHz or 16MHz.
  3. R1: pullup resistor for reset about 1K – 10K.
  4. C1 and C2 about 22pF.

 You can build on perforated veroboard or breadboard. By using the breadboard pins you can connect using a single wire diameter of 0.5mm. If using veroboard, to connect between the pin, use a single 0.5mm wire soldered directly.

Build on breadboard

Build on perforated board

VCC supply voltage is 5VDC, not to reverse the polarity, if it does then it will make the microcontroller burned.
To fill the bootloader program, usually using ICSP with 4 signal MISO, MOSI, SCK and RESET. I recommend using USBasp can be made using the ATmega8 microcontroller.
Supply voltage of 5V can disuply USBasp programmer, by taking power from the computer USB port. How to make USBasp programmer click here.

I built USBasp like the one on this link.

Burn bootloader

To upload program serially using the Arduino IDE, bootloader program should be flashed into chip ATmega328. Bootloader is used if you are uploading a program via the serial RS232 interface.  This uses pins of RX / TX’s  microcontroller, in addition to the RST pin is used to reset automatically when the upload program.

But if you do not use this method, there are other ways to use the pin MOSI, MISO, SCK, RST of microcontroller, by using a USBasp programmer or other. The Arduino IDE of 1.0.1 version capable to program this method via this pins. In this way the bootloader certainly not required.

To burn bootloader:

  1. Connect the USBasp programmer to MISO, MOSI, SCK, RST of microcontroller pins.
  2. You can use the 5V power supply of USB/programmer or use a separate power supply.
  3. Run the Arduino IDE.
  4. Select menu Tools->Board-> “Nano Arduino w / ATmega328″. Chip is recognized as a bord ATMega Nano with 16MHz crystal.
  5. Select menu Tools->Programmer->USBasp. If you are using another programmer choose accordingly.
  6. To burn bootloader. Select menu Tools->Burn Bootloader.

Equally important is to know the connection USBasp programming on the programming process to succeed. At USBasp There are two types of connectors and 10pin 6pin. I use the 10pin type USBasp homemade.

Programming pin on USBasp is MISO, MOSI and SCK are connected to the MISO, MOSI and SCK the target microcontroller. While RES is connected to the RESET to reset the target microcontroller into program mode. VTG is a voltage source while the +5 V from USB port of your computer. GND is the common channel. So the total that must be connected to the microcontroller board is 5 cable if you have a supply voltage of +5 V itself. If the board and do not have a +5 V supply and is obtained from a computer USB, VTG microcontroller is connected to VCC. Care should be taken not to both, to avoid damage to the computer because the voltage to be clashing.

YouTube Preview Image

Upload Program

To test whether the bootloader worked fine, tried to upload a program from existing examples on the arduino called “blink”. Connect your computer TX -> Arduino RX (pin 2), RX computer -> arduino TX (pin 3), DTR computer -> Arduino RESET (pin 1). Remember the three channels of serial computers must have a TTL logic level voltage 0 V or 5V. If you use a USB to serial in general, the output is still in its early stages RS232 voltage levels. To convert RS232 to TTL voltage levels using MAX232 IC.

YouTube Preview Image

Posted in Arduino, Tutorial | Tagged , | Leave a comment

Arduino using Visual Studio capable as debugger

In March, 2012, released a plugin for the Arduino using visual studio. For those who are tired of using the original Arduino IDE, can use visual studio as a new IDE. Thus visual studio will be used as an Arduino-based microcontroller development.

This plugin can be used in Visual studio 2008 or 2010 version. I tried it using Visual Studio 2010.


I like visual studio, because the windows look very comfortable and can be configured. Moreover, it can add a facility other programming languages which have been there before in visual studio. I’m most looking forward to is the ability to debug the program to be developed. Debug capability is still in beta, is still tested by the tester, I am one of them.

Here I will explain how to install the plugin for the Arduino, in visual studio 2012.

The installation steps are:

  1.  Install Arduino IDE ver. 1.0.1
    Arduino program still used by the plugin. Use the release version of the Arduino. 
  2. Install visual studio 2008 or 2010.
    You can choose one of them, I chose which 2010 version.
  3. Download plugin arduino fro visual studio here.
    You should always follow the latest version, because the plugin was developed from time to time. Install the program and will be in the folder: C:\Program Files\Visual Micro\Visual Micro for Arduino.
  4. Run visual studio.

Visual studio configuration

After your Arduino 1.0.1, visual studio 2010 and Arduino plugin, run visual studio you will see there is an additional menu.

On the File menu there is a sub menu “Arduino project” serves to create a new project based on the Arduino. 

While on the Project menu there are sub menu “Add New Arduino item” which serves to add a file in the Arduino program are c, c++, arduino. The second sub menu is “Add arduino library” used to include library from core or user.

Additional sub-menu is the menu as found in the Tool menu in the Arduino. For those familiar with the Arduino, already knowing the functions of this menu.

Next, you must configure it to show where the location of the Arduino program is placed, by pressing the menu Tools-> Options.


In addition to my experience visual studio requires additional database program that is “Microsoft SQL Server compact 3.5″, the program can be downloaded here

Good Luck.


Posted in Arduino, Tutorial | Tagged , , | Leave a comment