Lm 35 dan lcd
-
Upload
eka-rahmawati -
Category
Documents
-
view
42 -
download
2
description
Transcript of Lm 35 dan lcd
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