Microcontroller basics
Arduino IDE Download from: http://arduino.cc/en/Main/Software
About Arduino Uno 14 Digital I/O pins (6 PWM) Reset button USB port 12 V input 6 Analog Input pins 3.3 V and 5 V outputs http://www.farnell.com/datasheets/1682209.pdf
Setting up Arduino IDE
Structure of an Arduino code 1. Define Variables Before going to the setup function constant variables should be defined int pin = 1; 2. Setting up functions void setup() {} Setup function is run once, when the microcontroller boots up or resets. After setup function the processor moves to run code inside the loop function. Code inside loop function will be run over and over until the microcontroller is shut down. void loop() {} 3. Eternal loop It’s required to have both setup() and loop() functions in the code
Example 1 - Blinking led You need Breadboard Led Resistor (270 ohm) Arduino Wires
Breadboard Terminals with blue and red lines are called power busses and are connected together horizontally. Terminals in the middle are connected together vertically. The gap in the middle separates the two sides.
Example 1 http://blog.grifby.com/2013/04/tutorial-1-blinking-led-using-arduino.html
Arduino C – Basic functions pinMode(var1, var2) pinMode functions sets the mode of given pin. Var1 is the number of the pin and var2 is the mode (INPUT, OUTPUT) digitalWrite(var1, var2) digitalWrite changes the status of the pin. Var1 is the number of the pin and var2 is the status (LOW, HIGH).
Writing your first program Basic blinking LED int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW);
Writing your first program Basic blinking LED int ledPin = 13; //Variable to store the pin number void setup() { pinMode(ledPin, OUTPUT); //set ledPin as output } void loop() digitalWrite(ledPin, HIGH); //LED ON delay(1000); //Wait 1000ms (=1s) digitalWrite(ledPin, LOW); //LED OFF
Uploading the program Click Verify The program is checked Click Upload The program is uploaded to the Arduino mCu board 2. 1.
Example 2 - Controlling servomotor with Arduino Servomotor is controlled with PWM signal For controlling servomotor only Arduino is needed Arduino IDE has its own servomotor library
PWM (Pulse Width Modulation) Basic terms Duty cycle = Pulse Width / Wave Period
Example 2 Using 5 V servo motor
Example 2 #include <Servo.h> Servo myservo; int pos = 0; void setup() { myservo.attach(9); } void loop() for(pos = 0; pos <= 120; pos += 1) myservo.write(pos); delay(15); for(pos = 120; pos>=0; pos-=1)
Example 2 #include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() for(pos = 0; pos <= 120; pos += 1) // goes from 0 degrees to 120 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position for(pos = 120; pos>=0; pos-=1) // goes from 120 degrees to 0 degrees
Example 3 - Servomotor control with potentiometer You need Breadboard Servomotor Potentiometer Arduino Uno Wires
Example 3 http://www.electroschematics.com/11453/digital-potentiometer-arduino-shield/
Example 3 analogRead(analogPinNumber); Reads the analog pin where the potentiometer is attached map(value, fromLow, fromHigh, toLow, toHigh); Scales the potentiometer value to servomotors angle The analog input has 10 bit resolutions
Example 3 #include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = A0; // analog pin used to connect the potentiometer (F0/A0) int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 120); // scale it to use it with the servo (value between 0 and 120) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there