Friday, 4 March 2016

Hello, World! using Arduino and LCD


 


Introduction

Proyek ini diambil dari tutorial yang terdapat di halaman resmi arduino cc. Arduino sendiri sudah memiliki library untuk LCD yaitu LiquidCrystal. Dengan library kita dapat mengontrol tampilan dari LCD yang memiliki 16-pin interface.

Library membantu kita menyederhanakan proses kontrol sehingga kita tidak perlu mengetahui seperti apa instruksi pada low-level-nya.  LCD dapat dikontrol dengan dua mode: 4-bit atau 8-bit. Mode 4-bit membutuhkan tujuh pin I/O dari arduino sedangkan mode 8-bit membutuhkan 11 pin. Untuk menampilkan teks pada screen LCD, kita dapat memanfaatkan mode 4-bit.

What We will Need

  • Arduino atau Genuino Board
  • LCD 2x16
  • 10k ohm potensiometer
  • 220 ohm resistor
  • breadboard
  • kabel jumper secukupnya

Build the Circuit

Pin-pin yang harus dipasang adalah sebagai berikut:
  1. Pin RS ke pin 12
  2. pin E ke pin 11
  3. pin D4 ke pin 5
  4. pin D5 ke pin 4
  5. pin D6 ke pin 3
  6. pin D7 ke pin 2
Agar lebih jelas, perhatikan skema dibawah ini:

 



Start Coding

1:  /*  
2:   LiquidCrystal Library - Hello World  
3:    
4:   Demonstrates the use a 16x2 LCD display. The LiquidCrystal  
5:   library works with all LCD displays that are compatible with the  
6:   Hitachi HD44780 driver. There are many of them out there, and you  
7:   can usually tell them by the 16-pin interface.  
8:    
9:   This sketch prints "Hello World!" to the LCD  
10:   and shows the time.  
11:    
12:   The circuit:  
13:   * LCD RS pin to digital pin 12  
14:   * LCD Enable pin to digital pin 11  
15:   * LCD D4 pin to digital pin 5  
16:   * LCD D5 pin to digital pin 4  
17:   * LCD D6 pin to digital pin 3  
18:   * LCD D7 pin to digital pin 2  
19:   * LCD R/W pin to ground  
20:   * LCD VSS pin to ground  
21:   * LCD VCC pin to 5V  
22:   * 10K resistor:  
23:   * ends to +5V and ground  
24:   * wiper to LCD VO pin (pin 3)  
25:    
26:   Library originally added 18 Apr 2008  
27:   by David A. Mellis  
28:   library modified 5 Jul 2009  
29:   by Limor Fried (http://www.ladyada.net)  
30:   example added 9 Jul 2009  
31:   by Tom Igoe  
32:   modified 22 Nov 2010  
33:   by Tom Igoe  
34:    
35:   This example code is in the public domain.  
36:    
37:   http://www.arduino.cc/en/Tutorial/LiquidCrystal  
38:   */  
39:    
40:  // include the library code:  
41:  #include <LiquidCrystal.h>  
42:    
43:  // initialize the library with the numbers of the interface pins  
44:  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  
45:    
46:  void setup() {  
47:   // set up the LCD's number of columns and rows:  
48:   lcd.begin(16, 2);  
49:   // Print a message to the LCD.  
50:   lcd.print("hello, world!");  
51:  }  
52:    
53:  void loop() {  
54:   // set the cursor to column 0, line 1  
55:   // (note: line 1 is the second row, since counting begins with 0):  
56:   lcd.setCursor(0, 1);  
57:   // print the number of seconds since reset:  
58:   lcd.print(millis() / 1000);  
59:  }  

 

The Result

 
Read More

Let's Start Playing - Arduino Calculator

People never learn anything by being told, they have to find out for themselves. - Paulo Coelho, Veronika Decides to Die

Intermezzo

Postingan ini merupakan bagian dari Tugas #2 kuliah II3231 Interaksi Manusia Komputer dan Antarmuka.
Terhitung dari pengerjaan Tugas #2 ini hingga seterusnya, saya tidak lagi sekelompok dengan Ipah (karena anggota kelompok kami hanya dua orang) untuk itu saya migrasi ke kelompok 11 yang beranggotakan Hidayat, Alrido Martha Devano, Lenny Putri Yulianti dan Noor Afifah Huwaidah. Jadi, jika uraian yang saya berikan di blog ini kurang jelas, pembaca bisa menelusurinya di blog teman-teman saya tersebut.

Introduction

