Translate

Bargraph 4 Panel DMD P10 Arduino Input Tegangan Motor DC

Bargraph 4 Panel DMD P10 Arduino Input Tegangan Motor DC


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan panel DMD P10 sebagai interfacenya. alat ini berfungsi untuk menampilkan bargraph di panel P10 dari bawah menuju ke atas dengan input tegangan dari motor dc. alat ini memiliki alarm jika bargraph telah penuh atau nyala semua. untuk lebih jelasnya berikut adalah program dan komponennya.



a. Komponen




b. Program Arduino IDE

#include "Wire.h"
#include "DHT.h"
#include "BIG7SEGMENT.h"
#include "DMD3.h"
#include "DejaVuSans9.h"
#include "bmz9.h"
#include "bmz6x7.h"

DMD3 display (4,1);

byte debounce = 100;
char dmdBuff1[10];
char dmdBuff2[10];
int B=0;
int x;
int y;
int buzzer = 2;
int dataadc;
int batas;

void scan()
{
    display.refresh();
}

void setup() {
    Serial.begin(9600);
    Timer1.initialize(1350);
    Timer1.attachInterrupt(scan);
    Timer1.pwm(9,255);
    pinMode(buzzer,OUTPUT);
    digitalWrite(buzzer,HIGH);
}

void loop() {

    dataadc = analogRead(A0);
    Serial.println(dataadc);
    
    if(dataadc > 200){      
    x++;  
    }

    if(x >= 128){
    digitalWrite(buzzer,LOW);
    delay(5000);
    digitalWrite(buzzer,HIGH);
    x = 0;      
    display.refresh();
    }
    
    display.drawRect(x,y,1,15,1);

delay(200);    
}



c. VIDEO HASILNYA



  

Anemometer Digital Monitor Kecepatan Angin Arduino Fitur Alarm

Anemometer Digital Monitor Kecepatan Angin Arduino Fitur Alarm


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor kecepatan angin dengan menggunakan Arduino. alat ini menggunakan casing panel outdoor sehingga bisa diletakkan diluar ruangan karena terdapat penutup dibagian atasnya sehingga aman dari hujan. alat ini juga terdapat alarm yang mana jika kecepatan angin lebih dari normal maka buzzer / alarm akan menyala. untuk lebih jelasnya berikut adalah program dan komponennya.



a. Komponen




b. Program Arduino IDE

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
LiquidCrystal_I2C lcd(0x27, 16, 2);

// anemometer parameters
volatile byte rpmcount; // count signals
volatile unsigned long last_micros;
unsigned long timeold;
unsigned long timemeasure = 2.00; // seconds
int timetoSleep = 1;               // minutes
unsigned long sleepTime = 15;      // minutes
unsigned long timeNow;
int countThing = 0;
int GPIO_pulse = 2; // Arduino = D2
float rpm, rps;     // frequencies
float radius = 0.1; // meters - measure of the lenght of each the anemometer wing
float velocity_kmh; // km/h
float velocity_ms;  //m/s
float omega = 0;    // rad/s
float calibration_value = 2.0;
int buzm = 3; //pin buzzer

void setup() {

  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
 
  pinMode(buzm,OUTPUT);
  digitalWrite(buzm,HIGH);
 
  pinMode(GPIO_pulse, INPUT_PULLUP);
  digitalWrite(GPIO_pulse, LOW);

  detachInterrupt(digitalPinToInterrupt(GPIO_pulse));                         // force to initiate Interrupt on zero
  attachInterrupt(digitalPinToInterrupt(GPIO_pulse), rpm_anemometer, RISING); //Initialize the intterrupt pin
  rpmcount = 0;
  rpm = 0;
  timeold = 0;
  timeNow = 0;
 
}

void loop()
{
  //Measure RPM
  if ((millis() - timeold) >= timemeasure * 1000)
  {
    //countThing++;
    detachInterrupt(digitalPinToInterrupt(GPIO_pulse)); // Disable interrupt when calculating
    rps = float(rpmcount) / float(timemeasure);         // rotations per second
    rpm = 60 * rps;                                     // rotations per minute
    omega = 2 * PI * rps;                               // rad/s
    velocity_ms = omega * radius * calibration_value;   // m/s
    velocity_kmh = velocity_ms * 3.6;                   // km/h
        
    timeold = millis();
    rpmcount = 0;
    attachInterrupt(digitalPinToInterrupt(GPIO_pulse), rpm_anemometer, RISING); // enable interrupt
  }

  lcd.setCursor(0, 0);
  lcd.print("Kec=");
  lcd.print(velocity_ms);
  lcd.print(" m/s ");

if(velocity_ms > 30){
  lcd.setCursor(0, 1);
  lcd.print("Tinggi  ");
  digitalWrite(buzm,LOW);
}
if((velocity_ms >= 1)&&(velocity_ms <= 2)){
  lcd.setCursor(0, 1);
  lcd.print("Sedang  ");
  digitalWrite(buzm,HIGH);
}
if(velocity_ms < 1){
  lcd.setCursor(0, 1);
  lcd.print("Rendah  ");
  digitalWrite(buzm,HIGH);
}  

}

void rpm_anemometer()
{
  if (long(micros() - last_micros) >= 5000)
  { // time to debounce measures
    rpmcount++;
    last_micros = micros();
  }
}

 

c. VIDEO HASILNYA