Translate

Membuat Alat Monitor Dua Suhu MLX90614 / gy-906 dan Sensor Getar Via WIFI Ethernet WEBSERVER ARDUINO (PARSING DATA SERIAL) Multiple I2C Sensor Arduino

Membuat Alat  Monitor Dua Suhu MLX90614 / gy-906 dan Sensor Getar Via WIFI Ethernet WEBSERVER ARDUINO (PARSING DATA SERIAL) Multiple I2C Sensor Arduino


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk memonitor suhu benda atau object yang berjumlah 2 buah, jadi alat ini menggunakan dua buah sensor MLX90614 dan dua buah arduino, komunikasi kedua arduino menggunakan serial UART RX dan TX. alat ini dimonitor menggunakan web browser. untuk lebih jelasnya berikut adalah komponen dan programnya.  




a. Arduino Uno




b. Sensor Suhu MLX90614 / GY-906




c. Sensor Getar




d. Router 






e. Program Arduino Master

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

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

int data1;
int data2;

void setup() {
  Serial.begin(9600);
  mlx.begin(); 
}

void loop() {
sensing1();
delay(200);
sensing2();
delay(200);
Serial.print(data1);
Serial.print('\n');
Serial.print(data2);
Serial.print('\n');
}

void sensing1(){
  data1 = mlx.readObjectTempC();
}


void sensing2(){
  data2 = mlx.readObjectTempC();
}






f. Program Arduino Slave

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

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,99);

EthernetServer server(80);

String readString;
int value1=0;           
int value2=0;
double gear1=0;
double gear2=0;
int mlx1;
int mlx2;
int adcgetar;

void setup() {
mlx.begin();
  Serial.begin(9600);
   while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  //Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  ambil1();
  ambil2();
 
  adcgetar = analogRead(0);


  if(Serial.available()>0)
    {
        value1 = Serial.parseInt();           
        value2 = Serial.parseInt();
        gear1=value1;
        gear2=value2;
       
        if(Serial.read()=='\n')
        {
            Serial.print("Bearing 3=");
            Serial.print(gear1);
            Serial.print("  ");
           
            Serial.print("Bearing 4=");
            Serial.print(gear2);
            Serial.print("\n");
           
            kirim();
           
        }
       
    }

}

 
void kirim(){

  EthernetClient client = server.available();
  if (client) {
    //Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Suhu </title> ");    
          client.println("<body bgcolor = #000000>");    
          client.println("<center>");
            client.println("<font color = yellow><center><h1>MONITOR SUHU BEARING</h1></center><br></font>");
            client.println("<font color = #FFFFFF>");
            client.println("<h2>");
            client.println("Suhu Bearing 1 = ");
            client.print(mlx1);
            client.println("<br />");
            client.println("Suhu Bearing 2 = ");
            client.print(mlx2);
            client.println("<br />");
            client.println("Suhu Bearing 3 = ");
            client.print(gear1);
            client.println("<br />");
            client.println("Suhu Bearing 4 = ");
            client.print(gear2);
            client.println("<br />");
            client.println("ADC Getar = ");
            client.print(adcgetar);
            client.println("<br />");
            client.println("</h2>");     
          client.println("</font>");
          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
           
          break;      
        }   
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    //Serial.println("client disonnected");
  }

   readString="";
        
}



void ambil1(){
mlx1 = mlx.readObjectTempC();
}

void ambil2(){
mlx2 = mlx.readObjectTempC();
}






g. VIDEO HASILNYA










Membuat Alat Monitor Kecepatan Angin (WIND SPEED) Anemometer ARDUINO

Membuat Alat Monitor Kecepatan Angin (WIND SPEED) Anemometer ARDUINO


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk mengukur kecepatan angin dengan satuan m/s, yang perlu diperhatikan alat ini perlu dikalibrasi terlebih dahulu sebelum digunakan. alat ini menggunakan LCD 16x2 sebagai interfacenya. untuk lebih jelasnya berikut adalah komponen dan programnya.




a. Arduino Uno




b. Sensor Kecepatan Udara




c. LCD 16x2 + I2C






d. Program Arduino IDE

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library

//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x3F, 16, 2);

volatile byte half_revolutions; //variabel tipe data byte
unsigned int rpmku; //variabel tipe data integer
unsigned long timeold; //variabel tipe data long

int kalibrasi; //variabel tipe data integer


void setup() {

   attachInterrupt(0, rpm_fun, RISING); //mengambil sinyal high pada pin 2
   half_revolutions = 0; //memberikan nilai 0 pada viariabel
   rpmku = 0;
   timeold = 0;
   kalibrasi = 0;

  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();

}

