arduino.docx

19
Minggu, 16 Maret 2014 Arduino dan 7-Segment Setelah dapat menggunakan Arduino dan sensor LM35, saatnya kita bermain dengan display. Saya memilih untuk menggunakan LED 7- segment. Saya memilih menggunakan 7-segment karena 7-segment biasa digunakan ketika pertama kali belajar rangkaian elektronik. Langsung saja ya. Penjelasan 7-segment 7-segment adalah display yang terdiri dari 7 LED untuk menampilkan angka maupun huruf. Biasanya 7-segment juga dilengkapi dengan sebuah LED titik di kanan bawah, sehingga dapat digunakan untuk menampilkan bilangan desimal.

Transcript of arduino.docx

Page 1: arduino.docx

Minggu, 16 Maret 2014

Arduino dan 7-Segment

Setelah dapat menggunakan Arduino dan sensor LM35, saatnya kita bermain dengan display. Saya memilih untuk menggunakan LED 7-segment. Saya memilih menggunakan 7-segment karena 7-segment biasa digunakan ketika pertama kali belajar rangkaian elektronik. Langsung saja ya.

Penjelasan 7-segment

7-segment adalah display yang terdiri dari 7 LED untuk menampilkan angka maupun huruf. Biasanya 7-segment juga dilengkapi dengan sebuah LED titik di kanan bawah, sehingga dapat digunakan untuk menampilkan bilangan desimal.

Page 2: arduino.docx

Gambar 1 - 7-segment

7-segment yang banyak ditemui dipasaran ada 2 jenis yaitu common cathode 7-segment dan common anode 7-segment. Perbedaannya adalah pada common cathode, semua katoda 7 LED yang terdapat pada 7-segment tersambung menjadi satu, sedangan pada common anode, tersambung pada anoda nya.

Gambar 2 - common cathode 7-segment dan common anode 7-segment

Page 3: arduino.docx

Gambar 3 - rangkaian dalam LED 7-segment

Setelah mengetahui tentang 7-segment, sekarang saatnya melakukan percobaan.

Percobaan #1

Menampilkan Angka pada 1 Buah 7-segment dengan Menggunakan Arduino

Page 4: arduino.docx

Pada percobaan ini akan dihubugkan 1 buah 7-segment common anode dengan arduino. Bagian 7-segment yang dihubungkan semua LED nya kecuali titik yang terletak di kanan bawah. Setelah 7-segment terhubung dengan Arduino, akan dibuat program untuk menghitung mundur dari 9 ke 0 kemudian akan kedap kedip di angka 0, lalu kembali ke 9, hitung mundur ke 0, dan seterusnya

Alat dan komponen yang dibutuhkan:

board Arduino x1

kabel USB untuk power Arduino x1

common anode 7-segment x1

breadboard x1

resistor 1k ohm x 7

kabel (untuk jumper) secukupnya

Skema rangkaian dapat dilihat pada gambar 4.

Gambar 4 - skema rangkaian percobaan 1

Hasil akhir rangkaian yang saya buat dapat dilihat pada gambar 5.

Page 5: arduino.docx

Gambar 5 - Rangkaian yang sudah saya buat untuk percobaan 1

Setelah membuat rangkaian, selanjutnya saya menggunggah kode program ke dalam Arduino, kode program yang saya gunakan sebagai berikut

Show/Hide Code

//Arduino pin: 2,3,4,5,6,7,8

//mendefinisikan seven segment yang nyala untuk menampilkan

//angka tertentu

byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0

{ 1,1,0,0,1,1,1 }, // = 1

{ 0,0,1,0,0,1,0 }, // = 2

{ 1,0,0,0,0,1,0 }, // = 3

{ 1,1,0,0,1,0,0 }, // = 4

{ 1,0,0,1,0,0,0 }, // = 5

{ 0,0,0,1,0,0,0 }, // = 6

Page 6: arduino.docx

{ 1,1,0,0,0,1,1 }, // = 7

{ 0,0,0,0,0,0,0 }, // = 8

{ 1,0,0,0,0,0,0 } // = 9

};

