Anda di halaman 1dari 22

LAPORAN LABORATORIUM MIKROKONTROLLER

KELAS / GROUP

: Telkom 4D / 7

NAMA PRAKTIKAN

: 1. Adam Harde B. M
2. Fainaya Permatasari
3. Muhammad Lutfi B.
4. Wafi Akhlaqil K.

PROGRAM STUDI TEKNIK TELEKOMUNIKASI


POLITEKNIK NEGERI JAKARTA
DEPOK

DAFTAR ISI

P5.1 Up Counter
1.1 Skematik/Diagram Rangkaian
1.2 Sketch/Cara Kerja
1.3 Analisa
P5.2
2.1Skematik/Diagram Rangkaian
2.2Sketch/Cara Kerja
2.3Analisa
P5.3
3.1Skematik/Diagram Rangkaian
3.2Sketch/Cara Kerja
3.3Analisa
Kesimpulan P5
DIY
4.1Skematik/Diagram Rangkaian
4.2Sketch/Cara Kerja
4.3Analisa
4.4Kesimpulan

P5.1 Up Counter
1.1

Skematik / Diagram Rangkaian

Gambar 1.RangkaianUp Counter


1.2

Sketch / Cara Kerja


Sketch
//bit mewakili segmen a sampai g dan dp untuk angka 0 9
const byte numeral[10]={
//abcdefgdandp
B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B00111110,
B11100000,
B11111110,
B11100110,

//0
//1
//2
//3
//4
//5
//6
//7
//8
//9

};
constint segmentPins[8]={9,8,7,6,5,4,3,2};
void setup()
{
for(int i=0;i<8;i++)
{
pinMode(segmentPins[i],OUTPUT);
}
}
void loop()
{

for(int i=0;i<=10;i++)
{
showDigit(i);
delay(1000);
}
}
void showDigit(int number)
{
Boolean isBitSet;
for(int segment=1; segment<=8; segment++)
{
if(number < 0 || number > 9)
{
isBitSet = 0;
}
else
{
isBitSet = bitRead(numeral[number],segment);
}
digitalWrite(segmentPins[segment],isBitSet);
}
}
Cara Kerja
Program ini bekerja dengan memunculkan hitungan secara berurutan dari 0-9 pada
seven segment common cathode yang telah dikonversikan ke dalam bilanganbilangan biner dengan delay 1 detik kemudian setelah mencapai angka 9 akan looping
kembali sesuai program pada arduino.

1.3

Analisa

