Translate

Membuat Alat Pijat / Terapi Elektrik (Elektronik MASSAGE)

Membuat Alat Pijat / Terapi Elektrik (Elektronik MASSAGE)
 

          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berbasis arduino yang berguna untuk terapi atau pijat dengan menggunakan manset, jadi alat ini bisa dipasangkan sampai 3 manset di bagian tubuh lalu akan melakukan pompa dan setelah tekanan tercapai akan keep angin dulu selama 15 detik lalu mengeluarkan angin selama 45 detik dan akan berulang seperti itu seterusnya sampai 1 jam. untuk sensor yang dipakai bisa menggunakan MPX5050GP atau MPX4115VC6U. untuk lebih jelasnya berikut adalah skema dan programnya.
 
 
 
a. Skema 
 



b. Komponen Penyusun
 

 
 
 
c. Program Arduino IDE
 
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <AFMotor.h>
#include <DS3231.h>
LiquidCrystal_I2C lcd(0x27, 16,2);

AF_DCMotor motor1(1); //pompa
AF_DCMotor motor2(2); //solenoid buang angin
AF_DCMotor motor3(3); //solenoid ke manset

int buzzer = 9;
int btset = A1;
int btup = A2;
int btdown = A3;
int btok = 10;
int menit = 59;
int detik = 60;
int pilihan;

int btsetx;
int btupx;
int btdownx;
int btokx;
int waktu = 60;

int dataadc;
int mmhg;
int presure = 20;

//SOLENOID ON ITU UDARA MENGALIR
//SOLENOID OFF ITU UDARA STOP
DS3231  rtc(SDA, SCL);
Time  t;

void setup() {
  lcd.clear();
  lcd.begin();
  lcd.noCursor();
  Serial.begin(9600);
  motor1.setSpeed(255);
  //motor1.run(RELEASE);
  motor2.setSpeed(255);
  //solout.run(RELEASE);
  motor3.setSpeed(255);
  //solman.run(RELEASE);
  pinMode(buzzer,OUTPUT);
  pinMode(btset,INPUT_PULLUP);
  pinMode(btup,INPUT_PULLUP);
  pinMode(btdown,INPUT_PULLUP);
  pinMode(btok,INPUT_PULLUP);
  rtc.begin();
  //rtc.setDOW(FRIDAY);     // Set Day-of-Week to SUNDAY
  rtc.setTime(0, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(13, 5, 2022);   // Set the date to January 1st, 2014
}


void loop() {
motor2.run(FORWARD);
motor3.run(FORWARD);

 btsetx = digitalRead(btset);
 btokx = digitalRead(btok);
 
 lcd.setCursor(0,0);
 lcd.print("P/W= ");
 lcd.print(presure);
 lcd.print("/");
 lcd.print(waktu);
 lcd.print("    ");

 lcd.setCursor(15,0);
 lcd.print(pilihan);

 lcd.setCursor(0,1);
 lcd.print("TEKAN MULAI ");
 
if(btsetx == 0){
  delay(1000);
  lcd.clear();
  settekanan();
  lcd.clear();
  delay(1000);
  setwaktu();
  lcd.clear();
  delay(1000);
  }

if(btokx == 0){
  delay(1000);
  lcd.clear();
  rtc.setTime(0, 0, 0);  //set timer
  t.sec = 0;
  mulai();
  }
          
delay(100);   
}


void settekanan(){
 
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);

 lcd.setCursor(0,0);
 lcd.print("Setting Presure ");
 lcd.setCursor(0,1);
 lcd.print(presure);
 lcd.print("    ");

if(btupx == 0){
  delay(200);
  presure = presure + 10;
}

if(btdownx == 0){
  delay(200);
  presure = presure - 10;
}

if(btokx == 0){
  delay(200);
  lcd.clear();
  if(presure == 20){
  pilihan = 0;
  }
  if(presure == 30){
  pilihan = 1;
  }
  if(presure == 40){
  pilihan = 2;
  }
  if(presure == 50){
  pilihan = 3;
  }
  if(presure == 60){
  pilihan = 4;
  }
  return;
}

if(presure < 20){
  presure = 20;
}

if(presure > 60){
  presure = 60;
}  

settekanan();  
}


void setwaktu(){
 
btsetx = digitalRead(btset);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
btokx = digitalRead(btok);

 lcd.setCursor(0,0);
 lcd.print("Setting waktu ");
 lcd.setCursor(0,1);
 lcd.print(waktu);
 lcd.print("    ");

if(btokx == 0){
  delay(200);
  lcd.clear();
  btokx = 1;
  return;
}
 
setwaktu();  
}


