Arduino 7 Segment
Arduino 7 Segment
3prisma.megantoro@giz.de
A. Pembahasan
Telah dilaksanakan Praktikum Analisa
Sistem dan Instrumentasi mengenai Embedded
System 2 Arduino Uno. Praktikum dilaksanakan pada
tanggal 10 April 2017 di Laboratorium SV 118.
Praktikan melakukan praktikum dengan
menggunakan arduino KIT untuk membuat rangkaian
kontrol Seven Segmen, digital input, Analog To
Digital Converter, Interupsi, Pulse Width Modulation,
Data logger,Timer, dan komunikasi serial.
Gambar 1. Diagram Blok Dekode
I. Kontrol Seven Segment
Kontrol 7 segment ini praktikan
Blok Dekoder pada diagram diatas mengubah
menampilkan beberapa huruf dengan interval sinyal Input yang diberikan menjadi 8 jalur yaitu a
waktu 1000 milisekon. Dengan menghubungkan sampai g dan poin decimal (koma) untuk meng-ON-
pin pada board arduino dan training kit sesuai pada kan segmen sehingga menghasilkan angka atau digit
tabel dibawah ini : yang diinginkan. Fungsi daripada Blok Driver adalah
untuk memberikan arus listrik yang cukup kepada
Tabel 1.Konfigurasi pin pada board arduino yang Segmen/Elemen LED untuk menyala. Pada Tipe
Dekoder tertentu, Dekoder sendiri dapat mengeluarkan
dihubungkan pada training kit
Tegangan dan Arus listrik yang cukup untuk
menyalakan Segmen LED maka Blok Driver ini tidak
diperlukan. Pada umumnya Driver untuk menyalakan 7
Segmen ini adalah terdiri dari 8 Transistor Switch pada
masing-masing elemen LED.
Gambar 15. Flowchart Program Pulse Width Gambar 16. Hasil Tampilan Program Pulse Width
Modulation Modulation
Berdasarkan flowchart pada gambar 15 dapat Berdasarkan gambar 16 dapat diketahui
diketahui bahwa flowchart tersebut merupakan bahwa LED nomor 7 nyala lampunya lebih terang
flowchart membuat digital input. Langkah yang harus dibandingkan dengan nyala lampu LED nomor 3. Hal
dilakukan pertama adalah mengetikkan coding pada ini dikarenakan pada lampu LED nomor 7 yang
aplikasi arduino yang telah terinstall. Kemudian tersambung pada pin 10 menyala pada kondisi bilangan
memverify coding lalu mengupload coding. Lalu ADC 1023 Bit. Bit yang terbesar. Sedangkan lampu
perintah terakhir yakni menampilkan hasil dari PWM. LED nomor 3 yang tersambung pada pin 9 menyala
pada kondisi bilangan ADC 20 Bit. Sehingga nyala
Berikut ini merupakan coding yang dituliskan dalam lampu LED nomor 7 lebih terang dibandingkan dengan
program Arduino : nyala lampu LED nomor 3.
a.) Penjelasan Coding
void setup() { VIII. Data Logger EPPROM
Dijalankan pertama kali setiap board arduino Arduino, seperti mikrokontroler pada
dihidupkan, Semua kode didalam kurung kurawal umumnya mempunyai dua jenis memory, yaitu static
akan dijalankan hanya satu kali ketika program random access memory (SRAM) dan electrical
Arduino dijalankan untuk pertama kalinya. erasable programmable read only memory (EEPROM).
pinMode(10,OUTPUT); Data yang disimpan dalam SRAM akan hilang ketiks
Kode diatas digunakan untuk seting mode pin. sistem dimatikan. Namun pada EEPROM data tetap
nomer pin yang akan digunakan, artinya pin 10 dan tersimpan. Memory ini biasanya dipakai pada data
11 digunakan sebagai OUTPUT logger. Kapasitas EEPROM pada Arduino Uno adalah
pinMode(9,OUTPUT); 1 kB, artinya alamat penyimpanannya dari 0 sampai
Kode diatas digunakan untuk seting mode pin. dengan 255. Nilai awal EEPROM ketika belum diisi
nomer pin yang akan digunakan, artinya pin 10 dan data adalah 255.
11 digunakan sebagai OUTPUT Pemrograman EEPROM hanya berkaitan
} dengan dua hal, yaitu menulis dan membaca data. Pada
Tanda kurung kurawal Digunakan untuk Arduino, telah ada library untuk mengakses EEPROM.
menentukan akhir dari program. Sama seperti library yang lain, ditulis pada awal
void loop() { program.
Semua kode yang ada disini akan dibaca berulang #include <EEPROM.h>
kali (terus menerus) oleh Arduino. Fungsi ini akan Untuk menulis data ke EEPROM digunakan perintah:
dijalankan setelah setup (fungsi void setup) selesai. EEPROM.write(alamat,nilai_variabel)
Setelah dijalankan satu kali fungsi ini akan Untuk membaca data digunakan perintah:
EEPROM.read(alamat) Menentukan kecepatan baca data serial (Baud
Rate) sebesar 9600
EEPROM.write(1,125);
Apabila dibuatkan dalam diagram flowchart Untuk menuliskan data ke EEPROM dengan
program data logger maka akan tampak seperti pada
alamat EEPROM 1, dan nilai/data yang berada
gambar 17 berikut ini:
dalam alamat EEPROM bernilai 125
EEPROM.write(2,15);
Untuk menuliskan data ke EEPROM dengan
alamat EEPROM 2, dan nilai/data yang berada
dalam alamat EEPROM bernilai 15
EEPROM.write(3,45);
Untuk menuliskan data ke EEPROM dengan
alamat EEPROM 3, dan nilai/data yang berada
dalam alamat EEPROM bernilai 45
EEPROM.write(4,100);
Untuk menuliskan data ke EEPROM dengan
alamat EEPROM 4, dan nilai/data yang berada
dalam alamat EEPROM bernilai 100
EEPROM.write(5,121);
Untuk menuliskan data ke EEPROM dengan
alamat EEPROM 5, dan nilai/data yang berada
dalam alamat EEPROM bernilai 121
for(alamat=1; alamat<6; alamat++){
Makna dari script diatas adalah variabel alamat=1
adalah nilai awal dari alamat EEPROM adalah 1
dan arti alamat<6 adalah maksimal pengulangan
dilakukan adalah sampai 6. Arti dari alamat++
adalah menambahkan nilai setiap pengulangan
Gambar 17. Flowchart Program Data Logger
yang sudah di eksekusi, contoh nya jika kita sudah
Berdasarkan flowchart pada gambar 15 dapat memasukkan nilai di alamat 1 , maka akan
diketahui bahwa flowchart tersebut merupakan langsung lanjut ke alamat 2 dan seterusnya hingga
flowchart membuat digital input. Langkah yang harus alamat 6
dilakukan pertama adalah mengetikkan coding pada
aplikasi arduino yang telah terinstall. Kemudian nilai = EEPROM.read(alamat);
memverify coding lalu mengupload coding. Lalu Untuk membaca data dari EEPROM. Parameter
perintah terakhir yakni menampilkan hasil dari PWM. alamat merupakan alamat EEPROM yang akan
dibaca
Berikut ini merupakan coding yang dituliskan dalam Serial.print(alamat);
program Arduino : untuk menampilkan alamat data ke serial monitor
a.) Penjelasan Coding
Serial.print(":");
#include <EEPROM.h>
Untuk mencetak simbol : pada komunikasi serial
Library yang digunakan untuk membaca dan
Serial.println(nilai,DEC);
menuliskan data dari EEPROM ke mikrokontroler
delay(1000);
ATMega
Memberikan waktu tundaan 1000 millisecond, atau
int alamat;
setara dengan 1 detik sebelum melanjutkan
Untuk menyimpan alamat EEPROM
mengerjakan perintah baris program selanjutnya
int nilai = 0;
}
variabel untuk menyimpan nilai 0
}
void setup() {
void loop() {
Dijalankan pertama kali setiap board arduino
dihidupkan, Semua kode didalam kurung kurawal Semua kode yang ada disini akan dibaca berulang kali
akan dijalankan hanya satu kali ketika program (terus menerus) oleh Arduino. Fungsi ini akan
Arduino dijalankan untuk pertama kalinya. dijalankan setelah setup (fungsi void setup) selesai.
Serial.begin(9600); Setelah dijalankan satu kali fungsi ini akan dijalankan
lagi, dan lagi secara terus menerus sampai catu daya
(power) dilepaskan.
}
Tanda kurung kurawal Digunakan untuk
menentukan akhir dari program.
Daftar Pustaka
Koding 7 segmen
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop(){
//1
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,0);
delay (1000);
//0
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
//A
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
//p
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
//R
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,1);
delay (1000);
//I
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,0);
delay (1000);
//L
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(9,0);
delay (1000);
//2
digitalWrite(2,0);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,0);
digitalWrite(7,0);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
//0
digitalWrite(2,1);
digitalWrite(3,0);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
//1
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,0);
delay (1000);
//7
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,1);
digitalWrite(8,1);
digitalWrite(9,1);
delay (1000);
}
DIGITAL INPUT
byte tombol;
void setup(){
pinMode(2, INPUT);pinMode(3, INPUT);
pinMode(4, INPUT);pinMode(5, INPUT);
pinMode(6, INPUT);pinMode(7, INPUT);
pinMode(8, INPUT);pinMode(9, INPUT);
digitalWrite(2, HIGH);digitalWrite(3, HIGH);
digitalWrite(4, HIGH);digitalWrite(5, HIGH);
digitalWrite(6, HIGH);digitalWrite(7, HIGH);
digitalWrite(8, HIGH);digitalWrite(9, HIGH);
pinMode(10, OUTPUT);pinMode(11, OUTPUT);
pinMode(12, OUTPUT);pinMode(13, OUTPUT);
pinMode(A0, OUTPUT);pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);pinMode(A3, OUTPUT);
}
void loop(){
tombol=digitalRead(2);
if(tombol==LOW)digitalWrite(10,1);
else digitalWrite(10,0);
tombol=digitalRead(3);
if(tombol==LOW)digitalWrite(11,1);
else digitalWrite(11,0);
tombol=digitalRead(4);
if(tombol==LOW)digitalWrite(12,1);
else digitalWrite(12,0);
tombol=digitalRead(5);
if(tombol==LOW)digitalWrite(13,1);
else digitalWrite(13,0);
tombol=digitalRead(6);
if(tombol==LOW)digitalWrite(A0,1);
else digitalWrite(A0,0);
tombol=digitalRead(7);
if(tombol==LOW)digitalWrite(A1,1);
else digitalWrite(A1,0);
tombol=digitalRead(8);
if(tombol==LOW)digitalWrite(A2,1);
else digitalWrite(A2,0);
tombol=digitalRead(9);
if(tombol==LOW)digitalWrite(A3,1);
else digitalWrite(A3,0);
}
ADC
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int adc0;
void setup() {
lcd.begin(16,2);
lcd.print("ADC channel 0");
lcd.setCursor(0,1);
lcd.print("ADC= ");
}
void loop() {
adc0 = analogRead(A0);
lcd.setCursor(5,1);
lcd.print(adc0);
lcd.print(" ");
delay(1000);
}
PULSE LAMPU
void setup() {
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
}
void loop() {
analogWrite(10,1023);
analogWrite(9,20);
}
INTERUPSI
int i;
void setup() {
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
attachInterrupt(0,lampu1,LOW);
}
void loop() {
for(i=4; i<=11; i++){
digitalWrite(i,HIGH);
delay(100);
digitalWrite(i,LOW);
delay(100);
}
}
void lampu1(){
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
Komunikasi serial
void setup(){
Serial.begin(9600);
Serial.print("Metrologi");
Serial.print("dan");
Serial.println("Instrumentasi");
Serial.println("Universitas Gadjah Mada");
}
void loop(){
}
TIMER
#define ledPin 4
void setup()
{
pinMode(ledPin, OUTPUT);
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 31250;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS12);
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
ISR(TIMER1_COMPA_vect)
{
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}
void loop()
{
digitalWrite(5,HIGH);
delay(200);
digitalWrite(5,LOW);
delay(200);
}