====== Setting up the programming environment ====== Before starting programming the microcontroller, it is necessary to connect it to the computer. ===== Connection ===== //Arduino Uno// microcontroller is taken as a board for programming example tasks. It can be connected to a computer, using //Universal Serial Bus// (USB) port, using appropriate USB cable. A microcontroller can be used together with prototyping board or a robot. In the simplest programming tasks it can be used as an independent device. ===== Power ===== To operate with the microcontroller, it can be connected to an external power supply or USB port. The microcontroller determines the power source automatically. If external power supplies other than USB are used, GND and VIN ports should be used to connect the power supply. The manufacturer recommends the use of a voltage of 7-12 V to ensure a normal operation of the microcontroller. If the voltage is exceeded, before reaching 20 V, then the power supply circuits of microcontroller may get overheated. If the supply voltage is lower than 7 V, then the microcontroller may function unstable and the result will be unpredictable. In addition to the above mentioned, the microcontroller can provide small power supply for external circuits by connecting them according to the microcontroller pins. ^ Pin ^ Description ^ | VIN | The input of a power supply when USB port is not used, i.e., an external power supply is used. | | 5V | A regulated 5V power supply, which can be provided via both USB and VIN. | | 3.3V | A 3.3V supply voltage for external circuits. The maximum current that this output can provide is 50 mA. If it is exceeded, the power supply circuits of the microcontroller may be permanently damaged. | | GND | Ground or port 0. |
The power pins of Arduino UNO.
===== Inputs/Outputs ===== Each of the 14 digital inputs/outputs (I/O) of the microcontroller can be used to send or receive signals using the //pinMode()//, //digitalWrite()// and //digitalRead()// commands, which will be more detailed discussed in the chapter about the basics of programming. All I/O operate in the range of 0V to 5V. Each of the I/O is capable of receiving or sending no more than 40 mA of current. They all have internal load resistors in the range of 20-50kΩ. Descriptions of other microcontroller pin and their specific use are explained below. In addition to these I/O, the microcontroller also provides other specific functions that will be described below. ^ Pin ^ Description ^ | O(RX) and 1(TX) | //Serial I/O// for serial communication. RX is used for receiving data, and TX for sending data to external devices. For data transmitting and receiving, the voltage must not exceed 5 V. | | 2 and 3 | //External interrupt// pins that can be used to receive external interrupt in cases when the value is low, value is changed, etc. For this functionality the function //attachInterrupt()// is used. | | PWM: 3, 5, 6, 9, 10, 11 | //Pulse Width Modulation (PWM)// pins are used to provide 8-bit PWM signal that often can be used for motor control or other specific use cases. For this functionality the //analogWrite()// function is used. | | SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK) | Pins that support //Serial Peripheral Interface (SPI)// communications. For this the SPI library is used. | | LED: 13 | This pin is used to manage the built-in LED. LED can be turned on by setting the value of pin HIGH and turned off by setting pin value LOW. | | A4(SDA) and A5(SCL) | //Two Wire Interface (TWI)// pins, //Serial Data Line (SDA)// and //Serial Clock Line (SCL)//, are the alternative of the data exchange using serial communication. For supporting TWI, the Wire library should be used.| | AREF | It is the reference voltage for the analog inputs. For this functionality //analogReference()// is used. | | Reset | Gives the opportunity to reset the microcontroller by setting this pin to LOW. |
Specific I/O pins of Arduino UNO.
===== Installing the programming environment ===== In order to start the development of software for a microcontroller, it is necessary to install and properly configure the development environment that consists of the program editor and the Arduino UNO driver. Below are described all the steps that are needed to prepare the programming environment for Windows 10 OS. ==== Step 1. Preparing Arduino UNO and the USB cable. ==== Before installing the programming environment, it is necessary to prepare the Arduino UNO board and the USB cable for connecting the board to the computer.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/arduinouno.jpg?400 |title}} The Arduino UNO board ((https://store.arduino.cc/arduino-uno-rev3))
{ {https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/usbcable.jpg?400 |title}} USB cable for Arduino UNO
==== Step 2. Downloading the Arduino software development environment ==== The open-source //Arduino Software// (Integrated development environment (IDE)) can be found in the official Arduino website ((https://www.arduino.cc/en/Main/Software)). The appropriate installation file depends on the OS of the computer and the access rights of the user.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/arduinoide.png?800 |title}} Downloading the installation file for Windows OS from Arduino original website.
For Windows OS, the //"Windows Installer"// should be clicked and then the file should be saved on the computer. When the installation file has downloaded, the file should be run. If the ZIP file was downloaded, it is necessary to unarchive it and to run installer. Follow the instructions of the installer. If the operational system asks for permission to install the driver of the board - allow it. It is also possible to use Arduino Web Editor (can be found in the same website) to work online with the Arduino board, but this option will not be considered in this manual.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/arduinowebeditor.png?800 |title}} Arduino Web Editor
==== Step 3. Connecting to Arduino ==== Using USB cable, Arduino needs to be connected to a free USB port of a computer. The blue LED on the Arduino board starts to shine continuously. This is the indicator that the Arduino board is working. The green LED will blink and that will indicate to the performance of the manufacturer test software. In case if the green LED is not blinking, it is not an error. ==== Step 4. Starting up the programming environment ==== The Arduino programming environment can be started with the double-click on the desktop shortcut of the Arduino software. The language of the environment will respond to the one that is set up in the OS of the computer, that means if it is English, then the menu of the programming environment will also be in English language. To change the language preferences, it is necessary to follow the instructions in the following webpage ((http://arduino.cc/en/Guide/Environment#languages)). ==== Step 5. Open the example program ==== In the Arduino IDE open //File->Examples->01.Basics->Blink// as shown in the image below.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/example.png?600 |title}} The path to open "Blink" example in the Arduino IDE
This will open in the new window an example program for turning on and off green LED that is situtated on the Arduino UNO board with the 1 second delay.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/blinkexample.png?600 |title}} The example Blink program.
==== Step 6. Choosing the microcontroller ==== In this step it is necessary to choose the type of board that is used. In this example the Arduino UNO board is used that is why in the menu of Arduino IDE choose //Tools->Board->Arduino/Genuino Uno// as shown in the image below.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/chooseboard.png?600 |title}} The path to choose the type of board.
====Step 7. Setting up COM port ==== To ensure transmitting and receiving data to/from microcontroller, it is necessary to set the serial communication port - COM port. All ports are numbered in order and for Arduino microcontroller it is usually higher than COM3, i.e. COM4, COM5, etc. In the image below it is COM4.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/chooseport.png?600 |title}} The path to choose the port for Arduino connection.
==== Step 8. Uploading the example program to the board ==== Now the program can be uploaded to the Arduino board using the //Upload// button in the top left corner of the software, then wait for a few seconds, during which you can see the data sending indicators - LEDs are blinking fast (indicates sending or receiving data) - and wait for the message to be //"Upload is complete"//.
{{ https://home.roboticlab.eu/_media/en/iot-open/programming_fundamentals_rtu/upload.png?400 |title}} Uploading program to the board.
After a few seconds, the green LED will blink with a one second interval like it is written in the source code. If this is can be observed successfully then everything is done to start learning the basics of programming. In case if the blinking green LED cannot be observed, instructions for troubleshooting can be read in the following link ((http://arduino.cc/en/Guide/Troubleshooting)). If you want to get acquainted yourself with microcontroller capabilities or programming basics independently, look at one of these sources of information: * Examples for the accompolishing tasks of different level of difficulty ((http://arduino.cc/en/Tutorial/HomePage)). * Reference for the programming language used ((http://arduino.cc/en/Reference/HomePage)). **Check yourself** 1. What power supply Arduino UNO mictrocontroller requires? 2.How to operate with inputs/outputs of the microcontroller? 3. Try different examples in the menu of Arduino IDE.