You are on page 1of 26

Percobaan 1

Sensoring potensio

Hasil:

Percobaan 2
Serial Monitor
SouceCode :
Hasil :
Percobaan 3
LCD I2C 16x2
SourceCode :

Hasil :
Percobaan 4
Multi Seven-Segmen
SourceCode :
// potentiometer output pin definition
#define POT A0
// segment pin definitions
#define SegA 12
#define SegB 11
#define SegC 10
#define SegD 9
#define SegE 8
#define SegF 7
#define SegG 6
// common pins of the four digits definitions
#define Dig1 5
#define Dig2 4
#define Dig3 3
#define Dig4 2 //
variable declarations
byte current_digit; int
adc_value; void
setup()
{
pinMode(SegA, OUTPUT);
pinMode(SegB, OUTPUT);
pinMode(SegC, OUTPUT);
pinMode(SegD, OUTPUT);
pinMode(SegE, OUTPUT); pinMode(SegF,
OUTPUT); pinMode(SegG, OUTPUT);
pinMode(Dig1, OUTPUT); pinMode(Dig2,
OUTPUT); pinMode(Dig3, OUTPUT);
pinMode(Dig4, OUTPUT);
disp_off(); // turn off the display
// Timer1 module overflow interrupt configuration
TCCR1A = 0;
TCCR1B = 1; // enable Timer1 with prescaler = 1 ( 16 ticks each 1 µs)
TCNT1 = 0; // set Timer1 preload value to 0 (reset)
TIMSK1 = 1; // enable Timer1 overflow interrupt
}
ISR(TIMER1_OVF_vect) // Timer1 interrupt service routine (ISR)
{
disp_off(); // turn off the display
switch (current_digit)
{ case 1: disp(adc_value / 1000); // prepare to display digit 1
(most left) digitalWrite(Dig1, LOW); // turn on digit 1 break;
case 2: disp( (adc_value / 100) % 10); // prepare to display
digit 2 digitalWrite(Dig2, LOW); // turn on digit 2 break;
case 3: disp( (adc_value / 10) % 10); // prepare to display digit
3 digitalWrite(Dig3, LOW); // turn on digit 3 break; case 4:
disp(adc_value % 10); // prepare to display digit 4 (most right)
digitalWrite(Dig4, LOW); // turn on digit 4
}
current_digit = (current_digit % 4) + 1;
} // main
loop void
loop() {
adc_value = analogRead(POT);
delay(100); }
void disp(byte number)
{
switch (number) { case 0:
// print 0
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, HIGH);
break;
case 1: // print 1
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH); break;
case 2: // print 2
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW); break;
case 3: // print 3
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
break; case 4: // print 4
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break; case 5: // print 5
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;
case 6: // print 6
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
break;

case 7: // print 7
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH); break;
case 8: // print 8
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW); break;
case 9: // print 9
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
} } void
disp_off() {
digitalWrite(D
ig1, HIGH);
digitalWrite(D
ig2, HIGH);
digitalWrite(D
ig3, HIGH);
digitalWrite(D
ig4, HIGH);
}
// end of code
Hasil :

Kendalikan nyala 5 LED disesuikan dengan nilai Output dari potensiometer semakin banyak
nilai, LED yang menyala semakin banyak.
• Rangkaian Proteus
• SourceCode
]
//medefinisikan pin const
int pothg = A0; const int
ledred1 = 9; const int
ledblue = 10; const int
ledgreen = 11; const int
ledred2 = 12; const int
ledyellow = 13; int state;
//deklarasi variabel
void setup() {
//deklarasi pin menjadi output/input
pinMode(ledred1, OUTPUT);
pinMode(ledblue, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(ledred2, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(pothg, INPUT);
} void loop()
{
state = analogRead(pothg); //menyimpan nilai potensiometer dalam
variabel if (state > 400) { // kondisi jika nilai > 400
digitalWrite(ledred1,HIGH); //LED hidup if (state > 500){ //
kondisi jika nilai > 500 digitalWrite(ledblue,HIGH); //LED hidup
if (state > 600){ // kondisi jika nilai > 600
digitalWrite(ledgreen,HIGH);//LED hidup if (state > 700){ //
kondisi jika nilai > 700 digitalWrite(ledred2,HIGH); //LED hidup
if (state > 800){ // kondisi jika nilai > 800
digitalWrite(ledyellow,HIGH); //LED hidup
} else{
digitalWrite(ledyellow,LOW); //LED mati
}}
else
{
digitalWrite(ledred2,LOW); //LED mati
}}
else
{
digitalWrite(ledgreen,LOW); //LED mati
}}
else
{
digitalWrite(ledblue,LOW); //LED mati
}}
else
{
digitalWrite(ledred1,LOW); //LED mati
}
delay(20); //jeda waktu 20 milisecoond
}

