Translate

AUDIOMETRI (Alat Test / Cek Pendengaran) ARDUINO

 Membuat Alat Audiometri (Alat Test / Cek Pendengaran) Menggunakan Arduino


    ()       Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk melakukan test pendengaran seseorang, alat ini menggunakan arduino dan outputnya menggunakan headset. interface alat ini menggunakan LCD dan kendali menggunakan 4 buah pushbutton. untuk lebih jelasnya berikut adalah program dan daftar komponennya.


a. Arduino Uno




b. LCD I2C




c. Headset




d. Program Arduino IDE

#include <PWM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);

int bt1 = 7;
int bt2 = 6;
int bt3 = 5;
int bt4 = 4;

int bt1x = 0;
int bt2x = 0;
int bt3x = 0;
int bt4x = 0;
int cacah = 1;

//use pin 11 on the Mega instead, otherwise there is a frequency cap at 31 Hz
int pwmpin = 9;         // the pin that the LED is attached to
int duty = 125;         // duty cycle


void setup()
{
  lcd.begin();  
  lcd.clear(); 
  
  pinMode(bt1,INPUT_PULLUP);
  pinMode(bt2,INPUT_PULLUP);
  pinMode(bt3,INPUT_PULLUP);
  pinMode(bt4,INPUT_PULLUP);
  
  InitTimersSafe();
  Serial.begin(9600);
 
}

