SLIDE 1 Cuauhtemoc Carbajal ITESM CEM
Modified version of Sparkfun Slides
http://learn.sparkfun.com/resources/Presentations/Intro%20to%20Arduino%20Slides/
SLIDE 2 Arduino Board
“Strong Friend” Created in Ivrea, Italy in 2005 by Massimo Banzi & David Cuartielles Open Source Hardware Atmel Processor Coding is accessible (C++, Processing, ModKit and MiniBloq)
SLIDE 3 Getting Started
Arduino Uno, Analog I/O, Digital I/O, Serial, handouts
Arduino IDE for programming board
SLIDE 4
SLIDE 5
SLIDE 6
Arduino Shields
PCB Built Shield Inserted Shield
SLIDE 7
Arduino Shields
Micro SD MP3 Trigger Joystick
SLIDE 8
Output
Output is always Digital
To Output a Digital signal (On or Off) use this code: digitalWrite ( pinNumber , value ); Where value is HIGH or LOW To output a signal that pretends to be Analog use this code: analogWrite ( pinNumber, value ); Where value is a number 0 - 255
SLIDE 9 Circuit 1: Electrical
Remember: the longer leg on the LED is the positive leg and the shorter leg is the negative
Image created in Fritzing
SLIDE 10
Output
Output is always Digital
Using a Digital signal that pretends to be an Analog signal is called Pulse Width Modulation Use Pulse Width Modulation, or P.W.M., for anything that requires a signal between HIGH and LOW P.W.M. is available on Arduino pins # 3, 5, 6, 9, 10, and 11
SLIDE 11 Output
Output is always Digital, even when it’s P.W.M. For P.W.M. the Arduino pin turns on then off very fast
P.W.M. Signal @ 25% P.W.M. Signal @ 75% P.W.M. Signal rising
SLIDE 12 Analog Input
- To connect an analog Input to your Arduino use
Analog Pins # 0 - 5
- To get an analog reading:
analogRead ( pinNumber );
- Analog Input varies from 0 to 1023 on an Arduino
SLIDE 13 Circuit 8: Electrical
Image created in Fritzing
SLIDE 14 Analog Sensors
Examples:
Sensors Variables Values Signals Mic Volume Decibels Voltage Photoresistor Light Photons Voltage Potentiometer Dial Position Resistance Voltage Temp Sensor Temperature Celsius Voltage Flex Sensor Bend Resistance Voltage Accelerometer
Motion/Tilt/Acceleration Acceleration Voltage
SLIDE 15 Digital Input
- To connect digital input to your Arduino use Digital
Pins # 0 – 13 (Although pins # 0 & 1 are also used for serial)
- Digital Input needs a pinMode command:
pinMode ( pinNumber, INPUT ); Make sure to use caps for INPUT
- To get a digital reading: digitalRead ( pinNumber );
- Digital Input values are only HIGH (On) or LOW (Off)
SLIDE 16 Circuit 7: Electrical
Image created in Fritzing
SLIDE 17 Code
http://arduino.cc/en/Reference/HomePage
SLIDE 18
The Arduino Environment
SLIDE 19
Board Type
SLIDE 20
Serial Port / COM Port
SLIDE 21
The Environment
SLIDE 22
Parts of the Sketch
SLIDE 24 Comments
- Comments can be anywhere
- Comments created with // or /*
and */
SLIDE 25 Comments
- Comments can be anywhere
- Comments created with // or /*
and */
- Comments do not affect code
SLIDE 26 Comments
- Comments can be anywhere
- Comments created with // or /*
and */
- Comments do not affect code
- You may not need comments,
but think about the community!
SLIDE 27
Operators
The equals sign = is used to assign a value == is used to compare values
SLIDE 28
Operators
And & Or && is “and” || is “or”
SLIDE 29
Variables
Basic variable types: Boolean Integer Character
SLIDE 30
Declaring Variables
Boolean: boolean variableName;
SLIDE 31
Declaring Variables
Boolean: boolean variableName; Integer: int variableName;
SLIDE 32
Declaring Variables
Boolean: boolean variableName; Integer: int variableName; Character: char variableName;
SLIDE 33
Declaring Variables
Boolean: boolean variableName; Integer: int variableName; Character: char variableName; String: stringName [ ];
SLIDE 34 Assigning Variables
Boolean: variableName = true;
SLIDE 35 Assigning Variables
Boolean: variableName = true;
Integer: variableName = 32767;
SLIDE 36 Assigning Variables
Boolean: variableName = true;
Integer: variableName = 32767;
Character: variableName = ‘A’;
- r stringName = “SparkFun”;
SLIDE 37
Variable Scope
Where you declare your variables matters
SLIDE 38
Setup void setup ( ) { }
The setup function comes before the loop function and is necessary for all Arduino sketches
SLIDE 39
Setup void setup ( ) { }
The setup header will never change, everything else that occurs in setup happens inside the curly brackets
SLIDE 40 Setup void setup ( ) { pinMode (13, OUTPUT); }
Outputs are declare in setup, this is done by using the pinMode function
This particular example declares digital pin # 13 as an
- utput, remember to use CAPS
SLIDE 41
Setup void setup ( ) { Serial.begin;}
Serial communication also begins in setup
This particular example declares Serial communication at a baud rate of 9600. More on Serial later...
SLIDE 42
Setup, Internal Pullup Resistors void setup ( ) { digitalWrite (12, HIGH); }
You can also create internal pullup resistors in setup, to do so digitalWrite the pin HIGH This takes the place of the pullup resistors currently on your circuit 7 buttons
SLIDE 43
Setup, Interrupts
void setup ( ) { attachInterrupt (interrupt, function, mode) }
Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3). This is a way around the linear processing of Arduino
SLIDE 44
Attach Interrupt Example
interrupt # ISR mode
SLIDE 45 Setup, Interrupts
void setup ( ) { attachInterrupt (interrupt, function, mode) }
Interrupt: the number of the interrupt, 0
- r 1, corresponding to Arduino pins # 2
and 3 respectively Function: the function to call when the interrupt occurs Mode: defines when the interrupt should be triggered
SLIDE 46 Setup, Interrupts
void setup ( ) { attachInterrupt (interrupt, function, mode) }
- LOW whenever pin state is low
- CHANGE whenever pin changes value
- RISING whenever pin goes from low to
high
- FALLING whenever pin goes from low to
high Don’t forget to CAPITALIZE
SLIDE 47
If Statements
if ( this is true ) { do this; }
SLIDE 48
If
if ( this is true ) { do this; }
SLIDE 49
Conditional
if ( this is true ) { do this; }
SLIDE 50
Action
if ( this is true ) { do this; }
SLIDE 51
Else
else { do this; }
SLIDE 52 Basic Repetition
SLIDE 53
Basic Repetition
void loop ( ) { }
SLIDE 54
Basic Repetition
void loop ( ) { }
SLIDE 55
Basic Repetition
void loop ( ) { }
The “void” in the header is what the function will return (or spit out) when it happens, in this case it returns nothing so it is void
SLIDE 56
Basic Repetition
void loop ( ) { } The “loop” in the header is what the function is called, sometimes you make the name up, sometimes (like loop) the function already has a name
SLIDE 57
Basic Repetition
void loop ( ) { } The “( )” in the header is where you declare any variables that you are “passing” (or sending) the function, the loop function is never “passed” any variables
SLIDE 58
Basic Repetition
void loop ( ) { }
SLIDE 59
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here //this could be anything }
SLIDE 60
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 61
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 62
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 63
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 64
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 65
Basic Repetition
for (int count = 0; count<10; count++) { //for action code goes here }
SLIDE 66
Basic Repetition
while ( count<10 ) { //while action code goes here }
SLIDE 67
Basic Repetition
while ( count<10 ) { //while action code goes here //should include a way to change count //variable so the computer is not stuck //inside the while loop forever }
SLIDE 68
Basic Repetition
while ( count<10 ) { //looks basically like a “for” loop //except the variable is declared before //and incremented inside the while //loop }
SLIDE 69
Basic Repetition
Or maybe: while ( digitalRead(buttonPin)==1 ) { //instead of changing a variable //you just read a pin so the computer //exits when you press a button //or a sensor is tripped }
SLIDE 70
Programming, Serial and Virtual Prototyping
SLIDE 71
Code
if ( You like semicolons ) { Stay here for intro to Arduino code } else { Join the MODKit group for GUI code }
SLIDE 72
Serial Communication
Serial Communication is the transferring and receiving of information between two machines, the Arduino dedicates pin # 0 to receiving information and pin 1 to transferring information
SLIDE 73
Serial in Setup
SLIDE 74
Serial Monitor
SLIDE 75
Serial Communication
SLIDE 76 Serial Activity with Circuit 7
- Communication
- Troubleshooting circuits
- Debugging Code
SLIDE 77
Serial Communication: Serial Setup
void setup ( ) { Serial.begin ( 9600 ) ; }
In this case the number 9600 is the baudrate at which the computer and Arduino communicate
SLIDE 78
Serial Communication: Sending a Message
void loop ( ) { Serial.print ( “Constructivism & “ ) ; Serial.println ( “Mechatronics” ) ; }
SLIDE 79
Serial Communication: Serial Debugging
void loop ( ) { int xVar = 10 ; Serial.print ( “Variable xVar is “ ) ; Serial.println ( xVar ) ; }
SLIDE 80
Serial Communication: Serial Troubleshooting
void loop ( ) { Serial.print ( “Digital pin 9 reads “ ) ; Serial.println ( digitalRead ( 9 ) ) ; }
SLIDE 81 Serial Communication: Circuit 7 code
void loop ( ) { buttonState = digitalRead(inputPin); if (buttonState== HIGH){ digitalWrite (ledPin, LOW) } else { digitalWrite(ledPin, HIGH);
Serial.print (“button state is “); Serial.println ( buttonState );
} }