void loop() {

  rpmku = 30*1000/(millis() - timeold)*half_revolutions; //mengaktifkan counter millis
  timeold = millis(); //hasil counter dimasukkan ke variabel timeold
  half_revolutions = 0; //reset variabel

  kalibrasi = (rpmku - 150)/109;  //rumus kalibrasi
 
  if((kalibrasi > 590)&&(kalibrasi < 605)){
    kalibrasi = 0;
  }
  
  lcd.setCursor(0, 0);
  lcd.print("Kec= ");
  lcd.print(kalibrasi);
  lcd.print(" m/s   ");

delay(200);

}


void rpm_fun(){
   half_revolutions++; //counter interupt
}






e. VIDEO HASILNYA










Membuat Alat Deteksi Heart Beat (BPM) dan SPO2 (Oximetry) ARDUINO

Membuat Alat Deteksi Heart Beat (BPM) dan SPO2 (Oximetry) ARDUINO


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk memonitor BPM / heart beat dan SPO2 / oximetry secara bersamaan dengan menggunakan Arduino. alat ini tentunya harus dilakukan kalibrasi terlebih dahulu agar didapat hasil yang maksimal. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno




b. Sensor / Probe




c. LCD 16x2




d. Skema Amplifier (Link DOWNLOAD)




e. Program Arduino Uno (BPM + SPO2)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
#include <TimerOne.h>
#define LED 9


//========================BPM=================================
float ref,hold,periode,frekuensi = 0;
int logika_detak, detak,bpm, BPM, waktu, logika_safety, waktu_safety= 0;
//========================TIMER===========================

int milidetik;
float TF;
unsigned char spo2 = 0;
//unsigned int ACredlamp,ACinfrared,DCredlamp,DCinfrared;
unsigned int maksimumACredlamp = 0, maksimumACinfrared = 0;;
int counteran;
int logika, holdACinfrared;
float ratio = 0;
float bagi1, bagi2;
int nodetak = 0;
unsigned char cekdetak = 0;
int tampilkan;

  float ACredlamp;
  float DCredlamp;
  float DCinfrared;
  float ACinfraredbpm;
  float ACinfrared;


void interruptSetup()  //inisialisasi buat timer
{
 TCCR2A = 0x02;    
 TCCR2B = 0x06;   
 OCR2A = 0X3e;     
 TIMSK2 = 0x02;   
 sei();  
}

ISR(TIMER2_COMPA_vect)  //interupsi timer tiap 1 ms
{
  milidetik++;  //milidetik bertambah 1 (untuk hitungan realtime)
  counteran++;
  tampilkan++;
 }



void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
 interruptSetup();  //inisialisasi timer interupt
 pinMode ( LED, OUTPUT );
  lcd.begin(16,2);
  lcd.init();                                       
  lcd.backlight();
}

void loop() {
  ACredlamp = analogRead(A0); //pembacaan sinyal ACRed
  DCredlamp = analogRead(A2); //pembacaan sinyal DCRed
  DCinfrared = analogRead(A3); //pembacaan sinyal DCIR
  ACinfraredbpm = analogRead(A1); //pembacaan sinyal ACIR
  Serial.println(ACinfraredbpm);
  ACinfrared =( ACinfraredbpm/1023*5);
 
 if(ref<=ACinfrared){
        ref=ACinfrared;
        }
      else{
        ref=ref;
        hold=(ref*6/10);
        if((ACinfrared<=hold)&&(logika_safety==0))
        {
          waktu_safety=waktu_safety+1;
          if(waktu_safety==200){
            waktu_safety=0;
            logika_safety=1;
            BPM=0;
          }
        }
        if((ACinfrared<=hold)&&(logika_safety==1)){
          ref=0;
          logika_safety=0; 
        }
        if(ACinfrared>hold){
          waktu_safety=0; 
        }
        if((ACinfrared>hold)&&(logika_detak==0)){
          logika_detak=1;
        }
        if((ACinfrared<hold)&&(logika_detak==1)){
          detak=detak+1;
          logika_detak = 0;
          bpm++;
          //Serial.print(detak);
          digitalWrite ( LED,HIGH );
          delay (500);
          digitalWrite ( LED,LOW );
        }
      }
          if (detak==5)
          {
            detak=0;
            periode=milidetik/5;
            frekuensi=1000/periode;
            BPM=frekuensi*60;
//            Serial.print(milidetik);
//            Serial.print("--");
//            Serial.print(periode);
//            Serial.print("--");
//            Serial.print(frekuensi);
//            Serial.print("--");
//            Serial.print(BPM);
//            Serial.println("--------------------------------"); 
            milidetik=0;

               //delay(5000);
               //lcd.clear();
               spo();
          }    

   lcd.setCursor(0,0);
   lcd.print("BPM:");
   lcd.print(detak);
   lcd.print("/");
   lcd.print(BPM);
   lcd.print("     ");
    lcd.setCursor(0, 1);
    lcd.print("SpO2:");
    lcd.print(spo2);
    lcd.print("%    ");
}