void mulai(){
t = rtc.getTime();

//pompa manset  
motor1.run(FORWARD);
motor2.run(RELEASE);
motor3.run(FORWARD);

dataadc = analogRead(A0);
mmhg = (dataadc - 46.222) / 3.2;

lcd.setCursor(0,0);
lcd.print("P/M/W=");
lcd.print(mmhg);
lcd.print("/");
lcd.print(presure);
lcd.print("/");
lcd.print(waktu);
 
lcd.setCursor(0,1);
lcd.print(t.hour);
lcd.print(":");
lcd.print(t.min);
lcd.print(":");
lcd.print(t.sec);
lcd.print("    ");
lcd.setCursor(9,1);
lcd.print("        ");

if(t.hour == 1){
  lcd.clear();
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  return;
}

if((pilihan == 0)&&(mmhg >= 26)){
  lcd.setCursor(9,1);
  lcd.print("DEFLASI");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  digitalWrite(buzzer,HIGH); //bunyi
  delay(5000);
  digitalWrite(buzzer,LOW); //off
  lcd.clear();
  return;
}

if((pilihan == 1)&&(mmhg >= 39)){
  lcd.setCursor(9,1);
  lcd.print("DEFLASI");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  digitalWrite(buzzer,HIGH); //bunyi
  delay(5000);
  digitalWrite(buzzer,LOW); //off
  lcd.clear();
  return;
}

if((pilihan == 2)&&(mmhg >= 52)){
  lcd.setCursor(9,1);
  lcd.print("DEFLASI");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  digitalWrite(buzzer,HIGH); //bunyi
  delay(5000);
  digitalWrite(buzzer,LOW); //off
  lcd.clear();
  return;
}

if((pilihan == 3)&&(mmhg >= 65)){
  lcd.setCursor(9,1);
  lcd.print("DEFLASI");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  digitalWrite(buzzer,HIGH); //bunyi
  delay(5000);
  digitalWrite(buzzer,LOW); //off
  lcd.clear();
  return;
}

if((pilihan == 4)&&(mmhg >= 78)){
  lcd.setCursor(9,1);
  lcd.print("DEFLASI");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  digitalWrite(buzzer,HIGH); //bunyi
  delay(5000);
  digitalWrite(buzzer,LOW); //off
  lcd.clear();
  return;
}

if(mmhg >= presure){
 //presure stay
 lcd.setCursor(9,1);
 lcd.print("INFLASI");
 motor1.run(RELEASE);
 motor2.run(RELEASE);
 motor3.run(FORWARD);
 delay(15000);
 lcd.setCursor(9,1);
 lcd.print("DEFLASI");
 motor2.run(FORWARD);
 delay(45000);
}

mulai();  
}



 
d. VIDEO HASILNYA
 

 
 

Membuat Electric Shock Line Arduino

Membuat Electric Shock Line Arduino
 

         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang bisa digunakan untuk sebuah permainan yaitu electric shock line yang mana permainan ini menggunakan media kawat yang berjumlah 2 buah. antara kawat satu dengan dua tidak boleh saling bersentuhan jika bersentuhan maka akan membunyikan buzzer / alarm. untuk lebih jelasnya berikut adalah program dan komponennya.


a. Skema


b. Program Arduino IDE

#include<Wire.h>

int buzzer = 7;
int tombol = 11;
int tombolx = 0;
int led = 8;

int sensor = A0;
int sensorx = 0;

int y = 0;

void setup(){
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,HIGH);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
pinMode(9,OUTPUT);
digitalWrite(9,LOW);
pinMode(tombol,INPUT_PULLUP);
pinMode(sensor,INPUT_PULLUP);
}


void loop(){

 sensorx = digitalRead(sensor);

if((sensorx == 0)&&(y == 0)){
y = 1;
digitalWrite(buzzer,LOW);
digitalWrite(led,HIGH);
}

 tombolx = digitalRead(tombol);

if(tombolx == 0){
y = 0;
digitalWrite(buzzer,HIGH);
digitalWrite(led,LOW);
}
}



c. VIDEO HASILNYA

 
 
 
 
 

Monitor Daya (Arus dan Tegangan) KWH Server Thingspeak

Monitor Daya (Arus dan Tegangan) KWH Server Thingspeak


       Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor tegangan arus dan daya dengan menggunakan sensor PZEM-004t dan server yang dipakai adalah Thingspeak.org untuk lebih jelasnya berikut adalah komponen dan programnya.


a. Komponen Penyusun




b. Program Arduino IDE

#include <PZEM004Tv30.h>
#include <Wire.h>  
#include <LiquidCrystal_I2C.h>  
PZEM004Tv30 pzem(2, 3);
LiquidCrystal_I2C lcd(0x27, 16, 2);

