Wednesday, May 6, 2015

Adding Analog Sensor on My Arduino Nano LCD Project

 I add the code from previous project so it could read analog sensor from pin A0 and display it on second row LCD.

I use a potentiometer to emulate the sensor.

 So as result, this ATMEGA328 based device could:
- read digital sensor from pin 7, display it on second rowLCD
- if pin 7 is high, LED connected to pin 10 will turned on, otherwise it'll turned off
- communicate via bluetooth using dedicated serial port (RX= 8 , TX = 9)
- write any string sent from bluetooth to first row LCD
- read string length sent from bluetooth, display it on second row LCD.
- embedded LED connected to pin 13 is on if there's bluetooth serial communication





#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
.
SoftwareSerial mySerial(8, 9); // RX, TX
int t=1;
int i=1;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//rs e d4 d5 d6 d7
String tulisan = "Tadaa..., heheh...., hihihi :)";
String info =":)";
void setup() {
  pinMode(7,INPUT);
  pinMode(6,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(13,OUTPUT);
  lcd.begin(16, 2);
  lcd.print(tulisan);
  mySerial.begin(9600);
  Serial.begin(9600);//port serial resmi
  delay(1000);
}


void loop() {
  //lcd.clear();
  if (digitalRead(7)==1){
    digitalWrite(10,HIGH);
  }else{
    digitalWrite(10,LOW);
  }
  if (mySerial.available()){
    digitalWrite(13,HIGH);
    while(mySerial.available()>0){
      t=1;
      lcd.clear();
      tulisan=mySerial.readString();
      mySerial.println(tulisan);
    }
  }
  lcd.setCursor(1,0);
  lcd.print(tulisan);
  int l= tulisan.length()-12;
  info ="P7=";
  info+=digitalRead(7);
  info+=",l=";
  info+=tulisan.length();
  info+=",a=";
  info+=analogRead(A0);
  lcd.setCursor(t,1);
  lcd.print(info);
  digitalWrite(13,LOW);
  if (l>16){
    lcd.scrollDisplayLeft();
    t++;
    if (t>=l){
      t=1;  
      lcd.clear();
    }
  }
  delay(1000);
}
//PWM: 3, 5, 6, 9, 10, and 11

.


here my fritzing sketch (couldn't found the HC05 bluetooth module on partlist, :) )


Saya tambah dari proyek sebelumnya sehingga dapat membaca sensor analog dari pin A0 dan menampilkannya di LCD baris kedua.

Saya menggunakan potensiometer untuk mewakili sensornya.

Jadi, hasil akhir dari proyek ini adalah sebuah alat berbasis ATMega328 yang dapat:
- membaca sensor digital dari pin 7 dan menampilkannya di baris kedua LCD
- jika pin 7 high, LED yang terhubung ke pin 10 akan menyala, jika tidak LED tetap padam
- berkomunikasi via bluetooth menggunakan port serial tersendiri (RX=8, TX=9)
- menulis sebarang string yang dikirim dari bluetooth ke baris pertama LCD
- membaca panjang string yang dikirim lewat LCD dan menampilkannya di baris kedua LCD
- LED di board yang terhubung ke pin 13 menyala jika ada komunikasi serial via bluetooth