void spo(){

  ACredlamp = analogRead(A0); //pembacaan sinyal ACRed
  DCredlamp = analogRead(A2); //pembacaan sinyal DCRed
  DCinfrared = analogRead(A3); //pembacaan sinyal DCIR
  ACinfraredbpm = analogRead(A1); //pembacaan sinyal ACIR
  Serial.println(ACinfraredbpm);
  ACinfrared =( ACinfraredbpm/1023*5);
 
    //====olah SPO2====//
  if (maksimumACredlamp < ACredlamp)
  {
    maksimumACredlamp = ACredlamp;
  }      //untuk mendeteksi puncak (apabila puncak kurang dari maksimum puncak tetep menampilkan nilai puncak tertinggi)
  if (maksimumACinfrared < ACinfrared)
  {
    maksimumACinfrared = ACinfrared;
  }
  else
  {
    maksimumACinfrared = maksimumACinfrared; ////nilai maks acred
    holdACinfrared = (maksimumACinfrared * 0.8);
  }
  if (ACinfrared > holdACinfrared)            //apabila nilai adc dari tegangan ac infrared lebih dari 50, dan terdapat perubahan logika dari 0 ke 1 maka nilai counteran akan bertambah
  { // apabila tidak terdapat perubahan logika, counteran tidak bertambah
    if (logika == 0)
    {
      counteran++;
      nodetak = 0;
    }
    logika = 1;
  }
  else
  {
    logika = 0;
  }

  if (counteran >= 5)
  {
    if (DCredlamp == 0) //apabila counteran sudah sejumlah 5 kali, dan apabila nilai adc yg dibaca dari tegangan dc red lamp = 0, maka variabel bagi 1 dianggap bernilai 0
    {
      bagi1 = 0;
    }
    else               //apabila nilai adc dari tegangan dc red lamp bukan 0, maka akan menjalankan program variabel bagi1 yg berasal dari nilai adc tegangan maksimum ac red lamp dibagi dengan nilai adc tegangan dc red lamp
    {
      bagi1 = (float) maksimumACredlamp / DCredlamp;
    }
    if (DCinfrared == 0)
    {
      bagi2 = 0;        //apabila counteran sudah sejumlah 5 kali, dan apabila nilai adc yg dibaca dari tegangan dc infrared = 0, maka variabel bagi 2 dianggap bernilai 0
    }
    else
    {
      bagi2 = (float) maksimumACinfrared / DCinfrared; //apabila nilai adc dari tegangan dc infared bukan 0, maka akan menjalankan program variabel bagi2 yg berasal dari nilai adc tegangan maksimum ac infrared dibagi dengan nilai adc tegangan dc infrared
    }

    if (bagi2 == 1) //apabila nilai adc yg dihasilkan bagi2 = 0, maka akan ditampilkan presentase nilai spo2 = 0
    {
      spo2 = spo2;
    }
    else         //apabila nilai adc yg dihasilkan bagi2 bukan 0, maka akan menjalankan program dengan variabel ratio yg menghasilkan nilai adc dari nilai adc bagi 1 dibagi dengan nilai adc bagi 2
    { //kemudian menjalankan program dengan variabel spo2 yang nilainya didapat dari perhitungan matematis dengan memasukkan nilai adc dari variabel ratioratio=(float) bagi1/bagi2;
      ratio = (float) bagi1 / bagi2;
      delay(100);
      spo2 = 110 - (25 * ratio)
      ;
    }
    counteran = 0;              //apabila semua program diatas sudah dijalankan maka program kembali ke langkah awal/me-reset ulang program
    maksimumACredlamp = 0;
    maksimumACinfrared = 0;
   
   // lcd.setCursor(0, 0);
   // lcd.print("SpO2:");
  //  lcd.print(spo2);
  //  lcd.print("%");
   // delay(5000);
   // lcd.clear();
    return;
   
  }
  tampilkan++;
 
  cekdetak++;
  if (cekdetak == 50 && nodetak == 0) //apabila selama 50x10ms=500ms variabel nodetak=1, maka tampilan nilai presentase spo2 = 0 dan cek detak kembali ke 0/me-reset ulang timer
  {
    spo2 = spo2;
    nodetak = 1;
    cekdetak = 0;
  }
  if (tampilkan == 1000) //selama 20x10ms=200ms, tampilkan akan kembali ke 0/me-reset ulang/menampilkan data baru, apabila nilai spo2 > 100 maka nilai spo2 yang ditampilkan = 100
  {
    tampilkan = 0;
    int spo2, temp;
  }
  if (DCredlamp==0)
  {
    spo2=0;
  }

  {
      
 //   lcd.setCursor(0, 1);
 //   lcd.print("SpO2:");
 //   lcd.print(spo2);
 //   lcd.print("%    ");
   
  }
    
  spo();
  }





f. Program Arduino IDE (BPM)

