×

Multifunctional Expansion Board Shield

Rp36.000

Modul ini didesain untuk Arduino UNO dan Leonardo, memiliki fitur yang cukup banyak sehingga kita tidak perlu melakukan testing menggunakan banyak kabel jumper, semua komponen seperti buzzer, led, switch/ push button, trimpot/ potensiometer, display 7 segment sudah tersedia.




📍 Self Pickup : Ciledug, Kota Tangerang
Produk juga tersedia di :
| 🛍 ️Tokopedia
Layanan tersedia :
👨‍🏫 Tutorial | 👥 Konsultasi | 👨‍🔧 Toy Repair <style>
Category:

Description

Download User Manual (Bahasa Inggris)

Modul ini didesain untuk Arduino UNO dan Leonardo, memiliki fitur yang cukup banyak sehingga kita tidak perlu melakukan testing menggunakan banyak kabel jumper, semua komponen seperti buzzer, led, switch/ push button, trimpot/ potensiometer, display 7 segment sudah tersedia.

Selain itu juga disediakan (ready to use) port untuk Receiver Infrared (TSOP series) dan Sensor LM35 (dijual terpisah, lihat bagian bawah – related products).

Yang paling menarik adalah modul ini pas banget ditancapkan ke Arduino UNO atau Leonardo :

Catatan : modul ini memiliki banyak port yang mungkin kita gunakan, periksa skematik sebelum menghubungkan komponen apapun, sehingga tidak terjadi kerusakan pada modul/ alat.

Fitur :

  • 7 Segment Display (4 digit)
  • 2 x IC 74HC595 (driver 7 segment)
  • 4 x SMT LED
  • 1 x Trimpot Multiturn 10K Ohm
  • 3 x Push Button
  • 1 x Buzzer
  • 1 x Soket Port untuk LM35/ DS18B20 temperature sensor pada U4 dan U5
  • 1 x Soket Port untuk TSOP1838 infrared receiver module
  • 1 x Soket Port APC220 wireless module interface (serial/UART interface)
  • 1 x Tombol Reset Arduino

Jumper Pin, terdapat 2 jumper pada board, yaitu J1 dan J2.

  • J1 = jika digunakan maka memberi sumber tegangan (pullup 10K Ohm) pada female header yang dihubungkan dengan LM35/ DS18B20 (termperature sensor) di Port U5-18B20-LM35-A4.

 

  • J2 = jika digunakan maka kita dapat menggunakan Saklar S1-A1, S2-A2, S2-A3 (pada rangkaian akan terhubung dengan Port A1, A2, dan A3)
Pin Layout
  • Serial LED display driver (74HC595) – Latch 4, Clock 7, Data 8 (D4 : 7 segment Latch,
    D7 : 7 segment CLK, D8 : 7 segment Data)
  • Four LEDs – Pin 10,11,12,13 (D10 : Led4, D11 : Led3, D12 : Led2, D13 : Led1)
  • Trimpot (10KOhm) – Pin A0
  • Three pushbuttons – Pin A1, A2 , A3 (Jumper J2 harus terpasang)
  • Piezo-buzzer – Pin D3 (digital on/off)
  • DS18B20/LM35 temperature sensor – Pin A4  (Jumper J1 harus terpasang)
  • Infrared receiver module (remote control) – Pin 2
  • Header for APC220 shield – Gnd, 5V , D0, D1 (rx/tx)
  • Reset pushbutton – Gnd
  • Free pins header (PWM) – Pin D5, D6, D9, A5

Circuit Diagram

Looking at the schematic, it looks like using the DS18B20 temperature sensor (and the infrared receiver module) requires a bit of research. As indicated in the top silkscreen layout, the flat (labeled) side of the temperature sensor must face the bottom side of the Multi-function shield fronting the three pushbuttons. Also, the legend “U5-18b20-LM35-A4” has an arrow pointing up toward the middle pin (A4) of the temperature sensor header (GND on the left, DQ in the middle, and 5 V on the right). The jumper J1 feeds 5 V to the middle pin DQ through a 10K resistor (pull-up configuration). Similarly, pin notation for the infrared receiver module is OUT (D2) – GND – 5V.

Contoh script Arduino untuk melakukan test pada module :

1. Semua LED Berkedip :

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. Tes Push Button

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. Tes Trimpot / Multiturn

#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. Tes Trimpot dan 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.  Tes Display 7 Segment

/* 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. Tes baca Trimpot dan Display hasil ke 7 Segment

/* 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. Sama seperti no.6 – dengan tambahan kecerahan LED Display 7 Segment

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

Additional information

Weight 0,1 kg

You may also like…