Pada perintah const byte numeral[10] = { merupakan perintah array yang mewakili segmen a
sampai g dan dp untuk angka 0 9, array adalah satu variabel yang memiliki banyak anggota
dengan tipe yang sama. Pada perintah const int segmentPins[8] = {9,8,7,6,5,4,3,2};
merupakan perintah array pin untuk setiap segment.
Pada

void

setup()

terdapat

perintah

for(int

i=0;i

<

8;i++)

dan

pinMode(segmentPins[i],OUTPUT); yang berfungsi sebagai looping nilai interval 0 sampai


nilai interval < 8 dimana nilai interval 0 terdapat pada pin 9 dan nilai interval 7 terdapat pada
pin 2, kemudian pin 9 2 kan diset sebagai output.

Pada void loop() terdapat perintah for(int i=0; i <= 10; i++) { berfungsi sebagai
looping dari nilai interval, jika nilai interval bernilai 0 9 maka bernilai true selanjutnya akan
masuk pada perintah showDigit(i); delay(1000); } yaitu nilai akan di tampilkan pada 7segment dengan delay 1000ms, sedangkan jika nilai = 10 maka masuk pada perintah
delay(2000); } yang berarti display pada 7-segment akan off selama 2000ms.
Selanjutnya karena variabel dari showDigit() belum di deklarasikan maka variabel
showDigit() harus dideklarasikan. Pada void showDigit(int number) { terdapat perintah
boolean isBitSet; yang merupakan local deklarasi yang hanya ada di 1 fungsi dan bertipe
boolean yang berisi true atau false. Kemudian pada looping variabel segment jika nilai
number < 0 atau > 9 maka nilai variabel isBitSet = 0; yang berarti semua segment dalam
keadaan off. Pada perintah isBitSet = bitRead(numeral[number],segment); nilai variabel
akan bernilai true jika diberikan bit 1, kemudian segment akan ditampilkan pada display 7segment

P5.2 Potensiometer Input Display

2.1 Skematik/Diagram Rangkaian

2.2 Sketch/Cara Kerja


Sketch
//Program untuk men-display nilai potensio dalam angka 0-9
//bit mewakili segmen a sampai g dan dp untuk angka 0-9
const byte numeral[10]={
//abdcefg 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()
{
Serial.begin(9600);
for(int i=0;i<8;i++)
{
pinMode(segmentPins[i], OUTPUT);
}
}

void loop()
{
int potVal=analogRead(A0);
potVal=map(potVal,0,1023,0,9);
Serial.println(potVal);
showDigit(potVal);
}
void showDigit(int number)
{
boolean isBitSet;
for(int segment=1;segment<=8;segment++)
{
if(number<0||number>9)
{

isBitSet=0; //turn off all segment


}
else
{
//isBitSet will be true if given bit is 1
isBitSet= bitRead(numeral[number],segment);
}
//isBitSet=!;//common anode display
digitalWrite(segmentPins[segment],isBitSet);
}
}
Cara Kerja
Cara kerja potensiometer input display ini adalah dimana program diatur untuk men-display
nilai potensiometer dalam angka 0-9. Jadi saat potensio di nilai minimal angka yang muncul
pada 7-segment adalah 0, dan apabila potensiometer di naikan secara bertahap maka angka
yang muncul pada 7-segment akan naik secara bertahap dari 0 sampai dengan nilai 9 yaitu
saat posisi potensiometer di posisi maksimal. Dimana pin yang digunakan untuk
potensiometer adalah pin no A0 dan pin yang digunakan untuk 7-segment ada 8 pin yaitu pin
9 sampai dengan pin 2 dengan posisi pin disesuaikan dengan posisi nilai pada 7-segment dp
menggunakan pin 9, g menggunakan pin 8, f menggunakan pin 7, e menggunakan pin 6, d
menggunakan pin 5, c menggunakan pin 4, b menggunakan pin 3, a menggunakan pin 2.

2.3 Analisa
Sketch berupa :
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
};

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

void loop ()
{
int potVal=analogRead(A0);
potVal=map(potVal,0,1023,0,9);

Serial.println(potVal);
showDigit(potVal);
}

void showDigit(int number)


{
boolean isBitSet;
for(int segment=1;segment<=8;segment++)
{
if(number<0||number>9)
{
isBitSet=0;
}
else
{
isBitSet=bitRead(numeral[number],segment);
}
digitalWrite(segmentPins[segment], isBitSet);
}
}

Dari sketch diatas, program dibuat bertujuan untuk menjadikan potensiometer menjadi
pengatur untuk pen-display-an dari 7-segment. Dimana pin yang digunakan untuk 7segmment adalah pin no 9 sampai dengan 2 dan pin untuk potensiometer adalah pin A0.
Perintal void setup adalah perintah untuk meng-set output yang akan digunakan, output
berupa 7-segment dengan perintah ponMode(segmentPins[i], OUTPUT) dan untuk perintah
Serial.begin(9600) adalah perintah untuk bisa melihat/membaca nilai dari potensiometer .
Lalu untuk perintah void loop adalah perintah untuk mengulang terus menerus perintah
yang adalah dibawahnya, dari perintah analogRead(A0) untuk membaca nilai dari
potensiometer yang tadinya analog menjadi digital karena menggunakan pin A0, lalu perintah

Serial.println(potVal) untuk menampilkan rate pada serial monitor, juga perintah


digitalWrite untuk menampilkan nilai dari angka 0-9 pada 7-segment dengan potensiometer
sebagai pengatur.

P5.3 Multiplexing 2 Digit Display


3.1

Skematik/Diagram Rangkaian

3.2

Sketch/Cara Kerja
Sketch
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 segment


//

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()
{
int potVal=analogRead(A0);
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 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;
}
}
}
}
//Definisi