#include <TimerOne.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
#define LED 9

//========================BPM=================================
float ref,hold,periode,frekuensi = 0;
int logika_detak, detak,bpm, BPM, waktu, logika_safety, waktu_safety= 0;
//========================TIMER===========================
int milidetik;

void interruptSetup()  //inisialisasi buat timer
{
 TCCR2A = 0x02;    
 TCCR2B = 0x06;   
 OCR2A = 0X3e;     
 TIMSK2 = 0x02;   
 sei();  
}

ISR(TIMER2_COMPA_vect)  //interupsi timer tiap 1 ms
{
  milidetik++;  //milidetik bertambah 1 (untuk hitungan realtime)
 }



void setup() {
  // put your setup code here, to run once:
 Serial.begin(115200);
 interruptSetup();  //inisialisasi timer interupt
 pinMode ( LED, OUTPUT );
  lcd.begin(16,2);
  lcd.init();                                       
  lcd.backlight();
}

void loop() {
  float ACredlamp = analogRead(A0); //pembacaan sinyal ACRed
  float DCredlamp = analogRead(A2); //pembacaan sinyal DCRed
  float DCinfrared = analogRead(A3); //pembacaan sinyal DCIR
  float ACinfraredbpm = analogRead(A1); //pembacaan sinyal ACIR
  Serial.println(ACinfraredbpm);
  float ACinfrared =( ACinfraredbpm/1023*5);
 if(ref<=ACinfrared){
        ref=ACinfrared;
        }
      else{
        ref=ref;
        hold=(ref*6/10);
        if((ACinfrared<=hold)&&(logika_safety==0))
        {
          waktu_safety=waktu_safety+1;
          if(waktu_safety==200){
            waktu_safety=0;
            logika_safety=1;
            BPM=0;
          }
        }
        if((ACinfrared<=hold)&&(logika_safety==1)){
          ref=0;
          logika_safety=0; 
        }
        if(ACinfrared>hold){
          waktu_safety=0; 
        }
        if((ACinfrared>hold)&&(logika_detak==0)){
          logika_detak=1;
        }
        if((ACinfrared<hold)&&(logika_detak==1)){
          detak=detak+1;
          logika_detak = 0;
          bpm++;
          //Serial.print(detak);
          digitalWrite ( LED,HIGH );
          delay (500);
          digitalWrite ( LED,LOW );
        }
      }
          if (detak==5)
          {
            detak=0;
            periode=milidetik/5;
            frekuensi=1000/periode;
            BPM=frekuensi*60;
//            Serial.print(milidetik);
//            Serial.print("--");
//            Serial.print(periode);
//            Serial.print("--");
//            Serial.print(frekuensi);
//            Serial.print("--");
//            Serial.print(BPM);
//            Serial.println("--------------------------------"); 
            milidetik=0;
          }    
  lcd.setCursor(0,0);
   lcd.print("BPM:");
   lcd.print(milidetik);
   lcd.setCursor(0,1);
   lcd.print("DETAK:");
   lcd.print(detak);
}






g. Program Arduino IDE (SPO2)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
#define LED 9
float TF;
unsigned char spo2 = 0;
//unsigned int ACredlamp,ACinfrared,DCredlamp,DCinfrared;
unsigned int maksimumACredlamp = 0, maksimumACinfrared = 0;;
int counteran;
int logika, holdACinfrared;
float ratio = 0;
float bagi1, bagi2;
int nodetak = 0;
unsigned char cekdetak = 0;
int tampilkan;
//==================BPM==============//
//float ref, hold,periode, frekuensi = 0;
//int logika_detak, detak, bpm, BPM,waktu, logika_safety, waktu_safety = 0;
//int milidetik ;
void interruptSetup()  //inisialisasi buat timer
{
 TCCR2A = 0x02;    
 TCCR2B = 0x06;   
 OCR2A = 0X3e;     
 TIMSK2 = 0x02;   
 sei();  
}

ISR(TIMER2_COMPA_vect)  //interupsi timer tiap 1 ms
{
  counteran++;
  tampilkan++;
 }

void setup() {
  Serial.begin(9600);
  lcd.begin(16,2);
  lcd.init();                                       
  lcd.backlight();                     

}
void loop()

