lm 35 dan lcd

19
1. Lm 35 dan lcd Berdasarkan gambar wiring diagram tersebut. LCD RS pin dihubungkan ke digital pin 12 LCD Enable pin dihubungkan ke digital pin 11 LCD D4 pin dihubungkan ke digital pin 5 LCD D5 pin dihubungkan ke digital pin 4 LCD D6 pin dihubungkan ke digital pin 3 LCD D7 pin dihubungkan ke digital pin 2 Vout LM35 dihubungkan ke analog pin A0 /* Program aplikasi pengukur suhu

Upload: eka-rahmawati

Post on 08-Nov-2015

46 views

Category:

Documents


2 download

DESCRIPTION

Tutorial

TRANSCRIPT

1. Lm 35 dan lcd

Berdasarkan gambar wiring diagram tersebut.

LCD RS pin dihubungkan ke digital pin 12 LCD Enable pin dihubungkan ke digital pin 11 LCD D4 pin dihubungkan ke digital pin 5 LCD D5 pin dihubungkan ke digital pin 4 LCD D6 pin dihubungkan ke digital pin 3 LCD D7 pin dihubungkan ke digital pin 2 Vout LM35 dihubungkan ke analog pin A0

/*Program aplikasi pengukur suhuArduino LM35*/

#include

LiquidCrystal lang(12, 11, 5, 4, 3, 2);

int lm35 = A0;int val = 0;float temp;

void setup(){ pinMode(A0, INPUT); lang.begin(16, 2); lang.setCursor(0,0); lang.print("Arduino"); lang.setCursor(0,1); lang.print("Pengukur Suhu"); delay(1000);}

