You are on page 1of 8

JOB SHEET P5 : ANTARMUKA 7-SEGMENT DISPLAY

1 Tujuan Praktek : a. Mengetahui cara menghubungkan (antarmuka) 7-Segment Display ke board mikrokontroler Arduino Uno b. Membuat aplikasi pengontrolan yang menggunakan komponen I/O : sensor/potensiometer dan 7-Segment Display

Alat/Komp onen : No Perangkat/Komp onen 1 2 3 4 5 Board Arduino Uno Kabel USB A-B Protoboard 7-Segment Display CC Potensiometer 10k Jumlah 1 1 1 2 1 No 6 7 8 9 Perangkat/Komp onen Distance Sensor GP2Y0A02 Transistor BC-547 Resistor 220 Kabel jumper Jumlah 1 2 8 Secukupnya

Kegiatan Praktek : a. Rangkai dan ujilah sampai berhasil, aplikasi antarmuka 7-segment display P5.1 sampai P5.4. b. Rancang, rangkai, dan ujilah satu aplikasi antarmuka yang menggunakan 7-segment display (DIY P5.5). c. Buat dan kumpulkan Laporannya.
Page 1 of 8 | P5 - Antarmuka 7-Segment Display

Pinout 7-segment display cc dan ca

Antarmuka Arduino

1x 7-segment display cc

Prinsip kerja multiplexing 4x 7-segment display

Multiplexing 4 x 7-segment display cc

Page 2 of 8 | P5 - Antarmuka 7-Segment Display

P5.1 - ONE-DIGIT UP COUNTER

P5.2

DISPLAY INPUT POTENSIOMETER

/* * One-digit up counter * Displays number 0 to 9 (up counter) on one digit 7-seg display cc */ // bits representing segments a through g and dp for number 0-9 const byte numeral[10] = { //abcdefg and dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7

/* * Display input potensiometer * Displays number 0 to 9 from a potensio on one digit 7-seg display cc */ // bits representing segments a through g and dp for number 0-9 const byte numeral[10] = { // abcdefg and dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8

Page 3 of 8 | P5 - Antarmuka 7-Segment Display

B11111110, // 8 B11100110, // 9 }; // pins for decimal point and each segment // dp,g,f,e.d.c.b.a const int segmentPins[8] = {9,8,7,6,5,4,3,2}; void setup() { for(int i=0; i < 8; i++) { pinMode(segmentPins[i], OUTPUT); // set all pins to output } } void loop() { for(int i=0; i <= 10; i++) { showDigit(i); delay(1000); } // the last value if i is 10 and this will turn the display off delay(2000); // pause two seconds with the display off } // Displays a number from 0 through 9 on a 7-segment display // any value not within the range of 0-9 turns the display off void showDigit( int number) { boolean isBitSet; for(int segment = 1; segment <= 8; segment++)

B11100110, // 9 }; // pins for decimal point and each segment // dp,g,f,e.d.c.b.a const int segmentPins[8] = {9,8,7,6,5,4,3,2}; void setup() { Serial.begin(9600); for(int i=0; i < 8; i++) { pinMode(segmentPins[i], OUTPUT); // set all pins to output } } void loop() { int potVal = analogRead(A0); // pin A0 for potensio potVal=map(potVal,0,1023,0,9); Serial.println(potVal); showDigit(potVal); } // Displays a number from 0 through 9 on a 7-segment display // any value not within the range of 0-9 turns the display off void showDigit( int number) { boolean isBitSet; for(int segment = 1; segment <= 8; segment++) { isBitSet = bitRead(numeral[number], segment); //isBitSet = ! isBitSet; // use this line if common anode display

Page 4 of 8 | P5 - Antarmuka 7-Segment Display

{ if( number < 0 || number > 9){ isBitSet = 0; // turn off all segments } else{ // isBitSet will be true if given bit is 1 isBitSet = bitRead(numeral[number], segment); } //isBitSet = ! isBitSet; // use this line if common anode display digitalWrite( segmentPins[segment], isBitSet); } }

digitalWrite( segmentPins[segment], isBitSet);

} }

P5.3 - MULTIPLEXING TWO-DIGIT DISPLAY

P5.4 - DISTANCE DISPLAY

