Friday, 12 February 2016

2-Digits 7 Segment Display Thermometer Using Arduino Uno

Sumber Gambar: http://www.arduino.cc

Introduction

Postingan ini merupakan bagian dari perkuliahan II3231 Interaksi Manusia Komputer dan Antarmuka (disingkat IMKA) dan sekaligus menjadi tugas pertama yang dilakukan berkelompok (teman sekelompok saya, Ipah Umu Abiba, silahkan cek blognya disini).

Selain untuk memenuhi tugas perkuliahan, saya juga sangat berharap pembaca terutama yang sama-sama sedang/ingin berkenalan dan belajar tentang arduino bisa terbantu dengan adanya postingan saya ini.

What We will Need

Untuk dapat membuat termometer ini, diperlukan beberapa komponen sebagai berikut:
  • Board Arduino Uno
  • Breadboard
  • Sensor suhu LM35
  • 4.7K Ohm resistor
  • 2 buah 7 segment display
  • Kabel jumper secukupnya


Interesting Part

Banyak hal menarik yang terjadi saat saya membeli beberapa komponen yang dibutuhkan, diantaranya:

Ternyata... kabel jumper itu ada berbagai macam tipe

Sebelumnya saya memang sudah tahu kalau kabel jumper itu setidaknya ada dua macam, yang satu, dipasang 'kepala hitam' (yang kabelnya berwarna-warni) dan yang lainnya, dipotong biasa. Kebetulan saya ingin memakai kabel jumper yang ada 'kepala hitam'nya agar memudahkan pekerjaan karena ia tidak mudah lepas. Saat saya membeli, saya hanya menyebutkan kalau saya butuh kabel jumper yang ujungnya sudah dipasang 'kepala' dan bisa ditusuk langsung. Lalu bapak penjualnya balik bertanya, saya mau tipe yang mana? male-male? female-female? female-male? Nah bingung lah saya, maksudnya apa? Akhirnya saya minta diperlihatkan saja salah satunya, male-male, karena merasa pernah melihat barangnya akhirnya saya memilih itu, kabel jumper male-male, berharap tidak salah pilih. Tapi saya tetap penasaran dengan rupa yang lain, akhirnya saya googling di internet tentang tiga tipe kabel jumper tersebut. Dan barulah saya mengerti apa bedanya ketika kabel tersebut.


Female-Female
Hasil gambar untuk male female jumper
Male-Female
Male-Male


Ternyata... 7 Segment display juga ada dua macam

Yap, 7 segment display ada dua jenis, yaitu anoda dan katoda. Dan secara fisik, tidak terdapat perbedaan di antara keduanya. Biasanya kalau ingin membedakannya penjual perangkat elektronik melihat nomor seri yang tertera padanya.

Before We Start to Build It

Sebelum, membangun termometer ini, saya melakukan pengecekan pada setiap komponennya terutama pada board arduino, 7 segment display, dan sensor LM35. Tentunya jika salah satu komponen tidak berfungsi maka termometer yang akan kita bangun juga akan tidak berfungsi dengan baik.

1. Pengecekan Board Arduino
Untuk pengecekan board arduino cara yang paling mudah adalah mencolok kabel USB-nya ke komputer. Kemudian untuk memastikan apakah arduino berfungsi dengan baik saya mencoba untuk mengimplementasikan program 'blinking' untuk LED bawaan dari arduino sendiri. Berikut program blinking:

const int LED = 13;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED, HIGH);
  delay(1000);
  digitalWrite(LED, LOW);
  delay(1000);
}
Hasilnya sebagai berikut:




2. Pengecekan Sensor LM35
Hasil dari sensor LM35 dapat dilihat melalui serial monitor yang disediakan oleh Arduino IDE. Berikut programnya:

/*
lm35 sketch
prints the temperature to the Serial Monitor
*/
const int inPin = 0; // analog pin
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(inPin);

Serial.print(value); Serial.print(" > ");
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // sensor output is 10mV per degree Celsius
Serial.print(celsius);
Serial.print(" degrees Celsius, ");
Serial.print( (celsius * 9)/ 5 + 32 ); // converts to fahrenheit
Serial.println(" degrees Fahrenheit");
delay(1000); // wait for one second
}

Hasilnya sebagai berikut:



3. Pengecekan 7 Segment Display
Program yang dibuat adalah program counter dari 0 s.d. 9. Programnya sebagai berikut:

// Arduino 7 segment display example software
// http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
 
