Development Board Learning Kit Multifungsi (Multifuction Shield)

Papan fungsi shield untuk uji komponen dengan empat 7-segment.

Gambar 1.

Gambar 2. [sumber]

Gambar 3. [sumber]

Jumpers:

J1 is used for a 10 k pull up resistor to pin 2 of U5  (to connect a DS1820 temperature sensor [not included with the shield]) (Arduino Pin A4 ?)  {Location C4 in the picture} 

J2 is needed if you want to use the switches S1 S2 and S3 (connected to A1 A2 and A3 of the Arduino. {Location C1 in picture}

A SFH506-38 IR receiver (Pin D2) {Location C3 in picture} is also not included with this shield and can be connected to U4

I expect the 7 pin header {Location B/C1 in picture} with the Chinese characters is the header 7 pin header marked on the shield with “APC220 Bluetooth Voice Recognition Module”. (Pin D0 and D1 ?)

Pin D5 D6 D9 and A5 are accessible by 4 3 pin header connectors next to +5V and GND

D3 is connected to the Buzzer using a transistor! {Location D3 in picture}

 The 4 * 7segement displays are connected using two MC74HC595AD shift registers
D4 7segment Latch
D7 7segment CLK
D8 7segment Data

D10 Led4 {Location A2 in picture}
D11 Led3
D12 Led2
D13 Led1

A0 Pot1 (potentiometer) {Location B/C1 in picture}

A1 Button1 {Location C/D1 in picture}
A2 Button2
A3 Button3

  1. All LEDs blinking
    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);
    }
  2. Switches example
    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);
    		}
    }
  3. Potentiometer 1
    #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);
    }
  4. Pot and led
    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);
    }
    
    
  5. Segment display
    /* 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);
    }
  6. Read pot and display value on display
    /* 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);
    }
  7. Read pot and display value on display (modifikasi untuk meratakan tingkat terang tampilan)
    /* 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);
      delay(5);
      WriteNumberToSegment(1 , (PotValue / 100) % 10);
      delay(5);
      WriteNumberToSegment(2 , (PotValue / 10) % 10);
      delay(5);
      WriteNumberToSegment(3 , PotValue % 10);
    //  delay(4);
    }
     
    /* 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);
    }

Sumber lain:
Hackatronics: Using an Arduino Multi-function Shield