dan

deklaasi

fungsi

showDigit()untuk

mendisplay
//angka 0-9,selain itu akan meng-off-kan display
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);
digitalWrite(digitPins[digit],LOW);
}
Cara Kerja
Pada percobaan kali ini menggunakan 2 seven segmen yang akan menjadi output dan
Angka yang muncul pada seven segment 1 dan seven segment 2 akan selalu sama.,
tergantung dari inputnya.

3.3

Analisa

Pada percobaan kali ini didapat dianalisi bahwa, //abcdefg dan dp adalah inisialisasi
dioda pada seven segmen. B11111100, //0 merupakan sketch untuk menyalakan angka 0
pada seven segmen.
//pin untuk setiap segment
//

dp,g,f,e.d.c.b.a

const int segmentPins[8] = {9,8,7,6,5,4,3,2}; mengidentifikasikan bahwa 8 pin segment


berada pada Pin 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
Sketch diatas memiliki fungsi untuk menginisialisasikan pin untuk setiap segmen pada
arduino
pinMode(segmentPins[i], OUTPUT); Sketch disamping memiliki fungsi untuk output.
int potVal=analogRead(A0);

Sketch disamping mengartikan inputnya adalah analog

yaitu potensiometer
int potVal=analogRead(A0);
potVal= map(potVal,0,1023,0,99);
Serial.println(potVal);
showNumber(potVal);
Sketch diatas untuk membaca nilai potensiometer dengan input analog
digitalWrite(digitPins[digit],HIGH);
for(int segment=1;segment<8;segment++)
{
boolean isBitSet=bitRead(numeral[number],segment);
digitalWrite(segmentPins[segment],isBitSet);
}
delay(5);
digitalWrite(digitPins[digit],LOW);
}

Sketch diatas untuk memprogram LED agar membaca nyala sesuai dengan yang
seharusnya dengan delay 5ms. Adapun Delay dapat diatur sesuai keinginan. segment
berada pada Pin digital.

DIY P5 LAMP RACE


4.1 Rangkaian Skematik

4.2 Cara Kerja Aplikasi


Cara kerja diy-p5 ini adalah dimana program diatur membuat rangkaian menjadi seperti
race-lamp atau lampu pada sirkuit balap. Jadi pada rangkaian terdapat 3 lampu yaitu
warna merah-kuning-hijau juga terdapat 7-segment, saat angka keluaran 7-segment
adalah 3 maka lampu merah menyala, saat angka keluaran 7-segment adalah 2 san 1
maka lampu kuning menyala dan saat perhitungan habis atau sudah blank pada 7segment maka lampu yang menyala hijau menandakan seperti balapan start. Dimana pin
yang digunakan untuk LED adalah pin no 9 untuk LED merah, 11 untuk LED kuning
dan 10 untuk LED hijau, juga pin yang digunakan untuk 7-segment ada 8 pin yaitu pin 9
sampai dengan pin 2 dengan posisi pin disesuaikan dengan posisi nilai pada 7-segment
dp menggunakan pin 9, g menggunakan pin 8, f menggunakan pin 7, e menggunakan pin
6, d menggunakan pin 5, c menggunakan pin 4, b menggunakan pin 3, a menggunakan
pin 2.
4.3 Analisis Sketch
Sketch berupa :
const byte numeral[4]={
//abcdefg dan dp
B11110010, //3
B11011010, //2
B01100000, //1

B00000000, //0
};
int ledRed = 9;
int ledYellow = 11;
int ledGreen = 10;
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);
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);

}
}