{
  float ACredlamp = analogRead(A0); //pembacaan sinyal ACRed
//   Serial.println(ACredlamp);
  float ACinfrared = analogRead(A1); //pembacaan sinyal ACIR
Serial.println(ACinfrared);
  float DCredlamp = analogRead(A2); //pembacaan sinyal DCRed
  float DCinfrared = analogRead(A3); //pembacaan sinyal DCIR

  //====olah SPO2====//
  if (maksimumACredlamp < ACredlamp)
  {
    maksimumACredlamp = ACredlamp;
  }      //untuk mendeteksi puncak (apabila puncak kurang dari maksimum puncak tetep menampilkan nilai puncak tertinggi)
  if (maksimumACinfrared < ACinfrared)
  {
    maksimumACinfrared = ACinfrared;
  }
  else
  {
    maksimumACinfrared = maksimumACinfrared; ////nilai maks acred
    holdACinfrared = (maksimumACinfrared * 0.8);
  }
  if (ACinfrared > holdACinfrared)            //apabila nilai adc dari tegangan ac infrared lebih dari 50, dan terdapat perubahan logika dari 0 ke 1 maka nilai counteran akan bertambah
  { // apabila tidak terdapat perubahan logika, counteran tidak bertambah
    if (logika == 0)
    {
      counteran++;
      nodetak = 0;
    }
    logika = 1;
  }
  else
  {
    logika = 0;
  }

  if (counteran == 5)
  {
    if (DCredlamp == 0) //apabila counteran sudah sejumlah 5 kali, dan apabila nilai adc yg dibaca dari tegangan dc red lamp = 0, maka variabel bagi 1 dianggap bernilai 0
    {
      bagi1 = 0;
    }
    else               //apabila nilai adc dari tegangan dc red lamp bukan 0, maka akan menjalankan program variabel bagi1 yg berasal dari nilai adc tegangan maksimum ac red lamp dibagi dengan nilai adc tegangan dc red lamp
    {
      bagi1 = (float) maksimumACredlamp / DCredlamp;
    }
    if (DCinfrared == 0)
    {
      bagi2 = 0;        //apabila counteran sudah sejumlah 5 kali, dan apabila nilai adc yg dibaca dari tegangan dc infrared = 0, maka variabel bagi 2 dianggap bernilai 0
    }
    else
    {
      bagi2 = (float) maksimumACinfrared / DCinfrared; //apabila nilai adc dari tegangan dc infared bukan 0, maka akan menjalankan program variabel bagi2 yg berasal dari nilai adc tegangan maksimum ac infrared dibagi dengan nilai adc tegangan dc infrared
    }

    if (bagi2 == 1) //apabila nilai adc yg dihasilkan bagi2 = 0, maka akan ditampilkan presentase nilai spo2 = 0
    {
      spo2 = spo2;
    }
    else         //apabila nilai adc yg dihasilkan bagi2 bukan 0, maka akan menjalankan program dengan variabel ratio yg menghasilkan nilai adc dari nilai adc bagi 1 dibagi dengan nilai adc bagi 2
    { //kemudian menjalankan program dengan variabel spo2 yang nilainya didapat dari perhitungan matematis dengan memasukkan nilai adc dari variabel ratioratio=(float) bagi1/bagi2;
      ratio = (float) bagi1 / bagi2;
      delay(100);
      spo2 = 110 - (25 * ratio)
      ;
    }
    counteran = 0;              //apabila semua program diatas sudah dijalankan maka program kembali ke langkah awal/me-reset ulang program
    maksimumACredlamp = 0;
    maksimumACinfrared = 0;
  }
  tampilkan++;
 
  cekdetak++;
  if (cekdetak == 50 && nodetak == 0) //apabila selama 50x10ms=500ms variabel nodetak=1, maka tampilan nilai presentase spo2 = 0 dan cek detak kembali ke 0/me-reset ulang timer
  {
    spo2 = spo2;
    nodetak = 1;
    cekdetak = 0;
  }
  if (tampilkan == 1000) //selama 20x10ms=200ms, tampilkan akan kembali ke 0/me-reset ulang/menampilkan data baru, apabila nilai spo2 > 100 maka nilai spo2 yang ditampilkan = 100
  {
    tampilkan = 0;
    int spo2, temp;
  }
  if (DCredlamp==0)
  {
    spo2=0;
  }

  {
   
    lcd.setCursor(0, 0);
    lcd.print("SpO2:");
    lcd.print(spo2);
    lcd.print("%");
   

  }
       
}





h. Cara Penggunaan Alat

          Cara menggunakan alat ini yaitu pertama hubungkan probe ke amplifier seperti skema yang telah diberikan diatas, kemudian output dari amplifer dimasukkan ke Arduino atau microcontroller, jangan lupa untuk menghubungkan alat ke adaptor atau power supply.













Membuat Alat Monitor Kemiringan Dataran Menggunakan Sensor Accelerometer GY-521 / MPU6050 dan Wireless HC-12 Interface Delphi 7 Datalogger ARDUINO

Membuat Alat Monitor Kemiringan Dataran Menggunakan Sensor Accelerometer GY-521 / MPU6050 dan Wireless HC-12 Interface Delphi 7 Datalogger ARDUINO


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana membuat sebuah alat yang bisa digunakan untuk memonitor kemiringan dataran menggunakan wireless modul HC-12. alat ini menggunakan sensor accelero IMU yaitu GY-521 atau MPU6050 yang mana terdapat tidak hanya accelero saja namun ada gyro dan lainnya. untuk lebih jelasnya berikut adalah komponen dan programnya. 