• Hasil :

Hasil ketika potensiometer dalam keadaan 50%, Led merah dan Led biru menyala
Hasil ketika potensiometer dalam keadaan 60%, Led merah, Led biru dan Led hijau
menyala

Hasil ketika potensiometer dalam keadaan 80%, semua lampu Led menyala

Selesaikan skenario berikut :


Gunakan konfigurasi Arduino, LCD I2C, Potensiometer dan PushButton
Jika tombol PushButton ditekan dan nilai Pin HIGH maka, nilai potensio bisa
dimasukkan dan LCD akan menampilkan Nilai dari ADC Potensio, jika posisi
LOW akan ditampilkan “Anda tidak punya Akses” (geser ke Kiri).
Buzzer akan berbunyi ketika potensio diputar dan pushbutton kondisi Low

• Rangkaian pada proteus


• SourceCode
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 16,2);
//definisi pin int
analogInPin = A0;
int sensorValue = 0;
int outputValue = 0;
int pinBtn = 12; int
pinBuzzer = 13;
//definisi variabel int
stateBtn, stateSensor;
int
stateBtnLast=LOW;
int stateBuzzerLast =
LOW;
void setup() {
Serial.begin(9600);
//definisi pin sebagai input/output
pinMode(pinBtn, INPUT_PULLUP);
pinMode(pinBuzzer, OUTPUT);
// lcd lcd.init(); lcd.backlight();
delay(2000); //jeda waktu 2detik
lcd.clear(); //bersihkan layar lcd
} void loop()
{
sensorValue = analogRead(analogInPin); //membaca nilai potensiometer
outputValue = map(sensorValue , 0, 1023, 0, 255);

int readBtn = digitalRead(pinBtn); //membaca nilai button


int readSensor = sensorValue;
if(readBtn != stateBtn){
stateBtn = readBtn;
if(stateBtn == LOW){
stateBtnLast = !stateBtnLast;
}
// menampilkan di serial monitor
Serial.println("Kondidi button = " + String(stateBtnLast));
}
// jika potensio terdapat nilai
if(readSensor > 0){
if(stateBtnLast != HIGH){
stateBuzzerLast = HIGH;
displayAkses();
}
else{ displayADC();
stateBuzzerLast = LOW;
Serial.println("ADC = "+String(outputValue));
}
setBuzzer(stateBuzzerLast);
}
// jika potensio 0
else if(readSensor == 0){
stateBuzzerLast = LOW; //
jika kondisi pin btn HIGH
if(stateBtnLast == HIGH){
lcd.clear();
lcd.print("Anda punya akses");
}
// jika kondisi pin btn LOW
else{
displayAkses(); }
setBuzzer(stateBuzzerLast);
}
delay(500);
}
// untuk onOff Buzzer void
setBuzzer(bool i){
digitalWrite(pinBuzzer, i);
}
// untuk menampilkan nilai ADC pada lcd
void displayADC(){
lcd.clear();
lcd.print("Nilai ADC = "+String(outputValue));
Serial.println("Nilai ADC = "+String(outputValue));
}
// untuk menampilkan tidak punya
akses void displayAkses(){ lcd.clear();
lcd.print("Anda tidak punya
akses"); delay(200); for(int c=0;
c<6;c++){
lcd.scrollDisplayLeft(); // menggeser tampilan lcd ke kiri
delay(100);
}
}

• Hasil :

6.7 Kesimpulan
Dari praktikum di atas dapat disimpulkan bahwa ADC (Liquid Cristal Display) berfungsi
mengkonversi sinyal/data dari besaran analog menjadi besaran digital. Dalam percobaan ini
mikrokontroler mampu mengontrol ADC untuk dapat menampilkan keluarannya dalam hidup
mati nyala led.

You might also like