Anda di halaman 1dari 25

LAPORAN

PRAKTIK MIKROKONTROLER DAN ANTARMUKA DASAR


KELAS TT-4C - PSTT JTE PNJ

A. IDENTITAS PRAKTIK

1 NOMOR DAN JUDUL PRAKTIK P5. Antarmuka Seven Segment

2 KODE KELOMPOK C5

B. HASIL UJI COBA CONTOH-CONTOH APLIKASI DI JOB SHEET


1 FUNGSI SKETCH P5.1 : Up Counter
// Program up-counter 1 digit (0, 1, 2, …, 9, 0, …)
// bit mewakili segmen a sampai g dan dp untuk angka 0 - 9
const byte numeral[10] = {
//abcdefg dan dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pin untuk setiap segmen
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2}; //keterangan input seven segment
yang digunakan pada arduino uno
void setup() //memanggil fungsi saat sketch dijalankan
{
for(int i=0; i < 8; i++) //mengulangi, memanggil, dan membatasi pernyataan i
{
pinMode(segmentPins[i], OUTPUT); //menginisialisasi pin seven segment sebagai
output
}
}
void loop()/ / mengulangi perintah saat sketch dijalankan
{
for(int i=0; i <= 10; i++) //mengulangi, memanggil, dan membatasi pernyataan i
{
showDigit(i); //menampilkan digit i
delay(1000); //mengatur waktu tunggu antar digit
}
//jika nilai akhir = 10 -> display off
delay(2000); //waktu tunggu akhir
}
// Definisi dan deklarasi fungsi showDigit() untuk
// mendisplay angka 0 – 9, selain itu akan meng-off-kan
// display
void showDigit( int number) //menjalankan dan menampilkan digit angka
{
boolean isBitSet; //penempatan variabel
for(int segment = 1; segment <= 8; segment++) //mengulangi pernyataan yang
akan ditampilkan
{
if( number < 0 || number > 9) //penjikaan antar variabel
{
isBitSet = 0; // off-kan semua segmen
}
else //pernyataan lain yang akan dimunculkan
{
// isBitSet akan ‘true’ jika bit = 1
isBitSet = bitRead(numeral[number], segment);
}
//isBitSet = ! isBitSet; // untuk comm. anode ssd
digitalWrite( segmentPins[segment], isBitSet);
}
}

P5.2 : Potansiometer Display (0-9)


// Program men-display nilai potensio dalam angka 0 - 9
// bit mewakili segmen a sampai g dan dp untuk angka 0 - 9
const byte numeral[10] = {
//abcdefg dan dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pin untuk setiap segmen
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2};

void setup() //memanggil fungsi saat sketch dijalankan


{
Serial.begin(9600); //menampilkan nilai serial pada serial monitor
for(int i=0; i < 8; i++) //mengulangi, memanggil, dan membatasi pernyataan i
{
pinMode(segmentPins[i], OUTPUT); //menginisialisasi pin seven segment
sebagai output

}
}

void loop() //mengulangi perintah saat sketch dijalankan


{
int potVal = analogRead(A0); //menghubungkan adjustable potansimeter ke input
pin analog A0
potVal=map(potVal,0,1023,0,9); //mengatur range variable
Serial.println(potVal); //menampilkan nilai serial potansiometer pada serial
monitor
showDigit(potVal); //menampilkan digit
}
void showDigit( int number) //menjalankan tampilan digit dari potansiometer
{
boolean isBitSet;
for(int segment = 1; segment <= 8; segment++) //mengulangi pernyataan yang
akan ditampilkan
{
if( number < 0 || number > 9) //penjikaan nilai suatu variabel
{
isBitSet = 0; // off-kan semua segmen
}
else //pernyataan lain yang akan dimunculkan
{
// isBitSet akan ‘true’ jika bit = 1
isBitSet = bitRead(numeral[number], segment);
}
//isBitSet = ! isBitSet; // untuk comm. anode ssd
digitalWrite( segmentPins[segment], isBitSet);
}
}

P5.3 : Potensiometer Display (0-99)


