In this post I will discuss about the Arduino Diecimila in detail. In the previous articles I have discussed other Arduino microcontroller development boards such as Arduino UNO, MEGA, MICRO, PRO MINI, Lilypad, Leonardo etcetera where I have mentioned the unique features of each board and discussed in detail the hardware and pinout of the boards. This article is oriented around the discussion on Arduino Diecimila.
Although the Diecimila is not very different from other Arduino microcontroller development mentioned above but as it is member of the Arduino family so some light need to be shed on this board too. The reader will be able to learn about the basic hardware of the Arduino Diecimila, in addition with pin functionality and communication buses supported by the Diecimila. Although the discussion is not very much different from my other articles on Arduino boards but I will try to add additional information as well. So sit back, keep reading and enjoy the show!
Arduino Diecimila like other Arduino microcontroller development boards is the open-source microcontroller development board based on the ATMEGA168 microcontroller IC. Diecimila is an Italian word which means “10,000” and refers to the fact that 10,000 Arduino development boards have been manufactured. It is important to note here that the Arduino Duemilanove is based on the ATMEGA168 microcontroller IC too thus many features of Diecimila are similar to that of the Arduino Duemilanove. Arduino Duemilanove is quite similar in shape and specifications to the Arduino UNO and Arduino Duemilanove but has a main difference from UNO that is the microcontroller IC on which UNO is based. Arduino Diecimila has 14 digital input / output pins out of which 6 are PWM enabled and are available on the header just like the Arduino UNO and Duemilanove. Diecimila has 6 analog input pins and a header for input and output voltage. The Diecimila is plug and play module which means that it has a USB port mounted on board through which the computer is connected and can be used to program and monitor the Diecimila board. Arduino Diecimila also has power jack on board and an ICSP header. The Arduino Duemilanove looks like the one in the following image:
Introduction to Arduino Diecimila
Observe the resemblance of the Arduino Diecimila with the Arduino UNO and Arduino Duemilanove boards. Notice from the above image that the Diecimila has on board USB to UART Bridge which makes it plug and play device; it is different from the MICRO and Lilypad which needs external USB to UART converter module in order to program them. The Digital Input / Output pins, the Analog input pins and voltage pins of the microcontroller IC are fanned out to the headers on the edges of the board just like the Arduino UNO.
The pinout of the microcontroller IC on which the Arduino Duemilanove is based is shown in the following figure:
The block diagram of the Microcontroller IC is shown in the following image:
Arduino Integrated Development Environment (IDE):
In the post on the Arduino UNO we learned that the Arduino UNO can easily be programmed using the Arduino IDE. The Arduino Diecimila can also be programmed in the similar way; that is the programming of the Arduino Diecimila is not different from that of the Arduino UNO, however it should be kept in mind that Arduino Diecimila has different number of pins and different pin configuration. The care should be taken while configuring the Arduino Diecimila pins. As most of you might have known that in order to program a microcontroller one need to write the code in the editor, and then compile that code in the compiler after which you get the HEX file of that code and later upload that HEX file in the microcontroller IC using another program. In case of Arduino all these steps are performed in single software which is called the Arduino IDE. By integrated Development Environment it means that all the steps that editor, compiler, burner are integrated in the same software. In short Arduino Diecimila is quite easy to program it is just a matter of few clicks. It is important to note here that the board should be selected before uploading the code that is before uploading the code from Arduino IDE one need to select the board to which he / she is intended to burn the program. From tools select board as Arduino Diecimila otherwise the error will occur and your board would not get programmed .I will go through in detail about how to write a code and upload it in Arduino Diecimila later in the post.
The drivers of the Diecimila are automatically installed in the Windows once you plug the device.
Arduino Diecimila Features:
Let us now learn some of the common specifications of the Arduino Diecimila microcontroller development board.
- Microcontroller IC: ATMEGA 168.
- Operating Voltage: 5 Volts
- Input Voltage: 6 to 20 volts.
- Digital I/O Pins: 14 (of which 6 provide PWM (Pulse Width Modulation) output)
- Analog Input Pins: 6
- DC Current per I/O Pin: 40 mA (This is the current that can be sourced or sink into and out of the Input / Output pins)
- DC Current for 3.3V Pin: 50 mA
- Flash Memory: 16 kilo Bytes.
- SRAM: 1 kilo Bytes.
- EEPROM: 512 Bytes.
- Clock Speed: 16 Mega Hertz.
Notice from the specifications of the Arduino Diecimila that it resemble a lot with the Arduino UNO and are completely identical to the Arduino Duemilanove.
Arduino Diecimila Pinout:
Let us now dive into the discussion about the pinout of the Arduino Diecimila. As described earlier that the Arduino Diecimila is based on the ATMEGA168 microcontroller IC so it follows that the pinout of the Arduino Diecimila is simply that of the ATMEGA168 microcontroller but note here that the Arduino Diecimila has its own nomenclature for its pins and here I will use the nomenclature used by the Arduino Diecimila for pin reference.
As pointed out earlier that the Arduino Diecimila has total 14 Digital Input / Output pins. The digital Input / Output pins can receive a digital signal or transfer a digital signal. Out of these 14 Digital Input / Output pins 6 are PWM (Pulse Width Modulation) enabled, the PWM phenomenon and its applications will be discussed later in the post and some digital pins can also be configured as either SPI (Serial Peripheral Interface) or I2C (Inter-Integrated Circuit) computer bus. The Arduino Diecimila also has one UART with Rx and Tx signals on pin number 0 and 1 respectively that are used for serial communication. The headers on the other side of the Arduino Diecimila bear the voltage pins and the Analog pins. There are total 6 analog pins on the Arduino Diecimila. Unlike Digital pins these pins can just act as Input pins that are these pins can only receive signal and cannot provide signal or voltages that is why they are called Analog inputs. These analog inputs are actually the inputs of the Analog to Digital Converter inside the ATMEGA 168 microcontroller. These pins can be connected to the output of the analog sensors. Six different analog sensors can be connected to the Arduino Diecimila simultaneously.
The third header of the Arduino Diecimila bears the voltage pins that are used to power up the Arduino Diecimila board, these pins are also used to deliver power from the Arduino Diecimila board to other peripheral devices or the sensors attached to the Arduino Diecimila microcontroller development board.
Let us now discuss in detail the digital Input / Output pins, Analog input pins and Voltage pins of the Arduino Diecimila.
Arduino Diecimila Digital Input / Output Pins:
As described in the previous section that the Arduino Diecimila has total 14 digital input / output pins out of which 6 input / output pins are PWM enabled. Some of these Digital Input / Output pins can also serve as the SPI (Serial Peripheral Interface) or I2C interface (Inter-Integrated Circuit). The detailed description is shown in the following figure:
The function that the digital input / output pins perform depends upon the coding of the Arduino Diecimila. That is whether the pin number 4 (SDA, serial data) and 5 (SCK, Serial Clock) functions simply as input / output pins or they are used as the Inter-Integrated Circuit (I2C) bus depends upon the coding that specifies their functionality using particular functions. Similarly the pin number 10 (SS), 11 (MOSI, Master out Slave In), 12 (MISO, Master in Slave Out), 13 (SCK, Serial Clock) constitute the SPI (Serial Peripheral Interface) computer bus and they function as the digital Input / output depending upon the programming. It is also important to note here that the Digital Input / Output pins are called as Input / Output because either they can be used as Input in which case they are intended to receive the signals from sensor or transducer (digital) or they can be used as Output in which case they drive the actuators such as relays.
The functionality of the Digital Input / Output pins as either Input or Output is determined by the code also. It is important to realize here that digital input / output pins can only supply a limited amount of current which is not sufficient to drive the motors or relays therefore we need to use drivers such as stepper motor driver or L298 DC motor driver. I will come to the coding of the Arduino Diecimila later in this post. Another point worth mentioning is that seven out of the 14 digital input / output pins 6 are PWM enabled pins that is these pins can provide PWM (Pulse Width Modulation) signal as output. These PWM pins find applications in which we need to regulate something for example the speed of the motor or brightness of the lamp.
Before concluding this section it is important to note that SPI interface is present on the ICSP header and has no connection on the Digital Input / Output pins as in the case of the Arduino UNO.
Arduino Diecimila Analog Pins:
As pointed earlier that the Arduino Diecimila has 6 analog pins which are actually the inputs of the ADC (analog to digital converter). These analog pins are input only that is they can only be used to read the analog signal or voltage and cannot drive the signal outwards. With the help of these pins the Arduino Diecimila can read analog signals from six different analog sensors. A variety of analog sensors are available in the markets which are used to measure different physical phenomenon for example LDR (Light Dependent resistor), Flex sensor etcetera.
Arduino Diecimila PWM Pins:
Let us now discuss the PWM pins of the Arduino Diecimila in some detail. As mentioned in the previous section that the Arduino Diecimila has 6 PWM pins which are numbered as 3, 5, 6, 9, 10 and 11. These digital pins can deliver the PWM signal as output. The PWM is the abbreviation of the Pulse Width Modulation and it is a phenomenon in which we adjust the width of the pulse according to the requirement of the applications. For example if one needs to regulate the speed of the motor or the brightness of the lamp this can be achieved by varying the width of the PWM signal. The power delivered by the PWM signal is the average of the signal for which it is zero and for which it is maximum. If the width of the PWM signal for which the signal remains HIGH is greater than more power will be delivered and thus reducing the width will cause the reduction in the power delivered. The width of the PWM signal for which the signal remains HIGH during its time period is referred to as the Duty Cycle of the PWM signal. The PWM pins are also used to control the angular position of the Servo motors.
Arduino Diecimila Schematics:
The schematic design of the Arduino Diecimila has many similarities with the Arduino UNO but of course is unique and very similar to the Arduino Duemilanove. The schematic of the Arduino Duemilanove is as shown in the following figure:
Before concluding the hardware of the Arduino Diecimila and discussing its application it is important to mention here that the Arduino Diecimila has 3×1 header mounted on board which is used to select the power source with the help of the jumper. If the jumper is connected between the two pins closer to the USB port then the Diecimila will be powered with the USB connector and if the jumper is connected between the pins closer to the Power jack then the board will be powered by the power jack.
Arduino Diecimila Applications:
Before discussing the programming language of the Arduino Diecimila let us first know the applications of the Arduino Diecimila for motivation. So basically the Arduino Diecimila can be used in any system that requires the microcontroller. Some of the embedded systems in which the Arduino Diecimila can be used are listed below:
- IR remote based Home Automation System.
- Bluetooth controlled Home Automation System.
- IoT enabled Home Automation System.
- Auto Intensity Control of Street Lights.
- Mobile lifter.
- Hurdle Avoiding Vehicle.
- Wall climbing vehicle.
- Autonomous vehicle.
- Robotic arm.
- Parking lot Counter System.
- Emergency Lighting and many more
Note here that the Arduino Diecimila has no special applications dedicated to it except that it can be used in applications where two alternate powers needed to be selected.
Arduino Diecimila programming language:
One of the perks that make Arduino Diecimila quite popular among the hobbyists and beginners is it’s easy to use programming language and programming. The programming language used by the Arduino Diecimila is the C++. The Arduino Diecimila IDE has a well-defined function for each task that is easy to remember. As an example the function that specifies the Arduino Diecimila digital Input / Output pin to work as input is:
Here in this function there are two arguments. First argument is the pin number which we want to make input or output and second argument specifies the property that is input or output to the pin number used. The detailed discussion on programming the Arduino Diecimila will come later in the next posts.
That is all for now I hope this post would be helpful for you. In the next post I will come up with more interesting topics. Till then stay connected, keep reading and enjoy learning.