Upload
fernando-de-lio
View
220
Download
0
Embed Size (px)
Citation preview
7/29/2019 UNO R3 Practise Kit 1
1/56
SainSmart UNO R3
www.sainsmart.com
www.sainsmart.com/vanilla
Practice Kit
7/29/2019 UNO R3 Practise Kit 1
2/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 1 PWM control light brightness
Pulse Width Modulation, or PWM, is a technique for getting analog results with digital means. Digital control is used to create a
square wave, a signal switched between on and off. This on-off pattern can simulate voltages in between full on (5 Volts) and off
(0 Volts) by changing the portion of the time the signal spends on versus the time that the signal spends off. The duration of "on
time" is called the pulse width. To get varying analog values, you change, or modulate, that pulse width. If you repeat this on-off
pattern fast enough with an LED for example, the result is as if the signal is a steady voltage between 0 and 5v controlling the
brightness of the LED.
In the graphic below, the green lines represent a regular time period. This duration or period is the inverse of the PWM
frequency. In other words, with Arduino's PWM frequency at about 500Hz, the green lines would measure 2 milliseconds each.
A call to analogWrite() is on a scale of 0 - 255, such that analogWrite(255) requests a 100% duty cycle (always on), and
analogWrite(127) is a 50% duty cycle (on half the time) for example.
PWM is used in many places, dimmer lighting, motor speed, sound production and so on.
Here are some of the PWM three basic parameters:
1, the pulse width variation (min / max)
2, the pulse period (the reciprocal of the number of frequencies within 1 second pulse)
3, the voltage height (e.g.: 0V-5V)
The 6 PWM interface of SainSmart UNO R3 controller is a digital interface 3,5,6,9,10,11, we have to complete a potentiometer
control lamp experiment.
7/29/2019 UNO R3 Practise Kit 1
3/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Experiment component
Potentiometer :1;
Red M5 LED : 1;
220 Resistance : 1;
Bread board : 1;
Jumper wires.
Potentiometer is the analog value input we received analog port lights connected to the PWM interface, which can produce
different PWM signal lamp brightness change.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
4/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int potpin=0;//define analog interface 0;
int ledpin=11;//define digital interface 11(PWM output)
int val=0;// temporary values of the variables from the sensor
void setup()
{
pinMode(ledpin,OUTPUT);// define digital interface 11 output
Serial.begin(9600);//set baud rate is 9600
//Note: The analog interface is automatically set to enter
}
void loop()
{
val=analogRead(potpin);// Read the analog value of the sensor and assigned to the val
Serial.println(val);//Show val variable
analogWrite(ledpin,val/4);// turn on the LED and set the brightness (PWM output maximum 255)
delay(10);//delay 0.01s
}
7/29/2019 UNO R3 Practise Kit 1
5/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 2 Advertising lights
Experiment component
Red M5 LED : 6;
220 Resistance : 6;
SainSmart Prototype shield : 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
int BASE = 1 ; //the I/O of 1st
LED
int NUM = 6; //amount of LED
void setup()
{
for (int i = BASE; i < BASE + NUM; i ++)
{
pinMode(i, OUTPUT); //set digital I/O output
}
}
void loop()
{
for (int i = BASE; i < BASE + NUM; i ++)
{
digitalWrite(i, LOW); //set digital I/O low, that gradually turn off the lights
delay(200); //delay
}
for (int i = BASE; i < BASE + NUM; i ++)
{
7/29/2019 UNO R3 Practise Kit 1
6/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(i, HIGH); // set digital I/O low high, that gradually turn on the lights
delay(200); //delay
}
}
7/29/2019 UNO R3 Practise Kit 1
7/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 3 Traffic lights
Experiment component
Red M5 LED : 1;
Yellow M5 LED : 1;
Green M5 LED : 1
220 Resistance : 3;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
8/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int redled =10; //define digital pin10
int yellowled =7; //define digital pin7
int greenled =4; //define digital pin4
void setup()
{
pinMode(redled, OUTPUT);//define red LED output
pinMode(yellowled, OUTPUT); //define yellow LED output
pinMode(greenled, OUTPUT); //define green LED output
}
void loop()
{
digitalWrite(redled, HIGH);//lights up red LED
delay(1000);//delay 1s
digitalWrite(redled, LOW); //light off red LED
digitalWrite(yellowled, HIGH);// lights up yellow LED
delay(200);//delay 02s
digitalWrite(yellowled, LOW);// light off yellow LED
digitalWrite(greenled, HIGH);// lights up red LED
delay(1000);//delay 1s
digitalWrite(greenled, LOW);// light off green LED
}
7/29/2019 UNO R3 Practise Kit 1
9/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 4 Pushbutton control lights
Experiment component
Red M5 LED : 1;
Pushbutton : 1
220 Resistance : 1;
10k Resistance : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
10/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int ledpin=11;//define pin11
int inpin=7;//define pin7
int val;//define variable val
void setup()
{
pinMode(ledpin,OUTPUT);//define LED pin output
pinMode(inpin,INPUT);//define pushbutton pin input
}
void loop()
{
val=digitalRead(inpin);// read the level value of pin7 andassigned it to val;
if(val==LOW)//if the pushbutton was push down, light up LED;
{ digi talWrite(ledpin,LOW);}
else
{ digitalWrite(ledpin,HIGH);}
}}
7/29/2019 UNO R3 Practise Kit 1
11/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 5 Responder
Experiment component
Red M5 LED : 1;
Yellow M5 LED : 1;
Green M5 LED : 1;
Pushbutton : 3
220 Resistance : 3;
10k Resistance : 3;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
12/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int redled=10;
int yellowled=9;
int greenled=8;
int redpin=7;
int yellowpin=6;
int greenpin=5;
int red;
int yellow;
int green;
void setup()
{
pinMode(redled,OUTPUT);
pinMode(yellowled,OUTPUT);
pinMode(greenled,OUTPUT);
pinMode(redpin,INPUT);
pinMode(yellowpin,INPUT);
pinMode(greenpin,INPUT);
}
7/29/2019 UNO R3 Practise Kit 1
13/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
void loop()
{
red=digitalRead(redpin);
if(red==LOW)
{ dig italWrite(redled,LOW);}
else
{ digitalWrite(redled,HIGH);}
yellow=digitalRead(yellowpin);
if(yellow==LOW)
{ digi talWrite(yellowled,LOW);}
else
{ digitalWrite(yellowled,HIGH);}
green=digitalRead(greenpin);
if(green==LOW)
{ digitalWrite(greenled,LOW);}
else
{ digitalWrite(greenled,HIGH);}
}
7/29/2019 UNO R3 Practise Kit 1
14/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 6 Buzzer
Experiment component
Buzzer : 1;
Pushbutton : 1
SainSmart Prototype Shield : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
int buzzer=8;//set buzzer I/O pin number;
void setup()
{
pinMode(buzzer,OUTPUT);//set buzzer I/O pin mode output;
}
void loop()
{
unsigned char i,j;//define variable;
while(1)
{
for(i=0;i
7/29/2019 UNO R3 Practise Kit 1
15/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
{
digitalWrite(buzzer,HIGH);//vocalize
delay(2);//delay 2ms
digitalWrite(buzzer,LOW);//mute
delay(2);//delay 2ms
}
}
}
7/29/2019 UNO R3 Practise Kit 1
16/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 7 Light control sound
Experiment component
Buzzer : 1;
Photoresistor : 1
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
void setup()
{
pinMode(6,OUTPUT);
}
void loop()
{
while(1)
{
char i,j;
while(1)
{
for(i=0;i
7/29/2019 UNO R3 Practise Kit 1
17/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
for(i=0;i
7/29/2019 UNO R3 Practise Kit 1
18/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 8 Photosensitive lights
Experiment component
Red M5 LED : 1;
Photoresistor : 1;
220 Resistance : 1;
10k Resistance : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
19/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int potpin=0;//define analog pin0 connected with photoresistor;
int ledpin=11;//define digital pin11 output PWM adjust LED brightness;
int val=0;//define variable;
void setup()
{
pinMode(ledpin,OUTPUT);//define digital pin11 output;
Serial.begin(9600);// set baud rate is 9600
}
void loop()
{
val=analogRead(potpin);//read the sensor analog value and assigned it to val;
Serial.println(val);//show the value of val;
analogWrite(ledpin,val);// light the LED and set the brightness (PWM output maximum 255)
delay(10);//delay 0.01s
}
7/29/2019 UNO R3 Practise Kit 1
20/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 9 Flame sensor
Experiment component
Flame sensor : 1;
Buzzer : 1;
10 Resistance : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
int flame=A5;//define flame sensor
int Beep=8;//define buzzer interface digital interface 7
int val=0;//define numeric variables
val void setup()
{ pinMode(Beep,OUTPUT);//defined LED output
pinMode(flame,INPUT);// define buzzer input
Serial.begin(9600);//set the baud rate to 9600 }
void loop() { val=analogRead(flame);//read flame sensor analog value
Serial.println(val);//output analog values, and print them out
if(val>=600)//buzzer sounds when the analog value is greater than 600
{ digitalWrite(Beep,HIGH); } else { digitalWrite(Beep,LOW); } }
7/29/2019 UNO R3 Practise Kit 1
21/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 10 Nixie Tube
Experiment component
8 Nixie Tube : 1;
220 Resistance : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
22/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
//digital IO pin setting controls paragraphs
int a=7;//define digital pin7 connected to nixie tube a segment
int b=6;// define digital pin6 connected to nixie tube b segment
int c=5;// define digital pin5 connected to nixie tube c segment
int d=11;// define digital pin11 connected to nixie tube d segment
int e=10;// define digital pin10 connected to nixie tube e segment
int f=8;// define digital pin8 connected to nixie tube f segment
int g=9;// define digital pin9 connected to nixie tube g segment
int dp=4;// define digital pin4 connected to nixie tube dp segment
void digital_1(void) //display 1
{
unsigned char j;
digitalWrite(c,HIGH);//To the digital pin5 high, lit segment c
digitalWrite(b,HIGH);// lit segment b
for(j=7;j
7/29/2019 UNO R3 Practise Kit 1
23/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void) //display 5
{
unsigned char j;
for(j=7;j
7/29/2019 UNO R3 Practise Kit 1
24/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
void setup()
{
int i;//
for(i=4;i
7/29/2019 UNO R3 Practise Kit 1
25/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 11 4-bit Nixie Tube
Experiment component
4-bit Nixie Tube : 1;
220 Resistance : 5;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
26/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
//set anode interface
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;
//set cathode interface
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
// Set variables
long n = 0;
int x = 100;
int del = 55; // This number is fine-tuning of the clock
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
7/29/2019 UNO R3 Practise Kit 1
27/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
}
void loop()
{
clearLEDs();
pickDigit(1);
pickNumber((n/x/1000)%10);
delayMicroseconds(del);
clearLEDs();
pickDigit(2);
pickNumber((n/x/100)%10);
delayMicroseconds(del);
clearLEDs();
pickDigit(3);
dispDec(3);
pickNumber((n/x/10)%10);
delayMicroseconds(del);
clearLEDs();
pickDigit(4);
pickNumber(n/x%10);
delayMicroseconds(del);
n++;
if (digitalRead(13) == LOW)
{
n = 0;
}
}
void pickDigit(int x) //defing pickDigit(x), its role is turn on the dx port
{
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
7/29/2019 UNO R3 Practise Kit 1
28/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
switch(x)
{
case 1:
digitalWrite(d1, LOW);
break;
case 2:
digitalWrite(d2, LOW);
break;
case 3:
digitalWrite(d3, LOW);
break;
default:
digitalWrite(d4, LOW);
break;
}
}
void pickNumber(int x) //define pickNumber(x), Its role is to show digital x
{
switch(x)
{
default:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
7/29/2019 UNO R3 Practise Kit 1
29/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
}
}
void dispDec(int x) // Set to open the decimal point
{
digitalWrite(p, LOW);
}
void clearLEDs() //clear the screen
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(p, LOW);
}
void zero() // Define the number 0 cathode pin switch
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
void one()
{
digitalWrite(a, LOW);
7/29/2019 UNO R3 Practise Kit 1
30/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void two()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
void three()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
void four()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void five()
{
digitalWrite(a, HIGH);
7/29/2019 UNO R3 Practise Kit 1
31/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void six()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void seven()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void eight()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void nine()
{
digitalWrite(a, HIGH);
7/29/2019 UNO R3 Practise Kit 1
32/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
7/29/2019 UNO R3 Practise Kit 1
33/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 12 74HC595
Experiment component
74HC595 : 1;
Red M5 LED : 4;
Green M5 LED : 4;
220 Resistance : 8;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
34/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int data = 2;
int clock = 4;
int latch = 5;
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
}
void loop()
{
int delayTime = 100;
for(int i = 0; i < 256; i++)
{
updateLEDs(i);
delay(delayTime);
}
}
void updateLEDs(int value)
{
digitalWrite(latch, LOW);
shiftOut(data, clock, MSBFIRST, value);
digitalWrite(latch, HIGH);
}
void updateLEDsLong(int value)
{
digitalWrite(latch, LOW);
for(int i = 0; i < 8; i++)
{
int bit = value & B10000000;
value = value
7/29/2019 UNO R3 Practise Kit 1
35/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
B01000000, B10000000};
int masks[] ={B11111110, B11111101, B11111011, B11110111, B11101111, B11011111,
B10111111, B01111111};
void changeLED(int led, int state)
{
ledState = ledState & masks[led];
if(state == ON){ledState = ledState | bits[led];}
updateLEDs(ledState);
}
7/29/2019 UNO R3 Practise Kit 1
36/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 13 Servo Motor
Experiment component
RB-412 : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
37/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
int servopin=9;//Defines a digital interface 9 to connect the servo signal line
int myangle;//Define the angular variable
int pulsewidth;//Defined variable pulse width
int val;
void servopulse(int servopin,int myangle)//Defines a pulse function
{
pulsewidth=(myangle*11)+500;//Angle will be transformed into pulse width value of 500-2480
digitalWrite(servopin,HIGH);//The servo interface level to high
delayMicroseconds(pulsewidth);//delay the microseconds of the pulse width value
digitalWrite(servopin,LOW);//The servo interface level to low
delay(20-pulsewidth/1000);
}
void setup()
{
pinMode(servopin,OUTPUT);//Set servo interface for the output interface
Serial.begin(9600);//Connected to the serial port, baud rate is 9600
Serial.println("servo=o_seral_simple ready" ) ;
}
void loop()//0-9 numbers will translate into 0-180 a ngle and the corresponding number of times the LED blinks
7/29/2019 UNO R3 Practise Kit 1
38/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
{
val=Serial.read();//Read the value of the serial port
if(val>'0'&&valServo, call servo function. Or you may also directly enter the #include, but
noticed that there are no space between #include and .
Servo myservo;//Define servo variable names
void setup()
{
myservo.attach(9);//Define servo interface (9, 10 can, shortcoming is only can control 2)
}
void loop()
{
myservo.write(90);//Set the steering gear rotating Angle
}
7/29/2019 UNO R3 Practise Kit 1
39/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 14 Infrared remote control
Experiment component
Infrared remote controller : 1;
Infrared : 1;
LED lamp : 6;
220 Resistance : 6;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
#include
int RECV_PIN = 11;
int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
long on1 = 0x00FFA25D;
long off1 = 0x00FFE01F;
long on2 = 0x00FF629D;
long off2 = 0x00FFA857;
long on3 = 0x00FFE21D;
long off3 = 0x00FF906F;
7/29/2019 UNO R3 Practise Kit 1
40/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
long on4 = 0x00FF22DD;
long off4 = 0x00FF6897;
long on5 = 0x00FF02FD;
long off5 = 0x00FF9867;
long on6 = 0x00FFC23D;
long off6 = 0x00FFB047;
IRrecv irrecv(RECV_PIN);
decode_results results;
// Dumps out the decode_results structure.
// Call this after IRrecv::decode()
// void * to work around compiler issue
//void dump(void *v) {
// decode_results *results = (decode_results *)v
void dump(decode_results *results) {
int count = results->rawlen;
if (results->decode_type == UNKNOWN)
{
Serial.println("Could not decode message");
}
else
{
if (results->decode_type == NEC)
{ Serial.print("Decoded NEC: ");
}
else if (results->decode_type == SONY)
{
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5)
{
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6)
{
Serial.print("Decoded RC6: ");
}
Serial.print(results->value, HEX);
Serial.print(" (");
Serial.print(results->bits, DEC);
Serial.println(" bits)");
}
Serial.print("Raw (");
Serial.print(count, DEC);
Serial.print("): ");
7/29/2019 UNO R3 Practise Kit 1
41/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
for (int i = 0; i < count; i++)
{
if ((i % 2) == 1) {
Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
}
else
{
Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
}
Serial.print(" ");
}
Serial.println("");
}
void setup()
{
pinMode(RECV_PIN, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
int on = 0;
unsigned long last = millis();
void loop()
{
if (i rrecv.decode(&results))
{
// If it's been at least 1/4 second since the last
// IR received, toggle the relay
if (millis() - last > 250)
{
on = !on;
// digitalWrite(8, on ? HIGH : LOW);
digitalWrite(13, on ? HIGH : LOW);
dump(&results);
}
if (results.value == on1 )
7/29/2019 UNO R3 Practise Kit 1
42/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
digitalWrite(LED1, HIGH);
if (results.value == off1 )
digitalWrite(LED1, LOW);
if (results.value == on2 )
digitalWrite(LED2, HIGH);
if (results.value == off2 )
digitalWrite(LED2, LOW);
if (results.value == on3 )
digitalWrite(LED3, HIGH);
if (results.value == off3 )
digitalWrite(LED3, LOW);
if (results.value == on4 )
digitalWrite(LED4, HIGH);
if (results.value == off4 )
digitalWrite(LED4, LOW);
if (results.value == on5 )
digitalWrite(LED5, HIGH);
if (results.value == off5 )
digitalWrite(LED5, LOW);
if (results.value == on6 )
digitalWrite(LED6, HIGH);
if (results.value == off6 )
digitalWrite(LED6, LOW);
last = millis();
irrecv.resume(); // Receive the next value
}
}
7/29/2019 UNO R3 Practise Kit 1
43/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 15 1602LCD
Experiment component
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
44/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
// include the library code:
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of s econds since reset:
lcd.print(millis()/1000);
}
7/29/2019 UNO R3 Practise Kit 1
45/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 16 PS2 joystick
Experiment component
SainSmart JoyStick Module : 1;
1602LCD : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
#include //Call comes Arduino library LiquidCrystal
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Set the interface
int xpotPin = 0; //Set analog port 0 for the X signal input port
int ypotPin = 1; // Set analog port 1 for the y signal input port
int bpotPin = 2; //Set analog port 2 for the button signal input port
int xval=0; //Set variable
int yval=0;
int bval=0;
void setup()
{
lcd.begin(16, 2); //Initialize the LCD
delay(1000); //delay 1000ms
}
void loop ()
{
7/29/2019 UNO R3 Practise Kit 1
46/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
xval = analogRead(xpotPin); //xval variable is from 0 to the value read from the signal port
yval = analogRead(ypotPin); // yval variable is from 1 to the value read from the signal port
bval = analogRead(bpotPin); //bval variable is from 2 to the value read from the signal port
lcd.clear(); //cls
lcd.setCursor(0, 0) ; //Set the cursor position to the first position of the first row
lcd.print("X="); //The screen display text X =
lcd.print(xval);
lcd.setCursor(7, 0) ; //Set the cursor position to the eighth position of the first row
lcd.print("Y="); //The screen display text Y =
lcd.print(yval);
if (bval
7/29/2019 UNO R3 Practise Kit 1
47/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 17 Stepper motor
Experiment component
SainSmart Stepper motor : 1;
SainSmart L293D Motor Drive Shield : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
// MakeShields Motor shield library
// copyright MakeShields, 2010
// this code is public domain, enjoy!
#include
#include
// DC motor on M2
MS_DCMotor motor(2);
// DC hobby servo
Servo servo1;
// Stepper motor on M3+M4 48 steps per revolution
MS_Stepper stepper(48, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor party!");
7/29/2019 UNO R3 Practise Kit 1
48/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
// turn on servo
servo1.attach(9);
// turn on motor #2
motor.setSpeed(200);
motor.run(RELEASE);
}
int i;
// Test the DC motor, stepper and servo ALL AT ONCE!
void loop() {
motor.run(FORWARD);
for (i=0; i
7/29/2019 UNO R3 Practise Kit 1
49/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 18 RGB module
Experiment component
RGB module : 1;
Bread board: 1;
Jumper wires.
Example code:
int ledPin = 13; // LED is connected to digital pin 13
int redPin = 11; // R petal on RGB LED module connected to digital pin 11
int greenPin = 9; // G petal on RGB LED module connected to digital pin 9
int bluePin = 10; // B petal on RGB LED module connected to digital pin 10
void setup()
{
pinMode(ledPin, OUTPUT); // sets the ledPin to be an output
pinMode(redPin, OUTPUT); // sets the redPin to be an output
pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
}
void loop() // run over and over again
{
// Basic colors:
color(255, 0, 0); // turn the RGB LED red
delay(1000); // delay for 1 second
color(0,255, 0); // turn the RGB LED green
delay(1000); // delay for 1 second
color(0, 0, 255); // turn the RGB LED blue
delay(1000); // delay for 1 second
// Example blended colors:
color(255,255,0); // turn the RGB LED yellow
delay(1000); // delay for 1 second
color(255,255,255); // turn the RGB LED white
delay(1000); // delay for 1 second
color(128,0,255); // turn the RGB LED purple
delay(1000); // delay for 1 second
color(0,0,0); // turn the RGB LED off
delay(1000); // delay for 1 second
}
void color (unsigned char red, unsigned char green, unsigned char blue) // the color generating function
{
analogWrite(redPin, 255-red);
analogWrite(bluePin, 255-blue);
7/29/2019 UNO R3 Practise Kit 1
50/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
analogWrite(greenPin, 255-green);
}
7/29/2019 UNO R3 Practise Kit 1
51/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 19 Relay
Experiment component
RGB module : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
int jdqPin=13;
void setup()
{
pinMode(jdqPin,OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(jdqPin,HIGH);
delay(1000);
digitalWrite(jdqPin,LOW);
delay(1000);
}
7/29/2019 UNO R3 Practise Kit 1
52/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 20 Voltmeter
Experiment component
SainSmart Prototype shield : 1;
1k Resistance : 1;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
Example code:
float temp; //Create a float variable temp as a storage space to store data preparation
void setup()
{
Serial.begin(9600); //Using 9600 baud rate serial communication
}
void loop()
{
int V1 = analogRead(A0); //A0 port to read from the voltage data into newly created variable of type integer V1, analog port
voltage measurement range is 0-5V returns a value of 0-1024
float vol = V1*(5.0 / 1023.0); //We will be converted into the actual value of V1 voltage value into a float variable vol
7/29/2019 UNO R3 Practise Kit 1
53/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
if (vol == temp) // This part of the Classifying are used to filter duplicate data, only by the of times voltage values and the
last of varying be conducted only after output
{
temp = vol; //After comparison, the ratio of this value into a variable temp for comparison
}
else
{
Serial.print(vol); //Serial output voltage value, and not a newline
Serial.println(" V"); //Serial output characters V, and line breaks
temp = vol;
delay(1000); // Output after the completion of the wait 1 seconds, is used to control the data refresh rate.
}
}
7/29/2019 UNO R3 Practise Kit 1
54/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Chapter 21 Temperature Sensor
Experiment component
LM35 Temperature sensor : 1;
Red M5 LED : 1;
Yellow M5 LED : 1;
Blue M5 LED : 1;
220 Resistance : 3;
Bread board: 1;
Jumper wires.
Connect your circuit as the below diagram
7/29/2019 UNO R3 Practise Kit 1
55/56
www.sainsmart.com
Copyright 2013 SainSmart All Rights Reserved
Example code:
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
int vol = analogRead(A0) * (5.0 / 1023.0*100); //read LM35 temperature
if (vol=32 && vol
7/29/2019 UNO R3 Practise Kit 1
56/56
www.sainsmart.com
else if (vol>=41) //High temperature setting
{
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
}
}