int relay1 = 6;
int relay2 = 7;
float voltage;
float current;
float power;
float energy;

int tegangan;
int arus;
int daya;
int kwh;

void setup() {
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  pinMode(relay1,OUTPUT);
  pinMode(relay2,OUTPUT);
  digitalWrite(relay1,HIGH); //off
  digitalWrite(relay2,HIGH); //off
}

void loop() {

  voltage = pzem.voltage();
  current = pzem.current();
  power = pzem.power();
  energy = pzem.energy();

  lcd.setCursor(0, 0);
  lcd.print("V/I:");
  lcd.print(voltage);
  lcd.print("/");
  lcd.print(current);
  lcd.print("        ");

  lcd.setCursor(0, 1);
  lcd.print("P/kwh:");
  lcd.print(power);
  lcd.print("/");
  lcd.print(energy,3);
  lcd.print("        ");

if(power > 450.0){
  digitalWrite(relay1,LOW); //on
  digitalWrite(relay2,LOW); //on
  delay(3000);
}

if(power < 450.0){
  digitalWrite(relay1,HIGH); //off
  digitalWrite(relay2,HIGH); //off
}

  tegangan = voltage * 100.0;
  arus = current * 100.0;
  daya = power * 100.0;
  kwh = energy * 1000.0;
   
Serial.print("*");
Serial.print(tegangan);
Serial.print(",");
Serial.print(arus);
Serial.print(",");
Serial.print(daya);
Serial.print(",");
Serial.print(kwh);
Serial.println("#");
 
delay(100);
}



c. Program Nodemcu ESP8266

#include <SPI.h>
#include <ESP8266WiFi.h>

int temp;
int x = 5;
int y;

int value1;
int value2;
int value3;
int value4;

float tegangan;
float arus;
float daya;
float kwh;

int datain1;
int datain2;
int datain3;
int datain4;

String dataIn;
String dt[10];
int i;
boolean parsing = false;

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

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

WiFiClient client;

void setup()
{
 
  dataIn="";
  Serial.begin(9600);
  delay(10);

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

}