void loop()
{
  
  bt1x = digitalRead(bt1);
  bt2x = digitalRead(bt2);
  bt3x = digitalRead(bt3);
  bt4x = digitalRead(bt4);
  
  if(bt1x == 0){
  delay(200);  
  cacah++;
  }
  
  if(bt2x == 0){
  delay(200);  
  cacah--;
  }
  
  if(cacah < 1){
    cacah = 1;
  }
  
  if(cacah > 9){
    cacah = 9;
  }
  
  if((cacah == 1)&&(bt3x == 0)){
  mode1();
  }
  if((cacah == 2)&&(bt3x == 0)){
  mode2();
  }
  if((cacah == 3)&&(bt3x == 0)){
  mode3();
  }
  if((cacah == 4)&&(bt3x == 0)){
  mode4();
  }

  if((cacah == 5)&&(bt3x == 0)){
  mode5();
  }
  if((cacah == 6)&&(bt3x == 0)){
  mode6();
  }
  if((cacah == 7)&&(bt3x == 0)){
  mode7();
  }
  if((cacah == 8)&&(bt3x == 0)){
  mode8();
  }
  
  if(cacah == 1){
  lcd.setCursor(0,0);
  lcd.print(">20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  
  if(cacah == 2){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(">30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 3){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(">40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 4){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(">50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 5){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(">60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 6){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(">70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 7){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(">80 DB");
  lcd.setCursor(12,3);
  lcd.print(" 90 DB");  
  }
  
  if(cacah == 8){
  lcd.setCursor(0,0);
  lcd.print(" 20 DB");
  lcd.setCursor(0,1);
  lcd.print(" 30 DB");
  lcd.setCursor(0,2);
  lcd.print(" 40 DB");
  lcd.setCursor(0,3);
  lcd.print(" 50 DB");
  
  lcd.setCursor(12,0);
  lcd.print(" 60 DB");
  lcd.setCursor(12,1);
  lcd.print(" 70 DB");
  lcd.setCursor(12,2);
  lcd.print(" 80 DB");
  lcd.setCursor(12,3);
  lcd.print(">90 DB");  
  }
  
  pwmWrite(pwmpin, 0);  
  delay(20);
}

void mode1(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 100; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(0,0);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear(); 
return;
}

mode1();
}

void mode2(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 200; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(0,1);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode2();
}

void mode3(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 300; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(0,2);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode3();
}

void mode4(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 400; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(0,3);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode4();
}

void mode5(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 500; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(12,0);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode5();
}

void mode6(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 600; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(12,1);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode6();
}

void mode7(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 700; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(12,2);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode7();
}

void mode8(){
  
bt4x = digitalRead(bt4);

int32_t frequency = 800; //frequency (in Hz)
bool success = SetPinFrequencySafe(pwmpin, frequency);

lcd.setCursor(12,3);
lcd.print(" Running..");

pwmWrite(pwmpin, duty);

if(bt4x == 0){
lcd.clear();  
return;
}

mode8();
}



e. VIDEO HASILNYA









Monitor Jarak Secara ONLINE Thingspeak

 Monitor Jarak Secara ONLINE Thingspeak

           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitoring jarak secara online jarak jauh dengan menggunakan webserver Thingspeak. alat ini menggunakan 3 buah sensor HC-SRF04 dan wemos D1 sebagai mikrokontrollernya. untuk lebih jelasnya berikut adalah daftar komponen dan programnya.


a. Wemos D1

 

 

b. LCD I2C



c. Sensor Jarak HC-SRF04



d. Program Arduino IDE

#define  BLYNK_PRINT Serial  
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

#define trigPin1 D0
#define echoPin1 D3
#define trigPin2 D5
#define echoPin2 D6
#define trigPin3 D7
#define echoPin3 D8

long duration1, distance1;
long duration2, distance2;
long duration3, distance3;

String apiKey = "456FHJVCD9HGTSFGG";     //  Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";

const char *ssid =  "Hotspot WIFIKU";     // replace with your wifi ssid and wpa2 key
const char *pass =  "123456789";
const char* server = "api.thingspeak.com";

WiFiClient client;
 
void setup() {

  Serial.begin(115200);
  delay(10);

  Serial.println("Connecting to ");
  Serial.println(ssid);

// Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

      while (WiFi.status() != WL_CONNECTED)
     {
            delay(500);
            Serial.print(".");
     }
      Serial.println("");
      Serial.println("WiFi connected");
 
  lcd.begin();  
  lcd.clear();
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
  pinMode(trigPin3, OUTPUT);
  pinMode(echoPin3, INPUT);

  }

 void loop() {

  digitalWrite(trigPin1, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin1, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  distance1 = (duration1/2) / 29.1;

  digitalWrite(trigPin2, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin2, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = (duration2/2) / 29.1;

  digitalWrite(trigPin3, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin3, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin3, LOW);
  duration3 = pulseIn(echoPin3, HIGH);
  distance3 = (duration3/2) / 29.1;

  lcd.setCursor(0,0);
  lcd.print("S1:");
  lcd.print(distance1);
  lcd.print(" S2:");
  lcd.print(distance2);
  lcd.print("   ");
  lcd.setCursor(0,1);
  lcd.print("S3:");
  lcd.print(distance3);
  lcd.print("   ");
 
if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
  {
                           
    String postStr = apiKey;
           postStr +="&field4=";
           postStr += String(distance1);
           postStr += "\r\n\r\n";

           client.print(String("GET ") + resource + apiKey + "&field4=" + distance1 + "&field5=" + distance2 + "&field6=" + distance3 +" HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");
                                       
           client.print("Host: api.thingspeak.com\n");
           client.print("Connection: close\n");
           client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
           client.print("Content-Type: application/x-www-form-urlencoded\n");
           client.print("Content-Length: ");
           client.print(postStr.length());
           client.print("\n\n");
           client.print(postStr);
                           
           Serial.println(". Send to Thingspeak.");
    }
                       
          client.stop();

          Serial.println("Waiting...");
 
  delay(10000);
}
 


e. VIDEO HASILNYA



 

Alat Monitoring Sudut Kemiringan Dataran (Tilt Level) ONLINE BLYNK

Alat Monitoring Sudut Kemiringan Dataran (Tilt Level) ONLINE BLYNK 


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk monitoring sudut kemiringan dataran secara online dengan menggunakan blynk sebagai aplikasi untuk pemantauannya. untuk lebih jelasnya berikut adalah daftar komponen dan kodingnya.


a. Nodemcu ESP8266




b. Sensor Potensio Slider




c. Sensor Tilt




d. Sensor Accelero MPU-6050





e. Program Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BLYNK_PRINT Serial    
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

char auth[] = "hgu6576576gjhvjhgk9898gfalikgh8977hbh";
char ssid[] = "MyHotspot";
char pass[] = "123456789";

const int MPU_addr=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

SimpleTimer timer;

int out;
int miring = 16 ;
int bacaSensor;
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
int nilai;
int buzzer = D3;
float sudut;

void sendSensor()
{
 Blynk.virtualWrite(V4, sudut);  
 Blynk.virtualWrite(V6, bacaSensor); 
 Blynk.virtualWrite(V5, out); 
 delay(1000);
}

void setup(){

Serial.begin(9600);
lcd.begin();
lcd.clear();
pinMode(miring, INPUT);
pinMode(buzzer, OUTPUT);
Blynk.begin(auth, ssid, pass);
timer.setInterval(100L, sendSensor);

Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B);  // PWR_MGMT_1 register
Wire.write(0);     // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);

digitalWrite(buzzer, LOW);
}

void loop(){

  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)   
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  Serial.print(AcX); Serial.println('a');
  Serial.print(AcY); Serial.println('b');

sudut = (AcX + 15013)/163.6;

  lcd.setCursor(0,2);
  lcd.print("Sudut : ");
  lcd.print(sudut);
  lcd.print("    ");
     
nilai = analogRead(analogInPin);
out = map(nilai,0,1024,0,100);
  
  lcd.setCursor(0,0);
  lcd.print("slider : ");
  lcd.print(out);
  lcd.print("    ");

bacaSensor = digitalRead(miring);// read TILT sensor
  if(bacaSensor == 1){
    lcd.setCursor(0,1);
    lcd.print("Tilt: ");
    lcd.print(bacaSensor);
    lcd.print(" Miring  ");
    digitalWrite(buzzer, HIGH);
  }
  
  if(bacaSensor == 0){
    lcd.setCursor(0,1);
    lcd.print("Tilt: ");
    lcd.print(bacaSensor);
    lcd.print(" Normal  "); 
    digitalWrite(buzzer, LOW); 
  }
 
 Blynk.run();
 timer.run();
 
 delay(100);
}




f. VIDEO HASILNYA






Mengakses Slide Potensio Interface 7segment

 Mengakses Slide Potesio Interface 7segment


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagamana cara mengakses slide potensio dengan menggunakan arduino dengan interface 7segment, jadi ada nilai yg tertera di 7segment yang akan berubah sesuai kondisi dari posisi slide potensionya. jika  posisi dibawah maka nilai rendah lalu jika posisi diatas maka nilai tinggi. untuk lebih jelasnya berikut adalah koding dan daftar komponenya. 
       


a. Arduino Uno 


b. Slide Potensio


c. Interface 7Segment





d. Program Arduino IDE

#include <Wire.h>

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;

int latchPin = 4;  //Pin connected to STR(pin 1) of HEF4094
int clockPin = 3; //Pin connected to CLK(pin 3) of HEF4094
int dataPin = 2;  //Pin connected to D(pin 2) of HEF4094
int oe = 5;  //Pin connected to OE(pin 2) of HEF4094

int temp;
int x = 5;
int y;
int sensorValue;

void setup(){
 Serial.begin(9600);
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
 pinMode(oe, OUTPUT);
 digitalWrite(oe,HIGH);
}

void loop(){
           
  sensorValue = analogRead(A0);
  //merubah adc ke volt
  float volt = sensorValue * (5.0/1023.0);
  int voltx = volt * 100;
  
  temp = voltx;
  int ribuan = temp / 1000;
  temp = temp % 1000;
  int ratusan = temp / 100;
  temp = temp % 100;
  int puluhan = temp / 10;
  int satuan = temp % 10;

 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);
  
 }

   


e.  VIDEO HASILNYA





Monitor Gas / Asap MQ-2 Interface 7Segment ARDUINO

 Monitor Gas / Asap MQ-2 Interface 7Segment ARDUINO

           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor asap atau gas yang dimonitor menggunakan interface 7Segment. alat ini menggunakan arduino sebagai kontrollernya. alat ini menggunakan sensor MQ-2 dengan output berupa tegangan. untuk penjelasan lebih lanjut berikut adalah komponen dan programnya.  



a. Arduino Uno



b. Driver 7Segment



c. Sensor Gas MQ-2





d. Program Arduino IDE

#include <Wire.h>

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;

byte zerox  = B00000010;
byte onex   = B10011110;
byte twox   = B00100100;
byte threex = B00001100;
byte fourx  = B10011000;
byte fivex  = B01001000;
byte sixx   = B01000000;
byte sevenx = B00011110;
byte eightx = B00000000;
byte ninex  = B00001000;

int latchPin = 4;  //Pin connected to STR(pin 1) of HEF4094
int clockPin = 3; //Pin connected to CLK(pin 3) of HEF4094
int dataPin = 2;  //Pin connected to D(pin 2) of HEF4094
int oe = 5;  //Pin connected to OE(pin 2) of HEF4094

int temp;
int x = 5;
int y;

int sensorValue;

void setup(){
 Serial.begin(9600);
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
 pinMode(oe, OUTPUT);
 digitalWrite(oe,HIGH);
}

void loop(){
           
  sensorValue = analogRead(A0);
  float volt = sensorValue * (5.0/1023.0);
  int voltx = volt * 100;
  
  temp = voltx;
  int ribuan = temp / 1000;
  temp = temp % 1000;
  int ratusan = temp / 100;
  temp = temp % 100;
  int puluhan = temp / 10;
  int satuan = temp % 10;

 switch(ratusan){
   case 0:
   ratusan = zerox;
   break;
   case 1:
   ratusan = onex;
   break;
   case 2:
   ratusan = twox;
   break;
   case 3:
   ratusan = threex;
   break;
   case 4:
   ratusan = fourx;
   break;
   case 5:
   ratusan = fivex;
   break;
   case 6:
   ratusan = sixx;
   break;
   case 7:
   ratusan = sevenx;
   break;
   case 8:
   ratusan = eightx;
   break;
   case 9:
   ratusan = ninex;
   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);
  
 }
   


e. VIDEO HASILNYA





Monitor Suhu Non-Contact Penampil 7Segment MLX90614 ARDUINO

 Monitor Suhu Non-Contact Penampil 7Segment MLX90614 ARDUINO


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mengukur suhu suatu benda ataupun suhu manusia. alat ini dilengkapi dengan penampil 7segment sehingga lebih mudah dalam membaca nilainya. sensor yang digunakan adalah mlx90614. untuk lebih jelasnya berikut adalah komponen dan programnya.



a. Arduino Uno




b. Sensor MLX90614




c. Rangkaian Driver 7Segment






d. Program Arduino IDE

#include <Wire.h>
#include <Adafruit_MLX90614.h>

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;

//menampilkan titik
byte zerox  = B00000010;
byte onex   = B10011110;
byte twox   = B00100100;
byte threex = B00001100;
byte fourx  = B10011000;
byte fivex  = B01001000;
byte sixx   = B01000000;
byte sevenx = B00011110;
byte eightx = B00000000;
byte ninex  = B00001000;

int latchPin = 4;  //Pin connected to STR(pin 1) of HEF4094
int clockPin = 3; //Pin connected to CLK(pin 3) of HEF4094
int dataPin = 2;  //Pin connected to D(pin 2) of HEF4094
int oe = 5;  //Pin connected to OE(pin 2) of HEF4094

int temp;
int x = 5;
int y;

int sensorValue;

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

float TargetC;

void setup(){
 mlx.begin();
 Serial.begin(9600);
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
 pinMode(oe, OUTPUT);
 digitalWrite(oe,HIGH);
}

void loop(){
           
  TargetC = mlx.readObjectTempC();
  sensorValue = TargetC * 10;
  
  Serial.print(TargetC);

 temp = sensorValue;
  int ribuan = temp / 1000;
  temp = temp % 1000;
  int ratusan = temp / 100;
  temp = temp % 100;
  int puluhan = temp / 10;
  int satuan = temp % 10;

 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 = zerox;
   break;
   case 1:
   puluhan = onex;
   break;
   case 2:
   puluhan = twox;
   break;
   case 3:
   puluhan = threex;
   break;
   case 4:
   puluhan = fourx;
   break;
   case 5:
   puluhan = fivex;
   break;
   case 6:
   puluhan = sixx;
   break;
   case 7:
   puluhan = sevenx;
   break;
   case 8:
   puluhan = eightx;
   break;
   case 9:
   puluhan = ninex;
   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);
  
 }
   



e. VIDEO HASILNYA





Tutorial Membuat Skematik dan Board PCB Menggunakan Software EAGLE

 Tutorial Membuat Skematik dan Board PCB Menggunakan Software EAGLE

           Pada kesempatan kali ini saya akan memberikan tutorial didalam menggunakan software Eagle untuk membuat minimum system, driver 7segment dan rangkaian non inverting amplifier. Disini sengaja menggunakan tiga topik tersebut dikarenakan ada beberapa langkah yang harus diperhatikan didalam menggunakan tools. untuk lebih jelasnya berikut adalah video tutorialnya.

 

a. VIDEO TUTORIAL MEMBUAT MINSIS


 

b. VIDEO TUTORIAL MEMBUAT DRIVER 7 SEGMENT


 

C. VIDEO TUTORIAL MEMBUAT RANGKAIAN NON INVERTING AMPLIFIER