Kali ini kita akan membuat sebuah kalkulator menggunakan arduino. Masukkan akan diambil dari Keypad Matrix 4x4 dan keluaran akan ditampilkan pada layar LCD 2x16.

Keypad Matrix 4x4

 

Keypad Matrix adalah salah satu dari additional board yang bisa kita gunakan untuk digital inputs. Keypad Matrix terdiri atas sejumlah buttons yang disusun dalam bentuk array/matriks yang mengandung baris dan kolom. Keypad Matrix digunakan untuk memasukkan inputan numerik ke mikrokontroler (dalam hal ini arduino). Keypad Matrix ada yang berbentuk 3x4, 4x4, dan sebagainya. Konektor dari Keypad Matrix biasanya berbentuk female connector.

Kita menggunakan Keypad Matrix 4x4 demi kemudahan. Soalnya, jika kita menggunakan yang 3x4 maka hanya dua button yang tersedia untuk operator, satunya untuk tanda sama dengan ('=') dan satu tombol lagi untuk empat operator kabataku ('x', '/', '+', '-'). Hal ini memang sangat memungkinkan untuk dilakukan dengan cara memodifikasi program pada satu button. Program tersebut mendefinisikan bahwa setiap kali button tersebut di tekan maka operator akan berubah secara iteratif mulai dari kali, bagi, tambah, kurang. Sedangkan, jika kita menggunakan Keypad Matrix 4x4, kita tidak perlu memodifikasi programnya, cukup meng-assign pin 'sedikit' lebih banyak saja.

User manual dari Keypad Marix 4x4 bisa diperoleh dari sini.

 

Cara kerja dari Keypad Matrix 4x4 adalah sebagai berikut:
  • Matrix Keypad menggunakan kombinasi empat baris dan empat kolom untuk menentukan status buttons pada host device dalam hal ini Arduino Uno. Di dalam setiap key terdapat pushbutton yang saling terhubung ke satu baris dan satu kolom.
  • Agar mikrokontroler (Arduino) dapat menentukan button  yang mana yang sedang ditekan, ia perlu menarik states setiap kolom (pin 1-4) baik itu LOW atau HIGH dalam satu waktu kemudian menarik states dari keempat baris (pin 5-8).
  • Contohnya, jika program kita menarik keempat kolom LOW, dan menarik baris pertama HIGH. Maka ia akan membaca input states dari setiap kolom dan membaca pin 1 HIGH. Artinya sebuah kontak sudah dibuat antara kolom 4 dan baris 1 sehingga button 'A' sedang ditekan. 

LCD (Liquid Crystal Display) 2x16

LCD memiliki interface yang paralel, maksudnya bahwa mikrokontroler harus memanipulasi sejumlah pin interface sekaligus untuk mengontrol tampilannya. Pin interface LCD terdiri dari:
  • Pin Read/Write (R/W) --> memilih mode pembacaan atau penulisan
  • Pin Enable (E) --> mengaktifkan penulisan ke register
  • 8 Pin Data (D0-D7) --> state dari pin-pin ini bisa HIGH atau LOW, merupakan bits yang kita tulis ke register ketika kita sedang menulis atau nilai yang kita baca ketika kita sedang membaca
  • Pin display contrast (Vo/Vee), Pin power supply (+5V/Vss dan Gnd/Vdd) dan pin LED Backlight (Bklt+/Anode(A) and Bklt-/Cathode(K)) --> digunakan untuk memberikan daya ke LCD, mengontrol kontras tampilan, dan menghidupkan atau mematikan LED backlight.
 

What We will Need

Untuk dapat membuat kalkulator ini, komponen-komponen yang dibutuhkan sebagai berikut:
  • Arduino atau Genuino Board
  • LCD (Liquid Crystal Display) --> bisa yang merk Hitachi HD44780 (recommended) atau yang dari vendor China Qapass 1602A (yang saya digunakan)
  • Keypad Matrix 4x4
  • 10k ohm potensiometer
  • 220 ohm resistor
  • breadboard
  • kabel jumper secukupnya

Before We Start to Build It

Sebelum memulai membuat kalkulator arduino, kita harus membiasakan diri terlebih dahulu untuk memastikan setiap modul yang diperlukan bekerja dengan baik. Cara mudah untuk melakukannya adalah dengan mencoba setiap modul yang ada. Misal, pada percobaan ini, saya mencoba menampilkan tulisan 'Hello, World!' pada modul LCD dan menampilkan angka-angka yang sudah di-set di keypad ke serial monitor. Hasilnya, dapat dilihat di postingan ini: LCD dan Keypad.