a. Arduino Uno




b. Modul Wireless HC-12




c. Sensor IMU accelero - gyro GY-521 / MPU6050






d. Program Arduino IDE

#include<Wire.h>
const int MPU_addr=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

void setup(){
  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);
  Serial.begin(9600);    // 9600
}

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)
  //AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  //Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  //GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  //GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  //GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  Serial.print(AcX); Serial.println('a');
  Serial.print(AcY); Serial.println('b');
  //Serial.print("AcX = "); Serial.print(AcX);
  //Serial.print(" | AcY = "); Serial.print(AcY);
  //Serial.print(" | AcZ = "); Serial.print(AcZ);
  //Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);  //equation for temperature in degrees C from datasheet
  //Serial.print(" | GyX = "); Serial.print(GyX);
  //Serial.print(" | GyY = "); Serial.print(GyY);
  //Serial.print(" | GyZ = "); Serial.println(GyZ);
  delay(1000);
  
}





e. Program Delphi 7





unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Chart1: TChart;
    Shape1: TShape;
    Shape2: TShape;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Chart2: TChart;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    Label5: TLabel;
    Label6: TLabel;
    Timer2: TTimer;
    Timer3: TTimer;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer2.Enabled := True;
Timer3.Enabled := True;
if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
edit1.text:='';
edit2.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Memo1Change(Sender: TObject);
var ruang,kulit:double;
    rin,kin:string;
    jumlahdata:integer;

begin
  shape1.Brush.Color:=clgreen;
  shape2.Brush.Color:=clgreen;
  jumlahdata:=chart1.GetMaxValuesCount;
  form1.Caption:=inttostr(jumlahdata);
  if jumlahdata =10000 then
     begin
     Series1.Clear;
     Series2.Clear;
     end;

  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(rin,1)= 'a' then
     begin
     edit1.Text:=leftstr(rin,length(rin)-1);
     ruang:=strtofloat(edit1.text);
     Series1.Add(ruang,'',clred) ;
     shape1.Brush.Color:=clred;
     end;
  if rightstr(kin,1)='b' then
     begin
     edit2.Text:=leftstr(kin,length(kin)-1);
     kulit:=strtofloat(edit2.text);
     Series2.Add(kulit,'',clgreen) ;
     shape2.Brush.Color:=clred;
     end;


end;


procedure TForm1.Edit1Change(Sender: TObject);
var ruang:double;
begin
ruang:=strtofloat(edit1.text);
if ruang<30 then
   begin
   edit1.Color:=clblue;
   edit3.text:= 'Lembab';
   end;
if ruang>31 then
   begin
   edit1.Color:=clred;
   edit3.text:= 'Kering';
   end;
if (ruang>=31) and (ruang<=30) then
   begin
   edit1.Color:=clwhite;
   edit3.text:= 'Normal';
   end;
end;


procedure TForm1.Edit2Change(Sender: TObject);
var kulit:double;
begin
kulit:=strtofloat(edit2.text);
if kulit<60 then
   begin
   edit2.Color:=clblue;
   edit4.text:= 'Kering';
   end;
if kulit>61 then
   begin
   edit2.Color:=clred;
   edit4.text:= 'Lembab';
   end;
if (kulit>=61) and (kulit<=60) then
   begin
   edit2.Color:=clwhite;
   edit4.text:= 'Normal';
   end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var x:double;
    y:double;

begin
x:=strtofloat(edit1.text);
y:=strtofloat(edit2.text);

if(x>y) then
begin
Label6.Caption := 'BAHAYA';
end;

if(x<=y) then
begin
Label6.Caption := 'AMAN';
end;

end;

procedure TForm1.Timer3Timer(Sender: TObject);
var
  F: TextFile;
begin
  AssignFile(F, 'D:\result2.txt');
  Append(F);
  Write(F,'SumbuX=',Edit1.Text);
  Write(F,'  ');
  WriteLn(F,'SumbuY=',Edit2.Text);
  CloseFile(F);
end;

end.







f. VIDEO HASILNYA












Membuat Alat Monitor FLOW dan Tekanan Udara via WIFI Ethernet Webserver dan Interface Delphi 7 datalogger

Membuat Alat Monitor FLOW dan Tekanan Udara via WIFI Ethernet Webserver dan Interface Delphi 7 datalogger ARDUINO


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk memonitor flow dan tekanan udara menggunakan sensor water flow sensor dan MPX5700 DP. alat ini bisa dimonitor menggunakan LCD 16x2 dan WIFI, jadi bisa menggunakan komputer atau handphone untuk memonitornya. yang terkahir yaitu alat ini terdapat interface Delphi 7 untuk datalogger atau penyimpanan data secara realtime. untuk lebih jelasnya berikut adalah komponen dan programnya.




