Anda di halaman 1dari 18

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
Arduino LM35
*/

#include <LiquidCrystal.h>
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

/*
*
*
*

Keterangan
Sambungkan
Sambungkan
Sambungkan

skema:
LCD RS pin ke pin 12 Arduino
LCD enable pin ke pin 11 Arduino
LCD pins D4 s.d D7 ke pin 5 s.d 2 Arduino

* Sambungkan LCD +5 dan ground ke pin +5V dan ground Arduino


* Sambungkan LCD Vo pin ke potensiometer. Guna potensiometer ini adalah untuk
mengatur kontras LCD
* Sambungkan IC LM35 bagian output (Kaki tengah) ke pin A0 (Analog input pin
0) Arduino
* Pin 13 arduino sebagai output, jika temp >=30 derajat Pin 13 logik 1
*/
// Program demo LCD
// Gunakan library LCD
#include "LiquidCrystal.h";
// Inisialisasi LCD dan menentukan pin yang dipakai
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// deklarasi variabel
float tempC;
int tempPin = 0;
void setup() {
pinMode(13,OUTPUT);
// Serial.begin(9600);
// Set jumlah kolom dan baris LCD
lcd.begin(16, 2);
// Tulis Temperatur di LCD
lcd.print("Temperatur:");
}
void loop() {
// Set cursor ke kolom 0 dan baris 1
// Catatan: Baris dan kolom diawali dengan 0
lcd.setCursor(0, 1);
// baca data dari sensor
tempC = analogRead(tempPin);
// konversi analog ke suhu
tempC = (5.0 * tempC * 100.0)/1024.0;
// tampilkan ke LCD
lcd.print(tempC);
// Serial.println(tempC);
if(tempC>=30) //jika temperatur >=30 derajat
digitalWrite(13,HIGH);
else digitalWrite(13,LOW);
delay(2000); // berhenti 2 detik untuk menunggu perubahan temperatur
}

3. Lm 35 dengan potensiometer

/*
lm35 sketch
prints the temperature to LCD
*/
#include <LiquidCrystal.h>
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 display
int 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 Arduino
1 x 74HC595 Shift register
1 x 4 Digit 7 Segment display
4 x 220ohm Resistors
1 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 work
or not blow up your property.

Requires the "TimerOne" libary


*/
#include "SevSegShift.h"
#include <TimerOne.h>
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<numReadings;i++)
readings[i] = 0;
// Init serial
//Serial.begin(9600);
}
void DisplayInterrupt()
{
sevsegshift.UpdateDisplay();
counter++;
if(counter > 65000)
{
sevsegshift.SetData(temperature);
counter = 0;
}
}
// Returns temp in degrees C as a float
float 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 <Ultrasonic.h>
#define TRIGGER_PIN 12
#define ECHO_PIN
13
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
void setup()
{
Serial.begin(9600);
}
void loop()
{
float cmMsec, inMsec;
long microsec = 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
int TrigPin = 12;
int EchoPin = 13;
unsigned long ultrasoundDuration;
int timeout;
unsigned long tStartPing = 0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(TrigPin, OUTPUT); //pin is output
pinMode(EchoPin, INPUT); // pin is now input
}
void loop() {
sensorValue = read_sdm_io_range();
Serial.print(sensorValue);
Serial.println(" cm");
delay(100);
}
//SDM-IO Ultrasonic Range Sensor distance function
float read_sdm_io_range()
{
unsigned char pin = 0;
unsigned int time_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)
return 999;
else
return ultrasoundDuration * 0.017; // result in cm
}

7. HCSR04 dan LCD

#define trigPin 3
#define echoPin 2
int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;

int led5 = 9;
int led6 = 8;
int led7 = 7;
int led8 = 6;
int led9 = 5;
int led10 = 4;
int maxDistance = 250;
int minDistance = 2;
long microSecond, cmDistance;
int ledTime = 400;
void setup() {
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);
}
void loop() {
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);
}
else if (cmDistance == 5)
{
Serial.println(5 cm);
digitalWrite(led1, HIGH);
delay(ledTime);
digitalWrite(led1, LOW);
}
else if (cmDistance == 10)

{
Serial.println(10 cm);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(ledTime);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (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);
}
else if (cmDistance <= minDistance)
{
Serial.println(.< 2cm);
}
else {
Serial.print(cmDistance);
Serial.println( cm);
}
delay(100);
}

Anda mungkin juga menyukai