Pada kesempatan kali ini saya akan menjelaskan mengenai sebuah alat yang berbasis mikrokontroller untuk mengukur jarak secara online dengan interface 7Segment. alat ini sangat cocok sekali bagi yang ingin mencoba project berbasis IOT yang basic. alat ini menggunakan sebuah sensor jarak yaitu HC-SRF04. untuk lebih jelasnya berikut adalah program dan komponennya.
a. Wemos D1
b. Sensor Jarak HC-SRF04
d. Program Arduino IDE
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#define trigPin 4
#define echoPin 5
byte zero = B00000011;
byte one = B10011111;
byte two = B00100101;
byte three = B00001101;
byte four = B10011001;
byte five = B01001001;
byte six = B01000001;
byte seven = B00011111;
byte eight = B00000001;
byte nine = B00001001;
long duration, distance;
int latchPin = D4; //Pin connected to STR(pin 1) of HEF4094
int clockPin = D5; //Pin connected to CP(pin 3) of HEF4094
int dataPin = D6; //Pin connected to D(pin 2) of HEF4094
int oe = D7; //Pin connected to OE(pin 2) of HEF4094
int temp;
int x = 5;
int y;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "QEWQTREGfhgchfgdgfDGRRSFESKJHKJoiu";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Hotspotku";
char pass[] = "123456789";
SimpleTimer timer;
// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V5, distance);
temp = distance;
int ribuan = temp / 1000;
temp = temp % 1000;
int ratusan = temp / 100;
temp = temp % 100;
int puluhan = temp / 10;
int satuan = temp % 10;
switch(ribuan){
case 0:
ribuan = zero;
break;
case 1:
ribuan = one;
break;
case 2:
ribuan = two;
break;
case 3:
ribuan = three;
break;
case 4:
ribuan = four;
break;
case 5:
ribuan = five;
break;
case 6:
ribuan = six;
break;
case 7:
ribuan = seven;
break;
case 8:
ribuan = eight;
break;
case 9:
ribuan = nine;
break;
}
switch(ratusan){
case 0:
ratusan = zero;
break;
case 1:
ratusan = one;
break;
case 2:
ratusan = two;
break;
case 3:
ratusan = three;
break;
case 4:
ratusan = four;
break;
case 5:
ratusan = five;
break;
case 6:
ratusan = six;
break;
case 7:
ratusan = seven;
break;
case 8:
ratusan = eight;
break;
case 9:
ratusan = nine;
break;
}
switch(puluhan){
case 0:
puluhan = zero;
break;
case 1:
puluhan = one;
break;
case 2:
puluhan = two;
break;
case 3:
puluhan = three;
break;
case 4:
puluhan = four;
break;
case 5:
puluhan = five;
break;
case 6:
puluhan = six;
break;
case 7:
puluhan = seven;
break;
case 8:
puluhan = eight;
break;
case 9:
puluhan = nine;
break;
}
switch(satuan){
case 0:
satuan = zero;
break;
case 1:
satuan = one;
break;
case 2:
satuan = two;
break;
case 3:
satuan = three;
break;
case 4:
satuan = four;
break;
case 5:
satuan = five;
break;
case 6:
satuan = six;
break;
case 7:
satuan = seven;
break;
case 8:
satuan = eight;
break;
case 9:
satuan = nine;
break;
}
digitalWrite(latchPin, HIGH); //Pull latch HIGH to send data
shiftOut(dataPin, clockPin, LSBFIRST, satuan);
shiftOut(dataPin, clockPin, LSBFIRST, puluhan);
shiftOut(dataPin, clockPin, LSBFIRST, ratusan);
digitalWrite(latchPin, LOW); //Pull latch HIGH to send data
delay(1000);
}
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(oe, OUTPUT);
//digitalWrite(oe,LOW);
digitalWrite(oe,HIGH);
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run();
timer.run();
}
e. VIDEO HASILNYA
No comments:
Post a Comment