void loop(){ lang.clear(); val = analogRead(lm35); // nilai ADC terbaca delay(100); lang.setCursor(0,0); lang.print("Suhu celsius:"); lang.setCursor(0,1); temp = val * 5; temp *= 100; temp /= 1023; lang.print(temp);}

2. Lm 35 dengan kipas dan relay

/*Keteranganskema:*SambungkanLCDRSpinkepin12Arduino*SambungkanLCDenablepinkepin11Arduino*SambungkanLCDpinsD4s.dD7kepin5s.d2Arduino*SambungkanLCD+5dangroundkepin+5VdangroundArduino*SambungkanLCDVopinkepotensiometer.GunapotensiometeriniadalahuntukmengaturkontrasLCD*SambungkanICLM35bagianoutput(Kakitengah)kepinA0(Analoginputpin0)Arduino*Pin13arduinosebagaioutput,jikatemp>=30derajatPin13logik1*/

//ProgramdemoLCD

//GunakanlibraryLCD#include"LiquidCrystal.h";

//InisialisasiLCDdanmenentukanpinyangdipakaiLiquidCrystal lcd(12, 11, 5, 4, 3, 2);//deklarasivariabelfloat tempC;int tempPin = 0;

void setup() {pinMode(13,OUTPUT);// Serial.begin(9600);// Set jumlah kolom dan baris LCDlcd.begin(16, 2);// Tulis Temperatur di LCDlcd.print("Temperatur:");}

void loop() {// Set cursor ke kolom 0 dan baris 1// Catatan: Baris dan kolom diawali dengan 0lcd.setCursor(0, 1); // baca data dari sensortempC=analogRead(tempPin);// konversi analog ke suhutempC=(5.0*tempC*100.0)/1024.0;// tampilkan ke LCDlcd.print(tempC);// Serial.println(tempC);if(tempC>=30) //jika temperatur >=30 derajatdigitalWrite(13,HIGH);else digitalWrite(13,LOW);delay(2000); // berhenti 2 detik untuk menunggu perubahan temperatur}

3. Lm 35 dengan potensiometer

/*lm35 sketchprints the temperature to LCD*/#include

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);const int inPin = 0;

void setup() { lcd.begin(16, 2); }void loop() { int value = analogRead(inPin); lcd.setCursor(0, 1); float millivolts = (value / 1024.0) * 5000; float celsius = millivolts / 10; lcd.clear(); lcd.setCursor(0,0); lcd.print(celsius); lcd.print(" Celsius"); lcd.setCursor(0,1); lcd.print((celsius * 9)/ 5 + 32); lcd.print(" Fahrenheit"); delay(10000); }

4. Arduino dengan seven segmen

// Arduvino_tempCF_dualled// Arduvino.com - Arduino in the world of wine //// Setting up variables and including LEDDisplay.h// The library is available at: https://github.com/rastating/LEDDisplay// Integer used for Celsius because of max two digits in Dual Led// Have in mind that you need to specify the right PIN you are using

#include

LEDDisplay *led;

int tempC;int tempPin = 0;

// Array will be needed for feeding two digits into the displayint array[2];

// Setting up pins for the display

void setup(){ int digitFlagPins[] = {10, 11}; int segmentPins[] = {2, 3, 4, 5 ,6 ,7 ,8, 9}; int decimalPointPin = 9; led = new LEDDisplay(2, digitFlagPins, segmentPins, decimalPointPin);}

// Reading analog date from the sensor// Math operations for Volts>Celsius

void loop(){ tempC = analogRead(tempPin); tempC = tempC * 0.48828125;

// Transforming the temperature value from integer into digits inside the array

for (int i = 2; i >= 0; i--) { array[i] = tempC % 10; tempC /= 10;}

// Display both digits corresponding to the measured temperature

led->displayNumber(array[1], 1); led->displayNumber(array[2], 0);

}

5. Lm 35 dengan shift register

1 x Arduino1 x 74HC595 Shift register1 x 4 Digit 7 Segment display4 x 220ohm Resistors1 x TMP36 Temperature sensor

Contoh code program 1 :

#include "SevSegShift.h"SevSegShift sevsegshift;byte tmp[16] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 230, 238, 62, 156, 122, 158, 142};

void setup() { sevsegshift.Begin(0,5, 4, 3, 2, 8, 9, 10); Serial.begin(9600);} void loop() { //sevsegshift.SetDisplayData(tmp[1], tmp[2], tmp[3], tmp[4]); sevsegshift.SetData(random(9999)); for(int i =60; i >= 0; i=i-5) { sevsegshift.UpdateDisplay(); delay(i); } }

Contoh code program 2 :

/*Written by Jon Maguire 2014

Soure is in the public domain and has no promise that iw ill workor not blow up your property.

Requires the "TimerOne" libary*/

#include "SevSegShift.h"#include

SevSegShift sevsegshift;byte tmp[16] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 230, 238, 62, 156, 122, 158, 142};byte tempPin = 0;float scaler = 0.004882814;volatile float temperature;volatile word counter = 0;

const byte numReadings = 100;word readings[numReadings];byte index = 0;word total = 0;word average = 0;

void setup(){ // init display sevsegshift.Begin(0,5, 4, 3, 2, 8, 9, 10); // Init timer Timer1.initialize(15000); Timer1.attachInterrupt(DisplayInterrupt); // Init array for smoothing for(byte i = 0; i 65000) { sevsegshift.SetData(temperature); counter = 0; }}

// Returns temp in degrees C as a floatfloat readTemp(){ return (analogRead(tempPin) * 0.004882814) * 100;}

word GetV(){ return analogRead(tempPin);}

void loop(){ total = total - readings[index]; readings[index] = GetV(); total = total + readings[index]; index++; if(index >= numReadings) index = 0;

average = total/numReadings; temperature = average * 0.4882814; //Serial.println(readings[index]); int h = int(temperature); int l = (temperature-(int)temperature)*100; sevsegshift.SetDataF(h,l);

delay(10);}

6. Sensor HCSR04/ultrasonic

#include

#define TRIGGER_PIN 12#define ECHO_PIN 13

Ultrasonic ultrasonic(TRIGGER_PIN,ECHO_PIN);

voidsetup(){ Serial.begin(9600);}

voidloop(){floatcmMsec,inMsec;longmicrosec=ultrasonic.timing();

cmMsec=ultrasonic.convert(microsec,Ultrasonic::CM); inMsec=ultrasonic.convert(microsec,Ultrasonic::IN); Serial.print("MS: "); Serial.print(microsec); Serial.print(", CM: "); Serial.print(cmMsec); Serial.print(", IN: "); Serial.println(inMsec); delay(1000);}

Kalau tidak ada pesan error maka modul ultrasonic akan langsung bekerja mengukur jarak benda di depannya. Gunakan Serial Monitor (Ctrl+Shift+M) pada software Arduino untuk melihat hasil pengukuran.

#define SDM_IO_TIMEOUT 1000

intTrigPin=12;intEchoPin=13;unsignedlongultrasoundDuration;inttimeout;unsignedlongtStartPing=0;intsensorValue=0;

voidsetup(){ Serial.begin(9600); pinMode(TrigPin,OUTPUT);//pin is output pinMode(EchoPin,INPUT);// pin is now input}

voidloop(){ sensorValue=read_sdm_io_range(); Serial.print(sensorValue); Serial.println(" cm"); delay(100);

}

//SDM-IO Ultrasonic Range Sensor distance functionfloatread_sdm_io_range(){unsignedcharpin=0;unsignedinttime_flag=0;

digitalWrite(TrigPin,HIGH); delayMicroseconds(2); digitalWrite(TrigPin,LOW); delayMicroseconds(10); digitalWrite(TrigPin,HIGH);

tStartPing=micros(); timeout=0; pin=digitalRead(EchoPin);while(pin){ pin=digitalRead(EchoPin); time_flag++; if(time_flag>SDM_IO_TIMEOUT) { timeout=1; break; }} ultrasoundDuration=micros()-tStartPing; Serial.print(ultrasoundDuration); Serial.print(" us, "); Serial.print(ultrasoundDuration*0.017,DEC);// result in cm Serial.print(" cm"); Serial.println();if(timeout) return999;else returnultrasoundDuration*0.017;// result in cm}

7. HCSR04 dan LCD

#definetrigPin3#defineechoPin2intled1 = 13;intled2 = 12;intled3 = 11;intled4 = 10;intled5 = 9;intled6 = 8;intled7 = 7;intled8 = 6;intled9 = 5;intled10 = 4;intmaxDistance = 250;intminDistance = 2;longmicroSecond, cmDistance;intledTime = 400;voidsetup() {Serial.begin(9600);pinMode(trigPin,OUTPUT);pinMode(echoPin,INPUT);pinMode(led1,OUTPUT);pinMode(led2,OUTPUT);pinMode(led3,OUTPUT);pinMode(led4,OUTPUT);pinMode(led5,OUTPUT);pinMode(led6,OUTPUT);pinMode(led7,OUTPUT);pinMode(led8,OUTPUT);pinMode(led9,OUTPUT);pinMode(led10,OUTPUT);}voidloop() {digitalWrite(trigPin,LOW);delayMicroseconds(2);digitalWrite(trigPin,HIGH);delayMicroseconds(10);digitalWrite(trigPin,LOW);microSecond=pulseIn(echoPin,HIGH);cmDistance=microSecond/58.3;if(cmDistance >= maxDistance){Serial.println(.>250cm);}elseif(cmDistance == 5){Serial.println(5 cm);digitalWrite(led1,HIGH);delay(ledTime);digitalWrite(led1,LOW);}elseif(cmDistance == 10){Serial.println(10 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);}elseif(cmDistance == 15){Serial.println(15 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);}elseif(cmDistance == 20){Serial.println(20 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);}elseif(cmDistance == 25){Serial.println(25 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);}elseif(cmDistance == 30){Serial.println(30 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);}elseif(cmDistance == 35){Serial.println(35 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);digitalWrite(led7,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);digitalWrite(led7,LOW);}elseif(cmDistance == 40){Serial.println(40 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);digitalWrite(led7,HIGH);digitalWrite(led8,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);digitalWrite(led7,LOW);digitalWrite(led8,LOW);}elseif(cmDistance == 45){Serial.println(45 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);digitalWrite(led7,HIGH);digitalWrite(led8,HIGH);digitalWrite(led9,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);digitalWrite(led7,LOW);digitalWrite(led8,LOW);digitalWrite(led9,LOW);}elseif(cmDistance == 50){Serial.println(50 cm);digitalWrite(led1,HIGH);digitalWrite(led2,HIGH);digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);digitalWrite(led5,HIGH);digitalWrite(led6,HIGH);digitalWrite(led7,HIGH);digitalWrite(led8,HIGH);digitalWrite(led9,HIGH);digitalWrite(led10,HIGH);delay(ledTime);digitalWrite(led1,LOW);digitalWrite(led2,LOW);digitalWrite(led3,LOW);digitalWrite(led4,LOW);digitalWrite(led5,LOW);digitalWrite(led6,LOW);digitalWrite(led7,LOW);digitalWrite(led8,LOW);digitalWrite(led9,LOW);digitalWrite(led10,LOW);}elseif(cmDistance