// Program untuk menampilkan nilai potensiometer pada
// 2 digit 7-segment yang disusun secara multiplexing
// bit mewakili segmen a sampai g dan dp untuk angka 0 - 9
const byte numeral[10] = {
//abcdefg dan dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pin untuk setiap segmen
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2};
const int nbrDigits= 2; // jumlah digit 7-segment display
//digit 1 2
const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD
void setup() //memanggil fungsi saat sketch dijalankan
{
Serial.begin(9600); //menampilkan nilai serial pada serial monitor
for(int i=0; i < 8; i++) //mengulangi, memanggil, dan membatasi pernyataan i
pinMode(segmentPins[i], OUTPUT); //menginisialisasi pin seven segment
sebagai output
for(int i=0; i < nbrDigits; i++) //mengulangi, memanggil, dan membatasi
pernyataan digit seven segment dengan i
pinMode(digitPins[i], OUTPUT); //menginisialisasi pin digit seven segment
sebagai output
}
void loop() //mengulangi perintah saat sketch dijalankan
{
int potVal = analogRead(A0); //menghubungkan adjustable potansimeter ke input
pin analog A0
potVal = map(potVal,0,1023,0,99); //mengatur range variable
Serial.println(potVal); //menampilkan nilai serial potansiometer pada serial
monitor
showNumber(potVal); //menampilkan digit
}
void showNumber( int number)
{
if(number == 0)
showDigit(0, nbrDigits-1) ; // display 0 di LSD
else
{
// display angka ke setiap digit
for (int digit = nbrDigits-1; digit >= 0; digit--)
{
if(number > 0)
{
showDigit(number % 10, digit) ;
number = number / 10;
}
}
}
}
void showDigit( int number, int digit)
{
digitalWrite( digitPins[digit], HIGH );
for (int segment = 1; segment < 8; segment++)
{
boolean isBitSet = bitRead(numeral[number], segment);
digitalWrite(segmentPins[segment], isBitSet);
}
delay(5); //waktu tunggu dari digit seven segment 1 menuju digit seven segment 2
digitalWrite(digitPins[digit], LOW ); //menonaktifkan digitPins
}

P5.4 : Thermometer
// Program untuk menampilkan jarak objek dari sensornya
// pada 2 digit 7-segment yang disusun secara multiplexing
// bit mewakili segmen a sampai g dan dp untuk angka 0 - 9
const byte numeral[10] = {
//abcdefg dan dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};

// pin untuk setiap segmen


// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2};
const int nbrDigits= 2; // jumlah digit 7-segment display

//digit 1 2
const 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);
for(int i=0; i < nbrDigits; i++)
pinMode(digitPins[i], OUTPUT);
}
void loop()
{
float irVal = analogRead(A0);
float distance = 10650.08 * pow(irVal,-0.935) -10;
Serial.println(distance);

showNumber(distance);
}
void showNumber( int number)
{
if(number == 0)
int showDigit(0, nbrDigits-1) ; // display 0 di LSD
else
{
// display angka ke setiap digit
for (int digit = nbrDigits-1; digit >= 0; digit--)
{
if(number > 0)
{
int showDigit(number % 10, digit);
number = number / 10;
}
}
}
}

// Definisi dan deklarasi fungsi showDigit() untuk mendisplay


// angka 0 – 9, selain itu akan meng-off-kan display
void showDigit( int number)
{
boolean isBitSet;
for(int segment = 1; segment <= 8; segment++)
{
if( number < 0 || number > 9)
{
isBitSet = 0; // matikan semua segmen
}
else
{
// isBitSet akan true jika bit yang diberikannya 1 isBitSet =
bitRead(numeral[number], segment);
}
//isBitSet = ! isBitSet; //display common anode
digitalWrite( segmentPins[segment], isBitSet);
}
}

2 ANALISIS RANGKAIAN P5.1 : Up Counter