a. Arduino Uno 





b. Flow Sensor




c. Sensor Tekanan Udara MPX5700 DP




d. Router



 
e. Lcd 16x2 + I2C







f. Program Arduino IDE

 #include "Wire.h"
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <Ethernet.h>

LiquidCrystal_I2C lcd(0x3F, 16,2);

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,99);

EthernetServer server(80);

int x;
float v;
float kpa;

int xx;
float vx;
float kpax;

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;
byte sensorInterruptx = 1;  // 0 = digital pin 2
byte sensorPinx       = 3;

float calibrationFactor = 4.5;

volatile byte pulseCount;

unsigned int frac;
float flowRate;
unsigned int flowMilliLitres;
float totalMilliLitres;

unsigned long oldTime;


float calibrationFactorx = 4.5;

volatile byte pulseCountx;

unsigned int fracx;
float flowRatex;
unsigned int flowMilliLitresx;
float totalMilliLitresx;

unsigned long oldTimex;



String readString;

void setup() {
  lcd.begin();
  lcd.clear();
  lcd.noCursor();

   Serial.begin(9600);
   while (!Serial) {
  }

  Ethernet.begin(mac, ip);
  server.begin();
  //Serial.print("server is at ");
  //Serial.println(Ethernet.localIP());
 
  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

}

void loop() {


  if((millis() - oldTime) > 1000)
  {

    detachInterrupt(sensorInterrupt);
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
    oldTime = millis();
    flowMilliLitres = (flowRate / 60) * 1000;
    totalMilliLitres += flowMilliLitres;

/*   
    unsigned int frac;
 
    Serial.print("Flow rate: ");
    Serial.print(int(flowRate));  /
    Serial.print(".");          
    frac = (flowRate - int(flowRate)) * 10;
    Serial.print(frac, DEC) ;   
    Serial.print("L/min");
    Serial.print("  Current Liquid Flowing: "); 
    Serial.print(flowMilliLitres);
    Serial.print("mL/Sec");

    Serial.print("  Output Liquid Quantity: ");        
    Serial.print(totalMilliLitres);
    Serial.println("mL");
*/

    pulseCount = 0;
 
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
  }
 
 
 
    if((millis() - oldTimex) > 1000)
  {

    detachInterrupt(sensorInterruptx);
    flowRatex = ((1000.0 / (millis() - oldTimex)) * pulseCountx) / calibrationFactorx;
    oldTimex = millis();
    flowMilliLitresx = (flowRatex / 60) * 1000;
    totalMilliLitresx += flowMilliLitresx;

/*   
    unsigned int frac;
 
    Serial.print("Flow rate: ");
    Serial.print(int(flowRate));  /
    Serial.print(".");          
    frac = (flowRate - int(flowRate)) * 10;
    Serial.print(frac, DEC) ;   
    Serial.print("L/min");
    Serial.print("  Current Liquid Flowing: "); 
    Serial.print(flowMilliLitres);
    Serial.print("mL/Sec");

    Serial.print("  Output Liquid Quantity: ");        
    Serial.print(totalMilliLitres);
    Serial.println("mL");
*/

    pulseCountx = 0;
 
    attachInterrupt(sensorInterruptx, pulseCounterx, FALLING);
  }



  x = analogRead(A0);
  v = x*(5.0/1023.0);
  kpa = ((v/5.0)-0.04)/0.0012858;
 
  xx = analogRead(A1);
  vx = xx*(5.0/1023.0);
  kpax = ((vx/5.0)-0.04)/0.0012858;

  if(kpa < 0){
  kpa = 0;
  }

  if(kpax < 0){
  kpax = 0;
  }
 
  lcd.setCursor(0, 0);
  lcd.print("Kpa=");
  lcd.print(kpa);
  lcd.print("/");
  lcd.print(kpax);
  lcd.print("         ");
 
  lcd.setCursor(0, 1);
  lcd.print("ml/s=");
  lcd.print(flowMilliLitres);
  lcd.print(" / ");
  lcd.print(flowMilliLitresx);
  lcd.print("        ");
 
  Serial.print(kpa),Serial.println('a');
  Serial.print(kpax),Serial.println('b');
  Serial.print(flowMilliLitres),Serial.println('c');
  Serial.print(flowMilliLitresx),Serial.println('d');
 
  delay(1000);


   EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
     if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println(" ");
          client.println("<title> Monitor Flow Dan Pressure </title> ");   
          client.println("<body bgcolor = #000000>");   
          client.println("<center>");
            client.println("<font color = yellow><center><h1>Monitor Flow dan Pressure</h1></center><br></font>");
            client.println("<font color = #FFFFFF>");
            client.println("<h2>");
            client.println("Pressure 1 = ");
            client.print(kpa);
            client.println("<br />");
            client.println("Pressure 2 = ");
            client.print(kpax);
            client.println("<br />");
            client.println("Flow 1 = ");
            client.print(flowMilliLitres);
            client.println("<br />");
            client.println("Flow 2 = ");
            client.print(flowMilliLitresx);
            client.println("<br />");
            client.println("</h2>");    
          client.println("</font>");

          client.println("</center>");
          client.println("</body>");
          client.println("</html>");
          
          break;     
        }  
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }

}


