8. multi function shield

multifunction shield type 1

Deze shield omvat:
  • 4 digit 7-segment LED display module aangestuurd dmv 2 74HC595’s
  • 4 LED’s
  • 10K potentiometer
  • 3 druk knoppen
  • Piezo buzzer
  • DS18B20 temperatuur sensor interface (DS18B20 apart aanschaffen)
  • Infrarood ontvanger interface
  • Seriële interface header voor de connectie met seriële modules




multifunctionshield type 2 versie B04505




De B04505 shield bevat:

- 2 Leds
- 1 Full Color Led
- 1 IR sensor
- 1 temperatuursensor LM 35D
- 1 buzzer
- 1 temperatuur/vochtigheid sensor DH11
- 1 kanaals analoge poort (A3)
- 2 kanaals digitale poort (D7, D8)
- 1 seriele poort 


pin configuratie:

A0 potmeter
A1 LDR
A2 LM35 temperatuur sensor
A3 vrij

D1 
D2 schakelaar
D3 schakelaar
D4 DHT11 luchtvochtigheid / temp sensor
D5 buzzer
D6 IR sensor
D7 vrij
D8 vrij
D9 RGB led
D10 RGB led
D11 RGB led


****************************************************************************************************************
                                                          testsoftware multi functionhields 1 en 2

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


// 4 knipper leds, toepasbaar voor zowel multifunctionshield 1 als 2



int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;

void setup()

{
// initialize the digital pin as an output.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);pinMode(led4, OUTPUT);
}

void loop()

{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(1000);
}

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

// Gebruik van de schakelaars, alleen toepasbaar voor multifunctionhield 1


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);
}

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);

}
}

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

// Gebruik van de Potentiometer , zowel toepasbaar voor multifuncionshield 1als 2


#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);
}

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

// Potmeter en Led, zowel toepasbaar voor multifunctionshield 1 als 2



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 */

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);
}

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

// Gebruik van de 7 segment segment displa, alleen toepasbaar voor multifunctionshield 1


/* 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);
}


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

Uitlezen van potmeterwaarde op display, alleen toepasbaar voor multifunctionshield 1


/* 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);
}

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

// IR sensor - alleen multifuncionshield 2


#define IR 6  

int detectie = HIGH;// detectie is standaard 'hoog' (5 V) als de IR sensor geen IR detectie waarneemt.
int poort = 7;
int led=12;

void setup() 
{
 Serial.begin(9600);  
 pinMode(IR, INPUT); // poort 6 wordt als ingang gebruikt
pinMode (poort, OUTPUT);
}

void loop() 

{  
detectie = digitalRead(IR);
if(detectie == LOW)

{
digitalWrite(poort,HIGH);
digitalWrite(led,HIGH);
Serial.print("er wordt een obstakel gedetecteerd!\n");
delay(2500);
}

else
 {
 digitalWrite(poort,LOW);
 digitalWrite(led,LOW);
 Serial.print("geen obstakel\n");
 }

 }
   
********************************************************************

// LDR sensor in combinatie met potmeter, alleen voor multifunctionshield 2


#define vrPin A0
#define ldrPin A1
 void setup() 
{
   Serial.begin(9600);
}
 
void loop() 
{
   float vrValue = analogRead(vrPin);
  float ldrValue = analogRead(ldrPin);
   float vrVoltage = vrValue * (5.0 / 1023.0);
  float ldrVoltage = ldrValue * (5.0 / 1023.0);
   Serial.print("Variable resistor : ");
  Serial.println(vrVoltage);
  Serial.print("LDR value : ");
  Serial.println(ldrVoltage);
  delay(1000);
}

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


 // LM35 temperatuursensor, alleen voor multifunctionshield 2 

 
int val;
int temperatuurPin = A2;

void setup() {
Serial.begin(9600);
}
void loop() 

{
val = analogRead(temperatuurPin);
float mv = ((val/1024.0)*5000)/10;
Serial.print("TEMPERATUUR= ");
Serial.print (mv);
Serial.print("*C");
Serial.println();
delay(1000);
}

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