// Define the LED digit patters, from 0 - 9
// Note that these patterns are for common cathode displays
// For common anode displays, change the 1's to 0's and 0's to 1's
// 1 = LED on, 0 = LED off, in this order:
//                                    Arduino pin: 2,3,4,5,6,7,8
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                                           { 0,1,1,0,0,0,0 },  // = 1
                                                           { 1,1,0,1,1,0,1 },  // = 2
                                                           { 1,1,1,1,0,0,1 },  // = 3
                                                           { 0,1,1,0,0,1,1 },  // = 4
                                                           { 1,0,1,1,0,1,1 },  // = 5
                                                           { 1,0,1,1,1,1,1 },  // = 6
                                                           { 1,1,1,0,0,0,0 },  // = 7
                                                           { 1,1,1,1,1,1,1 },  // = 8
                                                           { 1,1,1,0,0,1,1 }   // = 9
                                                           };

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);
  writeDot(0);  // start with the "dot" off
}

void writeDot(byte dot) {
  digitalWrite(9, dot);
}
    
void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}

void loop() {
  for (byte count = 0; count <= 9; ++count) {
   delay(1000);
   sevenSegWrite(count + 1); 
  }
  delay(4000);
}
Hasilnya adalah sebagai berikut:


Interesting Part

Percobaan pertama meng-upload program ke board arduino gagal. Padahal program tersebut berhasil di-compile. Saya coba googling dengan menggunakan error message-nya. Ternyata banyak juga orang yang mengalami hal yang sama. Tetapi kebanyakan solusinya tidak berhasil saya lakukan. Sampai akhirnya saya ketemu salah satu postingan di ladyada.net yang menjawab persoalan yang saya alami.



Di sana memang disebutkan bahwa arduino masih memiliki banyak bugs di dalamnya.
Jika saya mendapatkan message seperti gambar di atas, artinya arduino tidak merespon aksi yang kita lakukan. Dan ada banyak alasan kenapa hal ini terjadi, beberapa di antaranya:

  • If you have a NG Arduino, did you press reset just before selecting Upload menu item?
  • Is the correct Serial Port selected?
  • Is the correct driver installed?
  • Is the chip inserted into the Arduino properly? (If you built your own arduino or have burned the bootloader on yourself)
  • Does the chip have the correct bootloader on it? (If you built your own arduino or have burned the bootloader on yourself)

Let's Start to Build It

Untuk membuat termometer ini, saya mengambil referensi dari sini.
Secara garis besar kita melakukan penggabungan modul sensor LM35 dengan modul 7 segment display.

CIRCUIT SCHEMATIC

Schematic Segment Thermometer


CODE

Program yang akan dijalankan membutuhkan Arduino Seven Segment Library. Yang bisa di-download disini.

#include "SevSeg.h"

SevSeg sevseg;

float celsius = 0, kelvin = 0, fahrenheit = 0;

int tempUnits = celsius; //which unit of temperature do you prefer?

int refreshTime = 2000; //how many seconds should it wait before it checks and displays the temp again? 1000 = 1 second

unsigned long timer;

void setup()
{
  sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);
}

void loop()
{
  sevseg.PrintOutput();
 
  //Reads the input and converts it to Kelvin degrees
  kelvin = analogRead(0) * 0.004882812 * 100;
 
  //Converts Kelvin to Celsius minus 2.5 degrees error
  celsius = kelvin - 2.5 - 273.15;
 
  //Converts Celsius to Fahrenheit minus 2.5 degrees error
  fahrenheit = ((kelvin - 2.5) * 9 / 5) - 459.67;
   
  unsigned long mils=millis();
  if (mils-timer>=refreshTime) {
    timer=mils;
    //Print teperature to the displays
  sevseg.NewNum(tempUnits,(byte) 2);
  }
}
Hasilnya adalah sebagai berikut:


Sampai saat ini saya masih belum berhasil menampilkan angka yang benar. Kemungkinan besar ada masalah dengan kaki-kaki (pin) pada 7 segment-nya dan juga serial monitor masih belum mengeluarkan hasil pembacaan.



Read More

Wednesday, 10 February 2016

Getting Started with Arduino

Learning starts with failure; the first failure is the beginning of education (John Hersey)

Sumber Gambar: it-ebooks.info

Alur penggunaan Arduino, khusus pada Windows OS mulai dari menghubungkan Arduino board ke PC hingga meng-upload sketch pertama Anda: (Sumber: https://www.arduino.cc/en/Guide/Windows)
  1. Siapkan Arduino board dan kabel USB
  2. Download software Arduino (IDE)
  3. Hubungkan board ke PC
  4. Instal driver
  5. Launch aplikasi Arduino
  6. Buat program blink
  7. Pilih board yang akan digunakan (dalam hal ini Arduino/Genuino Uno)
  8. Pilih Serial Port
  9. Upload program ke board



Sumber Gambar: wikipedia













Edison failed 10.000 times before he made the electric light. Do not be discouraged if you fail a few times (Napoleon Hill)
Read More

Monday, 8 February 2016

Views

Designed By Blogger Templates