Build the Circuit



Start Coding

Kode diambil dari sini.
1:  /*   
2:   || @version 1.0  
3:   || @author Andrew Mascolo  
4:   || @date May 15, 2013  
5:   ||  
6:   || @description  
7:   || Simple use of keypad and LCD  
8:  */  
9:  #include <Keypad.h>  
10:  #include <Wire.h>   
11:  #include <LiquidCrystal_I2C.h>  
12:    
13:  LiquidCrystal_I2C lcd(0x16,16,2);  
14:    
15:  long first = 0;  
16:  long second = 0;  
17:  double total = 0;  
18:    
19:  char customKey;  
20:  const byte ROWS = 4;  
21:  const byte COLS = 4;  
22:    
23:  char keys[ROWS][COLS] = {  
24:   {'1','2','3','+'},  
25:   {'4','5','6','-'},  
26:   {'7','8','9','*'},  
27:   {'C','0','=','/'}  
28:  };  
29:  byte rowPins[ROWS] = {2,3,4,5}; //connect to the row pinouts of the keypad  
30:  byte colPins[COLS] = {11,10,9,8}; //connect to the column pinouts of the keypad  
31:    
32:  //initialize an instance of class NewKeypad  
33:  Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);   
34:    
35:  void setup()  
36:  {  
37:   lcd.init(); // initialize the lcd   
38:   lcd.backlight();  
39:  }  
40:    
41:  void loop()  
42:  {  
43:   customKey = customKeypad.getKey();  
44:   switch(customKey)   
45:   {  
46:   case '0' ... '9': // This keeps collecting the first value until a operator is pressed "+-*/"  
47:    lcd.setCursor(0,0);  
48:    first = first * 10 + (customKey - '0');  
49:    lcd.print(first);  
50:    break;  
51:    
52:   case '+':  
53:    first = (total != 0 ? total : first);  
54:    lcd.setCursor(0,1);  
55:    lcd.print("+");  
56:    second = SecondNumber(); // get the collected the second number  
57:    total = first + second;  
58:    lcd.setCursor(0,3);  
59:    lcd.print(total);  
60:    first = 0, second = 0; // reset values back to zero for next use  
61:    break;  
62:    
63:   case '-':  
64:    first = (total != 0 ? total : first);  
65:    lcd.setCursor(0,1);  
66:    lcd.print("-");  
67:    second = SecondNumber();  
68:    total = first - second;  
69:    lcd.setCursor(0,3);  
70:    lcd.print(total);  
71:    first = 0, second = 0;  
72:    break;  
73:    
74:   case '*':  
75:    first = (total != 0 ? total : first);  
76:    lcd.setCursor(0,1);  
77:    lcd.print("*");  
78:    second = SecondNumber();  
79:    total = first * second;  
80:    lcd.setCursor(0,3);  
81:    lcd.print(total);  
82:    first = 0, second = 0;  
83:    break;  
84:    
85:   case '/':  
86:    first = (total != 0 ? total : first);  
87:    lcd.setCursor(0,1);  
88:    lcd.print("/");  
89:    second = SecondNumber();  
90:    lcd.setCursor(0,3);  
91:    
92:    second == 0 ? lcd.print("Invalid") : total = (float)first / (float)second;  
93:    
94:    lcd.print(total);  
95:    first = 0, second = 0;  
96:    break;  
97:    
98:   case 'C':  
99:    total = 0;  
100:    lcd.clear();  
101:    break;  
102:   }  
103:  }  
104:    
105:  long SecondNumber()  
106:  {  
107:   while( 1 )  
108:   {  
109:    customKey = customKeypad.getKey();  
110:    if(customKey >= '0' && customKey <= '9')  
111:    {  
112:     second = second * 10 + (customKey - '0');  
113:     lcd.setCursor(0,2);  
114:     lcd.print(second);  
115:    }  
116:    
117:    if(customKey == '=') break; //return second;  
118:   }  
119:   return second;   
120:  }  

The Result



Read More

Step to the Next Level with Arduino (Using ESP8266 Modul) #Part1

Introduction

Selanjutnya, kita akan melangkah ke level yang sedikit lebih advance, yaitu membuat board arduino dapat berkomunikasi dengan perangkat lain dengan menambahkan sebuah modul komunikasi, yaitu modul ESP8266 (wifi). Parameter keberhasilan dari proyek ini adalah membuat modul ESP8266 dapat terkoneksi dengan perangkat lain seperti PC, smartphone, dan lain-lain.

 