void loop()
{
for(int i=0;i<=0;i++)
{
showDigit(i);
delay(500);
digitalWrite(ledRed,HIGH);

delay(300);
digitalWrite(ledRed,LOW);
delay(300);
};

for(int i=1;i<=1;i++)
{
showDigit(i);
delay(500);
digitalWrite(ledYellow,HIGH);
delay(300);
digitalWrite(ledYellow,HIGH);
delay(300);

};

for(int i=2;i<=2;i++)
{
showDigit(i);
delay(500);
digitalWrite(ledYellow,HIGH);
delay(300);
digitalWrite(ledYellow,HIGH);
delay(300);
digitalWrite(ledYellow,LOW);
delay(150);

digitalWrite(ledYellow,LOW);
delay(150);
};

for(int i=3;i<=3;i++)
{
showDigit(i);
delay(500);
digitalWrite(ledGreen,HIGH);
delay(500);
digitalWrite(ledGreen,LOW);
delay(500);
}
}
void showDigit(int number)
{
boolean isBitSet;

for(int segment=1;segment<=8;segment++)
{
if(number<0||number>3)
{
isBitSet=0;
}
else
{

isBitSet=bitRead(numeral[number],segment);
}
digitalWrite(segmentPins[segment],isBitSet);
}
}
Dari sketch diatas, program diatur membuat rangkaian menjadi seperti race-lamp atau
lampu pada sirkuit balap. Dimana pin yang digunakan untuk 7-segmment adalah pin no 9
sampai dengan 2 dan pin untuk LED adalah pin 9, 10, 11. Perintah void setup adalah
perintah untuk meng-set output yang akan digunakan, output berupa 7-segment dengan
perintah ponMode(segmentPins[i], OUTPUT) dan juga LED. Lalu untuk perintah void
loop adalah perintah untuk mengulang terus menerus perintah yang adalah dibawahnya,
perintah Serial.println(potVal) untuk menampilkan rate pada serial monitor, juga perintah
digitalWrite untuk menampilkan nilai dari angka 0-9 pada 7-segment. Untuk mengatur
nyala lampu sesuai dengan nilai yang nantinya mncul di 7-segment maka mengatur nilai
delay dari masing-masing lampu baik saat lampu merah, kuning, hijau dengan menggunakan
perintah showDigit(i), dimana i sendiri diisi dengan i ke berapa sesuai urutan lampu dengan
display 7-segment.

KESIMPULAN
Seven-segment display (SSD) merupakan salah satu perangkat display karakter untuk
menampilkan sejumlah karakter alphanumerik, seperti angka 0 sampai 9 dan huruf
dari a sampai g.
Pada antarmuka dengan 1 digit SSD, pin Arduino yang digunakan mulai dari D2
sampai D9 yang dihubungkan ke pin a sampai dp, sedangkan pin Gnd ke CC.

Pada antarmuka dengan sejumlah SSD, digunakan teknik multplexng untuk


menghemat jumlah pin.
Dari rangkaian Up Counter dapat disimpulkan rangkaian ini dapat mengatur keluaran
yang memiliki nilai up counter pada seven segment.
Ketika potensiometer diputar kearah maksimum secara perlahan maka, seven segment
akan menampilkan nilai dari awal 0, 1, 2, 3, 4, 5, 6, 7, 8, hingga pada saat
potensiometer maksimum maka nilai yang keluar adalah 9.
Perintah ponMode(segmentPins[i], OUTPUT) dan juga LED, sehigga tampilan down
counter seven segment akan muncul seiringan (dengan pengaturan delay seven
segment dan LED) dengan tampilan LED
Pada percobaan kelima ini menggunakan 4 perintah yaitu void setup, void loop, void
showNumber dan void showDigit.

Anda mungkin juga menyukai