ANTARMUKA DAN SKETCH
Pada rangkaian Seven Segment Up Counter, menggunakan pin digital input 2, 3, 4,
5, 6, 7, 8 dan 9 pada Arduino Uno, yang dihubungkan ke 8 buah resistor senilai
220Ω dan dihubungkan ke kaki-kaki seven segment baik seven segment common
anoda atau seven segment common cathoda sebagai output. Didalam sketch Up
Counter telah diatur peninisialisasi masing masing input dan delay antar masing
masing digit seven segment. Sketch Up Counter akan mengaktifkan seven segment
dan membentuk angka 0 – 9, dan kembali ke 0 dengan delay 1000ms/s.
P5.2 : Potansiometer Display (0-9)
Pada rangkaian Seven Segment Potansiometer Display (0-9), menggunakan pin
digital input 2, 3, 4, 5, 6, 7, 8, dan 9 pada Arduino Uno, yang dihubungkan ke 8
buah resistor senilai 220Ω dan dihubungkan ke kaki-kaki seven segment baik seven
segment common anoda atau seven segment common cathoda sebagai output.
Sedangkan untuk potansiometer pada kaki adjustable menggunakan pin analog
input A0 pada Arduino Uno. Didalam sketch Potansiometer Display (0-9) telah
diatur peninisialisasi masing masing input. Pada sketch ini akan mengaktifkan
seven segment dan membentuk angka 0 hingga angka 9, proses memunculkan digit
angka awal segment ke digit angka segment berikutnya menggunakan bantuan dari
pontansiometer.

P5.3 : Potensiometer Display (0-99)


Pada rangkaian Seven Segment Potansiometer Display (0-99),menggunakan dua
buah seven segment yang disusun secara multiplexing yang menggunakan pin
digital input 2, 3, 4, 5, 6, 7, 8, dan 9 pada Arduino Uno, yang dihubungkan ke 8
buah resistor senilai 220Ω dan dihubungkan ke kaki-kaki seven segment baik seven
segment common anoda atau seven segment common cathoda sebagai output. Pada
rangkaian ini menggunakan 2 transistor NPN yang dihubungkan masing masing ke
kaki com dari seven segment, dihubungkan 2 buah resistor senilai 4700 Ω dan
terhubung oleh kaki pin digital nomor 10 dan 11 pada Arduino Uno. Sedangkan
untuk potansiometer pada kaki adjustable menggunakan pin analog input A0 pada
Arduino Uno.Prinsip kerja dari sketch ini hampir mirip dengan sketch sebelumnya
potansiometer display (0-9), yaitu mengaktifkan seven segment dan membentuk
angka 0 hingga angka 9 pada setiap digit seven segment, proses memunculkan digit
angka awal segment ke digit angka segment berikutnya menggunakan bantuan dari
pontansiometer.
P5.4 : Thermometer
Pada rangkaian seven segment Thermometer, menggunakan dua buah seven segment
yang disusun secara multiplexing yang menggunakan pin digital input 2, 3, 4, 5, 6,
7, 8, dan 9 pada Arduino Uno, yang dihubungkan ke 8 buah resistor senilai 220Ω dan
dihubungkan ke kaki-kaki seven segment baik seven segment common anoda atau
seven segment common cathoda sebagai output. Pada rangkaian ini menggunakan 2
buah transistor NPN yang dihubungkan masing masing ke kaki common dari seven
segment, dihubungkan 2 buah resistor senilai 4700 Ω dan terhubung oleh kaki pin
digital nomor 10 dan 11 pada Arduino Uno. Sedangkan untuk sensor ultrasonik
menggunakan pin analog input A0 pada Arduino Uno.Prinsip kerja dari sketch ini
digit seven segment akan memunculkan angka sesuai jarak ditangkap oleh sensor
ultrasonik, yaitu mengaktifkan seven segment dan membentuk angka 0 hingga angka
9 pada setiap digit seven segment, proses memunculkan digit angka awal segment
ke digit angka segment berikutnya menggunakan bantuan dari sensor ultrasonik.

C. APLIKASI DIY

1 NAMA PIC Aditya Hidayat

2 JUDUL APLIKASI Digital Rolling Dice


(MAKS. 3 KATA)