Intermezzo

Modul ESP8266 memiliki banyak model/tipe. Sejauh saya ketahui ada sekitar enam belas tipe berdasarkan website resmi ESP8266. Pada dasarnya secara fungsional semua tipe sama saja, yang membedakan hanyalah pada jumlah pin, ukuran, dan konteks penggunaan. 

Yang paling sering digunakan untuk board arduino dan juga banyak referensinya di internet adalah modul ESP8266 tipe-01. Untuk proyek ini, asisten perkuliahan memang tidak menyebutkan secara eksplisit tipe mana yang harus digunakan (sedangkan saya saat itu belum mengetahui kalau modul ini memiliki banyak tipe), jadinya saya secara "tidak sengaja" membeli modul ESP8266 tipe-12. Berikut penampakan dari modul ESP8266 tipe-12 dan tabel perbandingan setiap tipe.



What We Will Need

  1. Arduino atau Genuino Board
  2. Modul ESP8266
  3. Bread Board
  4. Kabel Jumper

Build The Circuit

Karena proyek ini menggunakan modul ESP8266 tipe-12 maka ada sedikit penyesuaian pada skema yang digunakan.



Start Coding

Kode berikut diambil dari sini. Kode ini bertujuan untuk menjadikan arduino dan modul ESP8266 sebagai webserver. Namun, karena terkendala pada modifikasi dari tipe-01 ke tipe-12, kode ini belum berhasil diimplementasikan pada proyek ini.

1:  #include <SoftwareSerial.h>  
2:  #define DEBUG true  
3:  SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.  
4:                 // This means that you need to connect the TX line from the esp to the Arduino's pin 2  
5:                 // and the RX line from the esp to the Arduino's pin 3  
6:  void setup()  
7:  {  
8:   Serial.begin(9600);  
9:   esp8266.begin(9600); // your esp's baud rate might be different  
10:   sendData("AT+RST\r\n",2000,DEBUG); // reset module  
11:   sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point  
12:   sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address  
13:   sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections  
14:   sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80  
15:  }  
16:  void loop()  
17:  {  
18:   if(esp8266.available()) // check if the esp is sending a message   
19:   {  
20:    /*  
21:    while(esp8266.available())  
22:    {  
23:     // The esp has data so display its output to the serial window   
24:     char c = esp8266.read(); // read the next character.  
25:     Serial.write(c);  
26:    } */  
27:    if(esp8266.find("+IPD,"))  
28:    {  
29:     delay(1000);  
30:     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns   
31:                        // the ASCII decimal value and 0 (the first decimal number) starts at 48  
32:     String webpage = "<h1>Hello</h1>&lth2>World!</h2><button>LED1</button>";  
33:     String cipSend = "AT+CIPSEND=";  
34:     cipSend += connectionId;  
35:     cipSend += ",";  
36:     cipSend +=webpage.length();  
37:     cipSend +="\r\n";  
38:     sendData(cipsend,1000,DEBUG);  
39:     sendData(webpage,1000,DEBUG);  
40:     webpage="<button>LED2</button>";  
41:     cipSend = "AT+CIPSEND=";  
42:     cipSend += connectionId;  
43:     cipSend += ",";  
44:     cipSend +=webpage.length();  
45:     cipSend +="\r\n";  
46:     sendData(cipsend,1000,DEBUG);  
47:     sendData(webpage,1000,DEBUG);  
48:     String closeCommand = "AT+CIPCLOSE=";   
49:     closeCommand+=connectionId; // append connection id  
50:     closeCommand+="\r\n";  
51:     sendData(closeCommand,3000,DEBUG);  
52:    }  
53:   }  
54:  }  
55:  String sendData(String command, const int timeout, boolean debug)  
56:  {  
57:    String response = "";  
58:    esp8266.print(command); // send the read character to the esp8266  
59:    long int time = millis();  
60:    while( (time+timeout) > millis())  
61:    {  
62:     while(esp8266.available())  
63:     {  
64:      // The esp has data so display its output to the serial window   
65:      char c = esp8266.read(); // read the next character.  
66:      response+=c;  
67:     }   
68:    }  
69:    if(debug)  
70:    {  
71:     Serial.print(response);  
72:    }  
73:    return response;  
74:  }  

The Result

Berikut hasil dari langkah-langkah di atas yang sudah dikerjakan:



















   
Terima Kasih ;3


Read More

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