Nothing Special   »   [go: up one dir, main page]

Multi Function Shield Examples

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

multi function shield examples

This shield got my attention as it looked like a nice beginners learning type shield with which you
could get up and running with an Arduino
Here is a picture of the board, a few code examples are available later on in the article.

multi function shield


Features
4 digit 7-segment LED display module driven by two serial 74HC595s
4 LEDs
10K potentiometer
3 x push buttons
Piezo buzzer
DS18B20 temperature sensor interface (not included)
Infrared receiver interface
Serial interface header for connection to serial modules

Code Examples
********************************************************************

Blinking LED
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

int led = 13;


void setup()
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
void loop()
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

********************************************************************
All LEDS blinking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

int
int
int
int

led1
led2
led3
led4

=
=
=
=

13;
12;
11;
10;

void setup()
{
// initialize
pinMode(led1,
pinMode(led2,
pinMode(led3,
pinMode(led4,
}

the digital pin as an output.


OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

void loop()
{
digitalWrite(led1,
digitalWrite(led2,
digitalWrite(led3,
digitalWrite(led4,
delay(1000);
digitalWrite(led1,
digitalWrite(led2,
digitalWrite(led3,
digitalWrite(led4,
delay(1000);
}

HIGH);
HIGH);
HIGH);
HIGH);
LOW);
LOW);
LOW);
LOW);

********************************************************************
Sw itches example
1
2
3
4
5
6
7
8
9
10
11
12
13

const byte LED[] = {13,12,11,10};


#define BUTTON1 A1
#define BUTTON2 A2
void setup()
{
// initialize the digital pin as an output.
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);
pinMode(LED[3], OUTPUT);

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

}
void loop()
{
if(!digitalRead(BUTTON1))
{
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
}
if(!digitalRead(BUTTON2))
{
digitalWrite(LED[0], LOW);
digitalWrite(LED[1], LOW);
digitalWrite(LED[2], LOW);
digitalWrite(LED[3], LOW);
}
}

********************************************************************
Potentiometer 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#define Pot1 0
void setup()
{
Serial.begin(9600);
}
/* Main Program */
void loop()
{
Serial.print(Potentiometer reading: );
Serial.println(analogRead(Pot1));
/* Wait 0.5 seconds before reading again */
delay(500);
}

********************************************************************
Pot and led
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

const byte LED[] = {13,12,11,10};


#define Pot1 0
void setup()
{
Serial.begin(9600);
// initialize the digital pin as an output.
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);
pinMode(LED[3], OUTPUT);
}
/* Main Program */
void loop()
{
int PotValue;
//Serial.print(Potentiometer reading: );
PotValue = analogRead(Pot1);
/* Wait 0.5 seconds before reading again */

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

if(PotValue < 400)


{
digitalWrite(LED[0], LOW);
digitalWrite(LED[1], LOW);
digitalWrite(LED[2], LOW);
digitalWrite(LED[3], LOW);
Serial.print(Potentiometer: );
Serial.println(PotValue);
}
else
{
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
Serial.print(Potentiometer: );
Serial.println(PotValue);
}
delay(500);
}

********************************************************************
segment display
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

/* Define shift register pins used for seven segment display */


#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
void setup ()
{
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop()
{
/* Update the display with the current counter value */
WriteNumberToSegment(0 , 0);
WriteNumberToSegment(1 , 1);
WriteNumberToSegment(2 , 2);
WriteNumberToSegment(3 , 3);
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}

********************************************************************
Read pot and display v alue on display

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

/* Define shift register pins used for seven segment display */


#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
#define Pot1 0
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
void setup ()
{
Serial.begin(9600);
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop()
{
int PotValue;
PotValue = analogRead(Pot1);
Serial.print(Potentiometer: );
Serial.println(PotValue);
/* Update the display with the current counter value */
WriteNumberToSegment(0 , PotValue / 1000);
WriteNumberToSegment(1 , (PotValue / 100) % 10);
WriteNumberToSegment(2 , (PotValue / 10) % 10);
WriteNumberToSegment(3 , PotValue % 10);
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}

********************************************************************
Resources
Multifunctional Expansion Board Shield Kit

multi function shield examples


This shield got my attention as it looked like a nice beginners learning type shield with which you could
get up and running with an Arduino
Here is a picture of the board, a few code examples are available later on in the article.

multi function shield


Features
4 digit 7-segment LED display module driven by two serial 74HC595s
4 LEDs
10K potentiometer
3 x push buttons
Piezo buzzer
DS18B20 temperature sensor interface (not included)
Infrared receiver interface
Serial interface header for connection to serial modules

Code Examples
********************************************************************

Blinking LED
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

int led = 13;

void setup()
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
void loop()
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}

********************************************************************
All LEDS blinking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

int
int
int
int

led1
led2
led3
led4

=
=
=
=

13;
12;
11;
10;

void setup()
{
// initialize
pinMode(led1,
pinMode(led2,
pinMode(led3,
pinMode(led4,
}

the digital pin as an output.


OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);

void loop()
{
digitalWrite(led1,
digitalWrite(led2,
digitalWrite(led3,
digitalWrite(led4,
delay(1000);
digitalWrite(led1,
digitalWrite(led2,
digitalWrite(led3,
digitalWrite(led4,
delay(1000);
}

HIGH);
HIGH);
HIGH);
HIGH);
LOW);
LOW);
LOW);
LOW);

********************************************************************
Switches example
1
2
3
4
5
6
7
8
9
10
11
12

const byte LED[] = {13,12,11,10};


#define BUTTON1 A1
#define BUTTON2 A2
void setup()
{
// initialize the digital pin as an output.
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

pinMode(LED[3], OUTPUT);
}
void loop()
{
if(!digitalRead(BUTTON1))
{
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
}
if(!digitalRead(BUTTON2))
{
digitalWrite(LED[0], LOW);
digitalWrite(LED[1], LOW);
digitalWrite(LED[2], LOW);
digitalWrite(LED[3], LOW);
}
}

********************************************************************
Potentiometer 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#define Pot1 0
void setup()
{
Serial.begin(9600);
}
/* Main Program */
void loop()
{
Serial.print(Potentiometer reading: );
Serial.println(analogRead(Pot1));
/* Wait 0.5 seconds before reading again */
delay(500);
}

********************************************************************
Pot and led
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

const byte LED[] = {13,12,11,10};


#define Pot1 0
void setup()
{
Serial.begin(9600);
// initialize the digital pin as an output.
/* Set each pin to outputs */
pinMode(LED[0], OUTPUT);
pinMode(LED[1], OUTPUT);
pinMode(LED[2], OUTPUT);
pinMode(LED[3], OUTPUT);
}
/* Main Program */
void loop()
{
int PotValue;
//Serial.print(Potentiometer reading: );
PotValue = analogRead(Pot1);

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/* Wait 0.5 seconds before reading again */


if(PotValue < 400)
{
digitalWrite(LED[0], LOW);
digitalWrite(LED[1], LOW);
digitalWrite(LED[2], LOW);
digitalWrite(LED[3], LOW);
Serial.print(Potentiometer: );
Serial.println(PotValue);
}
else
{
digitalWrite(LED[0], HIGH);
digitalWrite(LED[1], HIGH);
digitalWrite(LED[2], HIGH);
digitalWrite(LED[3], HIGH);
Serial.print(Potentiometer: );
Serial.println(PotValue);
}
delay(500);
}

********************************************************************
segment display
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

/* Define shift register pins used for seven segment display */


#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
void setup ()
{
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop()
{
/* Update the display with the current counter value */
WriteNumberToSegment(0 , 0);
WriteNumberToSegment(1 , 1);
WriteNumberToSegment(2 , 2);
WriteNumberToSegment(3 , 3);
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}

********************************************************************

Read pot and display value on display


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

/* Define shift register pins used for seven segment display */


#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
#define Pot1 0
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
void setup ()
{
Serial.begin(9600);
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop()
{
int PotValue;
PotValue = analogRead(Pot1);
Serial.print(Potentiometer: );
Serial.println(PotValue);
/* Update the display with the current counter value */
WriteNumberToSegment(0 , PotValue / 1000);
WriteNumberToSegment(1 , (PotValue / 100) % 10);
WriteNumberToSegment(2 , (PotValue / 10) % 10);
WriteNumberToSegment(3 , PotValue % 10);
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}

********************************************************************
Resources
Multifunctional Expansion Board Shield Kit

You might also like