jobsheet p5 - antarmuka 7-segment display

Upload: m-taufik-pratomo

Post on 18-Oct-2015

59 views

Category:

Documents


4 download

DESCRIPTION

Praktek

TRANSCRIPT

  • JOB SHEET P5 : ANTARMUKA 7-SEGMENT DISPLAYJOB 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

    2 Alat/Komponen :

    No Perangkat/Komponen Jumlah No Perangkat/Komponen Jumlah

    1 Board Arduino Uno 1 6 Distance Sensor GP2Y0A02 1

    2 Kabel USB A-B 1 7 Transistor BC-547 2

    3 Protoboard 1 8 Resistor 220 8

    4 7-Segment Display CC 2 9 Kabel jumper Secukupnya

    5 Potensiometer 10k 1 -

    3 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 caAntarmuka 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 COUNTERP5.1 - ONE-DIGIT UP COUNTER P5.2 DISPLAY INPUT POTENSIOMETERP5.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.aconst 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

  • { 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.3 - MULTIPLEXING TWO-DIGIT DISPLAY P5.4 - DISTANCE DISPLAY P5.4 - DISTANCE DISPLAY

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

  • /* * Multiplexing two-digit display sketch * 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 const int numeral[10] = { //abcdefg and dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 };

    // pins for decimal point and each segment // dp,g,f,e.d.c.b.aconst int segmentPins[8] = {1,2,3,4,5,6,7,8};

    const int nbrDigits= 2; // the number of digits in the LED display

    //digit 1 2const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD

    void setup() { Serial.begin(9600); for(int i=0; i < 8; i++)

    /* * Distance display sketch * Displays the distance of an IR sensor on a multiplex two-digit display*/

    // bits representing segments a through g and dp for number 0-9 const int numeral[10] = { //abcdefg and dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 };

    // pins for decimal point and each segment // dp,g,f,e.d.c.b.aconst int segmentPins[8] = {1,2,3,4,5,6,7,8};

    const int nbrDigits= 2; // the number of digits in the LED display

    //digit 1 2const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD

    void setup() { Serial.begin(9600); 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++) 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

    for(int i=0; i < nbrDigits; i++) pinMode(digitPins[i], OUTPUT); }

    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