Page 5 of 8 | P5 - Antarmuka 7-Segment Display

/* /* * Distance display sketch * Multiplexing two-digit display sketch * Displays the distance of an IR sensor on a multiplex two-digit display * Displays the value of a potensio (0 - 99) on a multiplex two-digit display */ */ // bits representing segments a through g and dp for number 0-9 // bits representing segments a through g and dp for number 0-9 const int numeral[10] = { const int numeral[10] = { //abcdefg and dp //abcdefg and dp B11111100, // 0 B11111100, // 0 B01100000, // 1 B01100000, // 1 B11011010, // 2 B11011010, // 2 B11110010, // 3 B11110010, // 3 B01100110, // 4 B01100110, // 4 B10110110, // 5 B10110110, // 5 B00111110, // 6 B00111110, // 6 B11100000, // 7 B11100000, // 7 B11111110, // 8 B11111110, // 8 B11100110, // 9 B11100110, // 9 }; }; // pins for decimal point and each segment // pins for decimal point and each segment // dp,g,f,e.d.c.b.a // dp,g,f,e.d.c.b.a const int segmentPins[8] = {1,2,3,4,5,6,7,8}; const int segmentPins[8] = {1,2,3,4,5,6,7,8}; const int nbrDigits= 2; // the number of digits in the LED display const int nbrDigits= 2; // the number of digits in the LED display //digit 1 2 //digit 1 2 const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD void setup() void setup() { { Serial.begin(9600); Serial.begin(9600); for(int i=0; i < 8; i++) for(int i=0; i < 8; i++) pinMode(segmentPins[i], OUTPUT); // set all segs and dp pins to outp

Page 6 of 8 | P5 - Antarmuka 7-Segment Display

pinMode(segmentPins[i], OUTPUT); // set all segs and dp pins to outp for(int i=0; i < nbrDigits; i++) for(int i=0; i < nbrDigits; i++) pinMode(digitPins[i], OUTPUT); pinMode(digitPins[i], OUTPUT); } } void loop() { int potVal = analogRead(A0); // pin A0 connected to potensio potVal = map(potVal,0,1023,0,99); Serial.println(potVal); showNumber(potVal); } void showNumber( int number) { if(number == 0) showDigit(0, nbrDigits-1) ; // display 0 in the rightmost digit else { // display the value corresponding to each digit // leftmost digit is 0, rightmost is one less than the number of places for (int digit = nbrDigits-1; digit >= 0; digit--) { if(number > 0) { showDigit(number % 10, digit) ; number = number / 10; } } } } // Displays given number on a 7-segment display at the given digit position void loop() { float irVal = analogRead(A0); // pin A0 connected to IR sensor out float distance = 10650.08 * pow(irVal,-0.935) -10; // distance in cm Serial.println(distance); showNumber(distance); } void showNumber( int number) { if(number == 0) showDigit(0, nbrDigits-1) ; // display 0 in the rightmost digit else { // display the value corresponding to each digit // leftmost digit is 0, rightmost is one less than the number of places for (int digit = nbrDigits-1; digit >= 0; digit--) { if(number > 0) { showDigit(number % 10, digit) ; number = number / 10; } } } } // Displays given number on a 7-segment display at the given digit position void showDigit( int number, int digit)

Page 7 of 8 | P5 - Antarmuka 7-Segment Display

void showDigit( int number, int digit) { digitalWrite( digitPins[digit], HIGH ); for (int segment = 1; segment < 8; segment++) { boolean isBitSet = bitRead(numeral[number], segment); // isBitSet will be true if given bit is 1 isBitSet = ! isBitSet; // use this line for common cathode display digitalWrite(segmentPins[segment], isBitSet); } delay(5); digitalWrite(digitPins[digit], LOW ); }

{ digitalWrite( digitPins[digit], HIGH ); for (int segment = 1; segment < 8; segment++) { boolean isBitSet = bitRead(numeral[number], segment); // isBitSet will be true if given bit is 1 isBitSet = ! isBitSet; // use this line for common cathode display digitalWrite(segmentPins[segment], isBitSet); } delay(5); digitalWrite(digitPins[digit], LOW ); }

DIY 5.5
.........................

Page 8 of 8 | P5 - Antarmuka 7-Segment Display

You might also like