void pulseCounter()
{
  pulseCount++;
}

void pulseCounterx()
{
  pulseCountx++;
}






g. Program Delphi 7



unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    BitBtn1: TBitBtn;
    Timer2: TTimer;
    Timer3: TTimer;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer2.Enabled := True;
Timer3.Enabled := True;

if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
Edit3.Color:=clwhite;
Edit4.Color:=clwhite;
edit1.text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
  F: TextFile;
begin
  AssignFile(F, 'D:\result.txt');
  Append(F);
  Write(F,'Flow1=',Edit1.Text);
  Write(F,' m/s  ');
  Write(F,'Flow2=',Edit2.Text);
  Write(F,' m/s  ');
  Write(F,'Press1=',Edit3.Text);
  Write(F,' kpa  ');
  Write(F,'Press2=',Edit4.Text);
  WriteLn(F,' kpa  ');
  CloseFile(F);
end;

procedure TForm1.Timer3Timer(Sender: TObject);
var satu,dua,tiga,empat,lima,enam:double;
    rin,kin,vin,din,lin,hin:string;
    jumlahdata:integer;

begin
  form1.Caption:=inttostr(jumlahdata);

  hin:=memo1.Lines[memo1.Lines.count-6];
  lin:=memo1.Lines[memo1.Lines.count-5];
  din:=memo1.Lines[memo1.Lines.count-4];
  vin:=memo1.Lines[memo1.Lines.count-3];
  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(din,1)= 'a' then
     begin
     edit1.Text:=leftstr(hin,length(hin)-1);
     end;
  if rightstr(vin,1)='b' then
     begin
     edit2.Text:=leftstr(lin,length(lin)-1);
     end;
  if rightstr(rin,1)='c' then
     begin
     edit3.Text:=leftstr(din,length(din)-1);
     end;
  if rightstr(kin,1)='d' then
     begin
     edit4.Text:=leftstr(vin,length(vin)-1);
     end;
  if rightstr(kin,1)='e' then
     begin
     //edit5.Text:=leftstr(lin,length(vin)-1);
     end;
  if rightstr(kin,1)='f' then
     begin
     //edit6.Text:=leftstr(hin,length(vin)-1);
     end;


end;

end.
 





h. VIDEO HASILNYA







Membuat Alat Deteksi Cahaya Sensor LDR Output Suara WP3A module ARDUINO

Membuat Alat Deteksi Cahaya Sensor LDR Output Suara WP3A module ARDUINO


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk mendeteksi cahaya dengan menggunakan sensor LDR dengan output suara rekaman berformat .wav. jadi sistem kerja alat ini jika sensor terkena cahaya maka akan menjalankan rekaman yang terdapat pada module WP3A wav player dari Bengkel-Elektro. untuk lebih jelasnya berikut adalah komponen dan programnya.




a. Arduino Uno




b. Sensor Cahaya LDR




c. Modul Wav Player WP3A (Bengkel-Elektro)





d. Program Arduino IDE

void setup() {
Serial.begin(19200);

Serial.print((char)13);
Serial.print((char)13);
Serial.print((char)13);
delay(100);

Serial.print("t");
Serial.print((char)13);
delay(100);

Serial.print("g");
Serial.print((char)13);
delay(100);

}

void loop() {

int dataadc1 = analogRead(A0);
int dataadc2 = analogRead(A1);
int dataadc3 = analogRead(A2);
int dataadc4 = analogRead(A3);


if(dataadc1 < 50){
Serial.print("lsatu.wav");
Serial.print((char)13);
delay(5000);
}
if(dataadc2 < 50){
Serial.print("ldua.wav");
Serial.print((char)13); 
delay(5000);
}
if(dataadc3 < 50){
Serial.print("ltiga.wav");
Serial.print((char)13); 
delay(5000);
}
if(dataadc4 < 50){
Serial.print("lempat.wav");
Serial.print((char)13);
delay(5000);  
}

if((dataadc1 > 50)&&(dataadc2 > 50)&&(dataadc3 > 50)&&(dataadc4 > 50)){
Serial.print("t");
Serial.print((char)13);
delay(100);
}

/*
Serial.print(dataadc1);
Serial.print(" ");
Serial.print(dataadc2);
Serial.print(" ");
Serial.print(dataadc3);
Serial.print(" ");
Serial.print(dataadc4);
Serial.println(" ");
*/

delay(200);

}






e. VIDEO HASILNYA