Selasa, 19 November 2013

ARDUINO & LM35DZ & LCD16X2 & RUNNING TEXT

Posting ini adalah tentang menggunakan Arduino (Uno R3) untuk memperoleh temperatur dengan menggunakan sensor LM35DZ. Maaf karena belum lama belajarnya hehe.

Proyek ini menggunkan sensor suhu LM35DZ untuk mendapatkan besaran voltage yang merupakan representasi dari suhu. Kemudian di setting pada suhu tertentu sehingga Led Merah akan menyala pada saat suhu lebih besar dari batas atas dan menyala bila lebih kecil dari batas bawah.

Proyek ini juga bisa disambungkan pada motor DC sehingga motor akan berputar dengan kecepatan tergantung suhu. Karena belum punya motor DC maka Saya ganti dengan Led warna kuning. Led warna kuning akan mati apabila suhu berada dibawah batas bawah dan akan menyala maksimal apabila sama atau lebih besar dari batas atas. Nah jika diantaranya maka Led akan menyala dari redup ke paling terang sesuai nilai suhu yang terdetek sensor.


Berikut sintax untuk mengontrol led:

if(temp>=upperLimit) {
        digitalWrite(ledWarning,HIGH);
        intensity=255;
    }else if(temp>=lowerLimit){
        digitalWrite(ledWarning, LOW);
        intensity=(temp-lowerLimit)*255/(upperLimit-lowerLimit);
    }else{
        digitalWrite(ledWarning, HIGH);
        intensity=0;
    }

analogWrite(ledFading,intensity);

ledFading ==> Led warna kuning
ledWarning ==> Led warna merah

Jangan lupa, untuk Led warna kuning harus menggunakan port PWM ya. Kalo Led Merah boleh di port Digital.

Yang bikin Saya agak bingung adalah gimana cara buat running text (text berjalan) yang jumlah karakternya panjang (maklum masih pemula). Setelah cari referensi sana sini, ada beberapa referensi yang mirip tapi gak sama persis yg Sy harapkan :'(... Inilah yang bikin capek... Ingat running text ini bisa sangat panjang. Karena di LCD16x2 kalo textnya panjang banget akan berantakan baris pertama dan keduanya :'(.. Akhirnya Sy buat sendiri fungsi untuk running text nya :) jadi penasaran sendiri akhirnya.


void runningText(int sizeColLcd, char message[], int row, int timerefresh){
  int textSize=strlen(message);
  char tempLcd[sizeColLcd];
  int tempPos =0;
  int iter;
 
  iter=textSize+sizeColLcd;
 
  for(int i=0; i<=iter; i++){
    if(i<sizeColLcd){
      memcpy(tempLcd, &message[0], i+1);
      lcd.setCursor(sizeColLcd-(i+1),row);
      lcd.print(tempLcd);
    }else {
      memcpy(tempLcd, &message[tempPos], sizeColLcd);
      lcd.setCursor(0,row);
      lcd.print(tempLcd);
      tempPos +=1;
    }
  
    delay(timerefresh);
    
  }
}


Gara-gara "memcpy -- library String.h" jadi puyeng. Yaaaa mau gak mau sih, karena memcpy adalah kunci fungsi yang Sy buat di atas. Dan fungsi runningText di atas adalah versi pertama yang Sy buat. Silahkan dimodif sendiri ya (biar sama-sama belajar) :). Alhamdulillah hasilnya memuaskan.

Sorry kalo bhs inggrisnya kacau.hehe. Karena niatnya sekalian belajar bahasa inggris jadi sintaxnya bahasa inggris... :)

Untuk skema rangkaian standar, silahkan disearch di google. Berikut contoh tampilannya....


Thanks for watching :).............
Gut nite.....
i am Indonesian :)

Tidak ada komentar:

Posting Komentar

Selamat berinovasi :D Salam berbagi..

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....