void setup() {

//setting setiap pin sebagai OUTPUT

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop() {

//lakukan looping untuk menampilkan angka 9 sampai ke 0

for (byte count = 10; count > 0; --count) {

delay(1000);

sevenSegWrite(count - 1);

}

//membuat 7-segment kedap kedip ketika menunjukkan angka 0

for(int i=0; i<4; i++){

clear();

delay(250);

Page 7: arduino.docx

sevenSegWrite(0);

delay(250);

}

clear();

}

//prosedur untuk menampilkan angka pada 7-segment

void sevenSegWrite(byte digit) {

byte pin = 2;

for (byte segCount = 0; segCount < 7; ++segCount) {

digitalWrite(pin, seven_seg_digits[digit][segCount]);

pin++;

}

}

//prosedur untuk mematikan semua LED pada 7-segment

void clear(){

byte pin = 2;

for (byte segCount = 0; segCount < 7; ++segCount) {

digitalWrite(pin, HIGH);

pin++;

}

}

Setelah program dijalankan akan didapatkan hasil seperti pada gambar 6.

Page 8: arduino.docx

Gambar 6 - Arduino sudah dimasukkan kode program diatas dan dijalankan

Percobaan #2

Menampilkan Suhu yang dibaca dengan LM35 pada 4 Buah 7-segment dengan Menggunakan Arduino

Pada percobaan 2 akan digunakan 4 buah 7-segment untuk menampilkan hasil pengukuran dari LM35, dengan menggabungkan kode dari percobaan membuat rangkaian dengan LM35 sebelumnya dengan percobaan #1. Alat dan komponen yang dibutuhkan:

board Arduino x1

kabel USB untuk power Arduino x1

common anode 7-segment x4

breadboard x2

resistor 1k ohm x 11

transistor NPN x4

LM35 x1

kabel (untuk jumper) secukupnya

Page 9: arduino.docx

skema rangkaian dapat dilihat pada gambar 7.

Gambar 7 - skema rangkaian percobaan 2

Hasil akhir rangkaian yang saya buat dapat dilihat pada gambar 8.

Page 10: arduino.docx

Gambar 8 - Rangkaian yang sudah saya buat untuk percobaan 2

Setelah membuat rangkaian, selanjutnya saya menggunggah kode program ke dalam Arduino, kode program yang saya gunakan sebagai berikut

Show/Hide Code

int LM35Pin = 0; //pin input sensor suhu LM35

//Arduino pin: 2,3,4,5,6,7,8

//mendefinisikan seven segment yang nyala untuk menampilkan

//angka tertentu

byte numeral[10][7] = { { 0,0,0,0,0,0,1 }, // = 0

{ 1,1,0,0,1,1,1 }, // = 1

{ 0,0,1,0,0,1,0 }, // = 2

{ 1,0,0,0,0,1,0 }, // = 3

{ 1,1,0,0,1,0,0 }, // = 4

{ 1,0,0,1,0,0,0 }, // = 5

Page 11: arduino.docx

{ 0,0,0,1,0,0,0 }, // = 6

{ 1,1,0,0,0,1,1 }, // = 7

{ 0,0,0,0,0,0,0 }, // = 8

{ 1,0,0,0,0,0,0 } // = 9

};

//mendefinisikan seven segment untuk menampilkan derajat

byte degree[] = {1,1,1,0,0,0,0};

//mendefinisikan seven segment untuk menampilkan derajat

byte celcius[] = {0,0,1,1,0,0,1};

//Arduino pin: 2,3,4,5,6,7,8

const int segmentPins[] = {2,3,4,5,6,7,8};

//jumlah seven segment yang digunakan

const int nDigit = 4;

//pin untuk setiap seven segment

const int digitPins[nDigit] = {9,10,11,12};

//variabel untuk menyimpan suhu sementara

int currentTemp = readTemp();

void setup() {

//mendefinisikan pin untuk 7 LED pada seven segment

for(int i=0; i<7; i++){

Page 12: arduino.docx

pinMode(segmentPins[i], OUTPUT);

}

//mendefinsikan pin untuk seven segment

for(int i=0; i<nDigit; i++){

pinMode(digitPins[i], OUTPUT);

}

}

void loop(){

int currentTemp = readTemp();

int startTime = millis();

int duration;

//looping selama program berjalan < 1s

while(duration < 1000){

//menghitung waktu berjalannya program

duration = millis() - startTime;

//menampilkan suhu sekarang

showNumber(currentTemp);

//menampilkan satuan

showUnit();

}

}

Page 13: arduino.docx

int readTemp(){

int value = analogRead(LM35Pin);

float millivolts = (value / 1024.0) * 5000;//konversi perhitungan dari input

//analog ke digital

int celcius = millivolts / 10; //output sensor sebesar 10mV per derajat celsius

return celcius;

}

//prosedur untuk menentukan seven segment mana yang menampilkan angka

void showNumber(int number){

//kondisi apabila angka yang ingin ditampilkan = 0

if(number == 0){

showDigit(0, nDigit-3);

}//kondisi lainnya

else{

for(int digit=nDigit-3; digit>=0; digit--){

if(number>0){

showDigit(number%10, digit);

number=number/10;

}

}

}

}

//prosedur untuk menampilkan angka pada seven segment

void showDigit(int number, int digit){

Page 14: arduino.docx

digitalWrite(digitPins[digit], HIGH);

for(int segment=0; segment<7; segment++){

digitalWrite(segmentPins[segment], numeral[number][segment]);

}

delay(5);

digitalWrite(digitPins[digit], LOW);

}

//prosedur untuk menampilkan satuan

void showUnit(){

digitalWrite(digitPins[2], HIGH);

for(int segment=0; segment<7; segment++){

digitalWrite(segmentPins[segment], degree[segment]);

}

delay(5);

digitalWrite(digitPins[2], LOW);

digitalWrite(digitPins[3], HIGH);

for(int segment=0; segment<7; segment++){

digitalWrite(segmentPins[segment], celcius[segment]);

}

delay(5);

digitalWrite(digitPins[3], LOW);

}

Setelah program dijalankan akan didapatkan hasil seperti pada gambar 9.

Page 15: arduino.docx

Gambar 9 - Arduino sudah dimasukkan kode program diatas dan dijalankan

Demikian postingan kali ini, semoga bermanfaat dan selamat mencoba!

http://christianhendy.blogspot.com/2014/03/arduino-dan-7-segment_16.html

http://www.rustamaji.net/id/arduino/mengenal-arduino

Voltage Divider dan Sensor Analog

DITULIS OLEH TRAS RUSTAMAJI PADA SAB, 12/13/2014 - 17:20

Untuk bisa memahami cara kerja dan penggunaan sensor analog, tidak akan lengkap tanpa paham voltage divider (pembagi tegangan).

Sesuai dengan namanya, voltage divider akan membagi tegangan yang diberikan sesuai dengan perbandingan resistor (hambatan) yang dipasang.

Jadi pada gambar di atas, karena hambatan R1 dan R2 sama (1 kOhm), maka tegangan batere 3V akan dibagi menjadi sama besar masing2 1,5V yang jatuh di R1 dan R2.

Page 16: arduino.docx

Dengan mengubah-ubah perbandingan R1 dan R2 kita bisa mengubah-ubah tegangan yang jatuh baik di R1 maupun R2. Misalnya, jika R1 = 2 kOhm sedangkan R2 = 1 kOhm, maka tegangan di R1 (VR1) menjadi 2V dan VR2 = 1 V. Atau secara umum bisa dituliskan :

VR1=R1R1+R2×VCC

dan

VR2=R2R1+R2×VCC

Ada satu komponen elektronika yang dibuat khusus untuk berfungsi sebagai voltage divider, namanya potensiometer seperti gambar di bawah ini. Di dalamnya mengandung R1 dan R2 dengan susunan seperti gambar di atas. Dan nilai R1 dan R2 nya bisa diubah-ubah dengan cara memutar knob. Hasilnya kita bisa mengatur tegangan di titik tengah dengan mengatur knob!

Potensiometer ini bisa kita gunakan sebagai analog sensor! Bahkan hampir semua sensor analog bekerja seperti potensiometer ini. Cuma bedanya sensor-sensor tersebut tidak perlu secara manual kita putar, melainkan "diputar" oleh keadaan tertentu. Misalnya sensor cahaya (LDR), bekerja seperti potensiometer yang berputar otomastis tergantung besarnya intensitas cahaya. Kalau cahaya bertambah terang, kita seperti memutar potensiometer ke kanan. Dan kalau cahaya menjadi gelap, seperti memutar potensiometer ke kiri.

Page 17: arduino.docx

Mari ambil Arduino Uno dan potensiometer dan kita mulai bikin sketch dengan Arduino!