3 DESKRIPSI APLIKASI Digital Rolling Dice, merupakan suatu project seven segment yang memiliki pengaplikasian
layaknya dadu. Pada project ini seven segment akan melakukan pengacakan digit angka dari
1 hingga 6, dan untuk memberhentikan pengacakan digit angka, dengan menekan push
button switch. Pada project Digital Rolling Dice membutuhkan 1 buah seven segment untuk
pembacaan dadu, 1 buah push button switch untuk memberhentikan pengacakan digit dadu,
7 buah resistor dengan besaran nilai 220Ω, 1 buah resistor dengan nilai 10KΩ,
menggunakan sekitar 20 jumper, 1 buah Arduino Uno, dan 1 buah protoboard
4 GAMBAR SKEMATIK
(DIBUAT DENGAN SOFTWARE)
5 FLOW CHART
(DIBUAT DENGAN SOFTWARE)
6 SKETCH (SOURCE CODE)
7 ANALISIS RANGKAIAN Pada sketch Digital Rolling Dice. Menggunakan seven segment sebagai output, yang
ANTARMUKA DAN SKETCH masing masing kaki dari seven segment dihubungkan pada input digital pada Arduino Uno,
dari kaki 2 hingga kaki 8, dan kaki com pada seven segment dihubungkan sesuai dengan
ciri seven segment tersebut. Sedangkan push button switch sebagai input dihubungkan pada
input digital nomor 12. Analisis pada rangkaian ini bar seven segment akan menyala secara
acak dan pada saat switch push button ditekan dan dilepas maka seven segment akan
menyala statis/diam sesuai dengan angka pada dadu yaitu antara 1 hingga 6 atau switch pada
rangkaian ini menggunakan prinsip kerja dari pull up switch. Pengacakan digit seven
segment dapat diatur pada sketch Arduino IDE.
D. PENUTUP

1 KESIMPULAN a. Pada sketch Up Counter, dapat disimpulkan bahwa tampilan dari seven segment akan
diprogram mejadi menampilkan angka secara berurutan dan otomatis menghitung dari
angka 0 hingga angka 9 dan kembali lagi ke angka 0 dengan delay/waktu tunggu yang telah
diatur pada sketch dalam Arduino IDE
b. Pada sketch Potansimometer Display (0-9), dapat disimpulkan bahwa tampilan dari seven
segment akan diprogram mejadi menampilkan angka secara berurutan dari angka 0 hingga
angka 9 dengan bantuan dari potansiometer, di sketch ini apabila potansiometer diputar
arah kiri akan menampilkan angka awal sedangkan apabila diputar ke arah sebaliknya maka
akan menampilkan angka berikutnya hingga angka terakhir yang telah diprogram
sebelumnya pada Arduino IDE
c. Pada sketch Potansimometer Display (0-99), dapat disimpulkan bahwa pada sketch ini
menggunakan dua buah seven segment yang disusun secara multiplexing, pada sketch ini
tampilan dari seven segment akan diprogram mejadi menampilkan angka secara berurutan
dari angka 0 hingga angka 99. Pada setiap seven segment yang berfungsi sebagai satuan
dan puluhan masing masing akan menampilkan angka 0 – 9. Untuk melakukan perhitungan
dari angka 0 hingga angka 9 memerlukan bantuan dari potansiometer, di sketch ini apabila
potansiometer diputar arah kiri akan menampilkan angka awal sedangkan apabila diputar ke
arah sebaliknya maka akan menampilkan angka berikutnya hingga angka terakhir yang telah
diprogram sebelumnya pada Arduino IDE
d. Pada sketch Thermometer, dapat disimpulkan dapat disimpulkan bahwa pada sketch ini
menggunakan dua buah seven segment yang disusun secara multiplexing, pada sketch ini
tampilan dari seven segment akan diprogram mejadi menampilkan angka secara berurutan
dari angka 0 hingga angka 99. Pada setiap seven segment yang berfungsi sebagai satuan
dan puluhan masing masing akan menampilkan angka 0 – 9. Untuk melakukan perhitungan
dari angka 0 hingga angka 9 memerlukan bantuan dari sensor ultrasonik, di sketch ini
apabila kita menaruh benda tepat didepan sensor tampilan seven segment akan
menampilkan angka 0, apabila kita jauhkan benda dari seven segment maka tampilan
segment akan bergantung pada jarak benda tersebut.
e. Pada sketch DIY Digital Rolling Dice, dapat disimpulkan project merupakan
pengembangan dari fungsi dadu secara nyata yang dipindahkan ke dalam bentuk digital
dengan menggunakan seven segment sebagai display angka pada dadu dengan inteval 1
hingga 6, dan untuk memberhentikan pengacakan/randoming menggunakan 1 buah push
button switch yang memiliki prinsip kerja pull up switch.

2 URL PLAYLIST VIDEO DIY https://www.youtube.com/playlist?list=PLr0mwU8wwZnctYQBJl4uhg0Xeo6ka-H8k

Anda mungkin juga menyukai