void loop()
{

while(Serial.available()>0) {
//   dataIn="";
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}

if(parsing){
    parsingData();
       
  if (client.connect(server,80))   //   "184.106.153.149" or api.thingspeak.com
                      {
                           
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(tegangan);
                             postStr += "\r\n\r\n";

                             client.print(String("GET ") + resource + apiKey + "&field1=" + tegangan + "&field2=" + arus + "&field3=" + daya + "&field4=" + kwh + " 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.print("Tegangan: ");
                             Serial.print(tegangan);
                             Serial.print(" Arus: ");
                             Serial.print(arus);
                             Serial.println(". Send to Thingspeak.");
                        }
                       
          client.stop();

          //Serial.println("Waiting...");

  delay(10000);
 
 }
}

void parsingData(){
int j=0;

//kirim data yang telah diterima sebelumnya
//Serial.print("data masuk : ");
//Serial.print(dataIn);
//Serial.print("\n");

//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]="";       //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}

 datain1 = dt[0].toInt();
 datain2 = dt[1].toInt();
 datain3 = dt[2].toInt();
 datain4 = dt[3].toInt();

//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.print(datain1);
Serial.print("\n");
Serial.print("data 2 : ");
Serial.print(datain2);
Serial.print("\n");
Serial.print("data 3 : ");
Serial.print(datain3);
Serial.print("data 4 : ");
Serial.print(datain4);

 tegangan = datain1 / 100.0;
 arus = datain2 / 100.0;
 daya = datain3 / 100.0;
 kwh = datain4 / 1000.0;
 
}



d. VIDEO HASILNYA




TIMER COUNTDOWN INTERFACE P10 ALARM ARDUINO

Timer Countdown Interface P10 Alarm Arduino
 
     
           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang digunakan untuk timer count down / pewaktu pencacah mundur dengan nilai yang sudah disetting pada koding, jika sudah mencapai waktunya atau waktunya sudah 0 maka akan membunyikan buzzer. untuk lebih jelasnya berikut adalah komponen dan programnya.

 
 
a. Komponen Penyusun


b. Wiring Diagram Arduino ke Panel P10


c. Program Arduino IDE

#include <Wire.h>
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>        //Library DMD yang menyediakan fungsi penampilan teks, gambar dsb
#include <TimerOne.h>   //Library peripheral Timer1 untuk menjalankan prosedur pindai panel DMD
#include <Time.h>     //Library waktu yang menyediakan tipe data, struktur, dan obyek waktu
#include "Arial_black_16.h"
#include "Arial_Black_16_ISO_8859_1.h"
#include "Arial14.h"
#include "DejaVuSans9.h"
#include "Droid_Sans_12.h"
#include "Droid_Sans_16.h"
#include "DejaVuSansItalic9.h"
#include "Mono5x7.h"
#include "SystemFont5x7.h"
#include <DS3231.h>

#define WAKTU_TAMPIL_JAM      10    //detik
#define WAKTU_TAMPIL_KALENDAR 5     //detik

#define DISPLAY_COLUMN_COUNT  2
#define DISPLAY_ROW_COUNT     1

#define PIXELS_PER_COLUMN  32
#define PIXELS_PER_ROW    16

#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

DMD dmd(DISPLAY_COLUMN_COUNT, DISPLAY_ROW_COUNT);
unsigned char show = 0;

unsigned int suhu;
unsigned int suhux;
unsigned int dataadc;

char lineBuff[20];
char lineBuffx[20];

int jam = 0;
int menit = 1;
int detik = 60;

int jamx;
int menitx;
int detikx;
int buzzer = 5;
int tombol = 3;
int tombolx;
int tanda = 0;

DS3231  rtc(SDA, SCL);
Time  t;
 
void ScanDMD()
{
  dmd.scanDisplayBySPI();
}


void setup(void)
{
  mlx.begin();
  dmd.clearScreen( true );   //true is normal (all pixels off), false is negative (all pixels on)
  Serial.begin(9600);
   //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
  Timer1.initialize( 1000 );           //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
  Timer1.attachInterrupt( ScanDMD );   //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
 
  //clear/init the DMD pixels held in RAM
  dmd.clearScreen( true );
  rtc.begin();
  //rtc.setDOW(FRIDAY);     // Set Day-of-Week to SUNDAY
  rtc.setTime(0, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(13, 5, 2022);   // Set the date to January 1st, 2014
  pinMode(buzzer,OUTPUT);
  digitalWrite(buzzer,LOW); //buzzer off
  pinMode(tombol,INPUT_PULLUP);
}


void loop(void)
{
t = rtc.getTime();
t.sec = 0;
 
tombolx = digitalRead(tombol);

if(tombolx == 0){
rtc.setTime(0, 0, 0);  
t.sec = 0;  
mulai();  
}

sprintf(lineBuff, "%d:%d", jam, menit);
sprintf(lineBuffx, "%d ", t.sec);

dmd.selectFont(DejaVuSans9);
dmd.selectFont(Mono5x7);
dmd.drawString( 38,  0, lineBuff, strlen(lineBuff), GRAPHICS_NORMAL);  
dmd.drawString( 42,  8, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);  

}

void mulai(){
t = rtc.getTime();
detikx = detik - t.sec;

 sprintf(lineBuff, "%d:%d   ", jam, menit);
 sprintf(lineBuffx, "%d ", detikx);

 dmd.selectFont(DejaVuSans9);
 dmd.selectFont(Mono5x7);
 dmd.drawString( 38,  0, lineBuff, strlen(lineBuff), GRAPHICS_NORMAL);  
 dmd.drawString( 42,  8, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);  

 
if((jam <= 0)&&(menit <= 0)&&(detikx <= 30)){
   digitalWrite(buzzer,HIGH); //buzzer on
   delay(20);
   digitalWrite(buzzer,LOW); //buzzer off
}

if(detikx == 1){
     
   if((jam == 0)&&(menit == 0)&&(detikx == 1)){
     jam = 0;
     menit = 0;
     detikx = 0;
     detik = 0;
     t.sec = 0;
     
     sprintf(lineBuff, "%d:%d", jam, menit);
     sprintf(lineBuffx, "%d ", detikx);

     dmd.selectFont(DejaVuSans9);
     dmd.selectFont(Mono5x7);
     dmd.drawString( 38,  0, lineBuff, strlen(lineBuff), GRAPHICS_NORMAL);  
     dmd.drawString( 42,  8, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);  
   
    digitalWrite(buzzer,HIGH);
    delay(5000);
    digitalWrite(buzzer,LOW);
    tanda = 0;
    jam = 1;
    menit = 59;
    detik = 60;
    return;
    }
    
    menit--;
    detikx = 59;
    detik = 59;

 if(menit < 0){
 if(jam > 0){
   menit = 59;
  }
    
    jam--;
    
if(jam < 0){
      jam = 0;
    }    
    }
    
 }

delay(1000);  
mulai();  
}



 
d. VIDEO HASILNYA
 





JAM DIGITAL INTERFACE PANEL P10 FITUR ALARM ARDUINO + RTC DS3231

Jam Digital Interface Panel P10 Fitur ALarm Arduino + RTC DS3231
 

            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menunjukkan waktu dengan interface panel P10. jadi alat ini adalah jam digital yang menggunakan arduino dan modul RTC sebagai pewaktu dan panel P10 sebagai penampilnya. untuk lebih jelasnya berikut adalah komponen dan programnya.
 
 
 
a. Komponen Penyusun



b. Skema Arduino ke Panel P10



c. Program Arduino IDE

#include <Wire.h>
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>        //Library DMD yang menyediakan fungsi penampilan teks, gambar dsb
#include <TimerOne.h>   //Library peripheral Timer1 untuk menjalankan prosedur pindai panel DMD
#include <Time.h>     //Library waktu yang menyediakan tipe data, struktur, dan obyek waktu
#include "Arial_black_16.h"
#include "Arial_Black_16_ISO_8859_1.h"
#include "Arial14.h"
#include "DejaVuSans9.h"
#include "Droid_Sans_12.h"
#include "Droid_Sans_16.h"
#include "DejaVuSansItalic9.h"
#include "Mono5x7.h"
#include "SystemFont5x7.h"
#include <DS3231.h>

#define WAKTU_TAMPIL_JAM      10    //detik
#define WAKTU_TAMPIL_KALENDAR 5     //detik

#define DISPLAY_COLUMN_COUNT  2
#define DISPLAY_ROW_COUNT     1

#define PIXELS_PER_COLUMN  32
#define PIXELS_PER_ROW    16

DMD dmd(DISPLAY_COLUMN_COUNT, DISPLAY_ROW_COUNT);
unsigned char show = 0;

unsigned int suhu;
unsigned int suhux;
unsigned int dataadc;

char lineBuff[20];
char lineBuffx[20];

int buzzer = 5;

DS3231  rtc(SDA, SCL);
Time  t;
 
void ScanDMD()
{
  dmd.scanDisplayBySPI();
}


void setup(void)
{
  dmd.clearScreen( true );   //true is normal (all pixels off), false is negative (all pixels on)
  Serial.begin(9600);
   //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
  Timer1.initialize( 1000 );           //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
  Timer1.attachInterrupt( ScanDMD );   //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
 
  //clear/init the DMD pixels held in RAM
  dmd.clearScreen( true );
  rtc.begin();
  //rtc.setDOW(FRIDAY);     // Set Day-of-Week to SUNDAY
  //rtc.setTime(15, 26, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(13, 5, 2022);   // Set the date to January 1st, 2014
  pinMode(buzzer,OUTPUT);
  digitalWrite(buzzer,LOW); //buzzer off
}


void loop(void)
{
   t = rtc.getTime();

   if((t.hour == 15)&&(t.min == 30)){
    digitalWrite(buzzer,HIGH);
   }
   else{
    digitalWrite(buzzer,LOW);
   }
   
      sprintf(lineBuff, "%d:%d", t.hour, t.min);
      sprintf(lineBuffx, "%d ", t.sec);

      dmd.selectFont(DejaVuSans9);
      dmd.selectFont(Mono5x7);
      dmd.drawString( 33,  0, lineBuff, strlen(lineBuff), GRAPHICS_NORMAL);  
      dmd.drawString( 42,  8, lineBuffx, strlen(lineBuffx), GRAPHICS_NORMAL);  

delay(1000);
}



d. VIDEO HASILNYA



MONITOR PRESSURE / TEKANAN UDARA + FITUR ALARM

Monitor Pressure / Tekanan Udara + Fitur Alarm
 

            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang memonitor tekanan udara / air dengan menggunakan sensor tekanan dan mikrokontroller Arduino dan juga alat ini dilengkapi fitur buzzer jika terdapat tekanan yang terdeteksi. untuk lebih jelasnya berikut adalah koding dan skemanya.
 
 
 
a. Skema



b. Program Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

int x;
float v;
float psi;
int buzzer = 11;

void setup() {
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
  pinMode(buzzer,OUTPUT);
  digitalWrite(buzzer,LOW);
}

void loop() {

  x = analogRead(A0);
  v = x*(5.0/1023.0);
  psi = 250 * (v/5.0);
  psi = psi - 27.0;
 
  if(psi < 0){
    psi = 0;
  }
 
  lcd.setCursor(0, 0);
  lcd.print("PSI = ");
  lcd.print(psi);
  lcd.print("    ");

  if(psi >= 1){
    digitalWrite(buzzer,HIGH);
  }
 
  if(psi < 1){  
    digitalWrite(buzzer,LOW);
  }
 
  delay(200);
}



c. VIDEO HASILNYA