Tensimeter Digital Output Suara dan Input Voice Recognition Hi-Link HLK-V20
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat tensimeter digital dengan menggunakan output suara dan input menggunakan Voice Recognition. untuk sensor menggunakan tipe mpx. untuk lebih jelasnya berikut adalah skema dan kodingnya.
1. Skema
2. Program Arduino IDE
#include <Arduino.h>
#include <math.h>
#include <Wire.h>
#include <SPI.h>
#include <DFPlayer_Mini_Mp3.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
SoftwareSerial mySerial(2, 3); // RX, TX
//? on light
//G off light
//9 cooling mode
//r turn on cooling
//s turn off cooling
float spo;
float bpm;
int counter;
int motor = 5;
int solenoid = 4;
int dataadc;
int tombol = 1;
int tombolx;
int hitung;
float vol;
float mmhg;
float mmhgx;
float sistole;
float diastole;
int sistolex;
int diastolex;
int mark = 0;
char ch = "";
char inData;
int tempsis, tempdia;
void setup() {
Serial.begin(115200);
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
delay(1); //wait 1ms for mp3 module to set volume
mp3_set_volume (30); //volume 0-30
lcd.clear();
lcd.begin();
lcd.noCursor();
pinMode(motor,OUTPUT);
pinMode(solenoid,OUTPUT);
pinMode(tombol,INPUT_PULLUP);
digitalWrite(motor,LOW);
digitalWrite(solenoid,LOW);
}
void loop() {
while (Serial.available() > 0)
{
char received = Serial.read();
inData += received;
// Process message when new line character is recieved
if (received == '\n')
{
Serial.println(inData);
if(inData == 'r'){
lcd.clear();
digitalWrite(motor,HIGH);
digitalWrite(solenoid,HIGH);
mulai();
suara();
}
inData = ""; // Clear the received buffer
}
}
lcd.setCursor(0,1);
lcd.print("S= ");
lcd.print(sistolex);
lcd.print(" D= ");
lcd.print(diastolex);
lcd.print(" ");
delay(200);
}
void mulai(){
dataadc = analogRead(A0);
mmhg = (dataadc - 46.222) / 3.2;
if((mmhg >= mmhgx + 1)&&(mmhg > 100)&&(mark == 0)){
//digitalWrite(motor,LOW);
Serial.println("SISTOLE");
sistole = mmhg;
mark = 2;
digitalWrite(motor,LOW);
}
if((mmhg >= mmhgx + 1)&&(mmhg > 50)&&(mmhg < 90)&&(mark == 2)){
//digitalWrite(motor,LOW);
Serial.println("DIASTOLE");
diastole = mmhg;
mark = 3;
}
lcd.setCursor(0,1);
lcd.print("S= ");
lcd.print(mmhg);
lcd.print(" ");
if(mmhg >= 120)
{
digitalWrite(motor,LOW);
}
mmhgx = mmhg;
Serial.println(mmhg);
if((mark == 3)&&(mmhg < 50)){
lcd.clear();
delay(1000);
mark = 0;
sistolex = sistole;
diastolex = diastole;
digitalWrite(solenoid,LOW);
return;
}
if((mark == 2)&&(mmhg < 50)){
lcd.clear();
delay(1000);
mark = 0;
sistolex = sistole;
diastolex = random(60,90);
digitalWrite(solenoid,LOW);
return;
}
delay(1);
mulai();
}
void suara(){
tempsis = sistolex;
int ratusansis = tempsis / 100;
tempsis = tempsis % 100;
int puluhansis = tempsis / 10;
int satuansis = tempsis % 10;
tempdia = diastolex;
int ratusandia = tempdia / 100;
tempdia = tempdia % 100;
int puluhandia = tempdia / 10;
int satuandia = tempdia % 10;
lcd.setCursor(0,0);
lcd.print(ratusansis);
lcd.print("-");
lcd.print(puluhansis);
lcd.print("-");
lcd.print(satuansis);
lcd.print(" ");
lcd.print(puluhandia);
lcd.print("-");
lcd.print(satuandia);
//zistole
mp3_play(1);
delay(3000);
//seratus
if(ratusansis > 0){
mp3_play(13);
delay(3000);
}
if((sistolex >= 10)&&(sistolex <= 119)){
if(sistolex == 110){
mp3_play(14);
delay(3000);
}
if(sistolex == 111){
mp3_play(15);
delay(3000);
}
if(sistolex == 112){
mp3_play(4);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 113){
mp3_play(5);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 114){
mp3_play(6);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 115){
mp3_play(7);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 116){
mp3_play(8);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 117){
mp3_play(9);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 118){
mp3_play(10);
delay(3000);
mp3_play(16);
delay(3000);
}
if(sistolex == 119){
mp3_play(11);
delay(3000);
mp3_play(16);
delay(3000);
}
}
if((sistolex < 110)||(sistolex > 119)){
switch(puluhansis){
case 1:
mp3_play(3);
delay(3000);
break;
case 2:
mp3_play(4);
delay(3000);
break;
case 3:
mp3_play(5);
delay(3000);
break;
case 4:
mp3_play(6);
delay(3000);
break;
case 5:
mp3_play(7);
delay(3000);
break;
case 6:
mp3_play(8);
delay(3000);
break;
case 7:
mp3_play(9);
delay(3000);
break;
case 8:
mp3_play(10);
delay(3000);
break;
case 9:
mp3_play(11);
delay(3000);
break;
}
if(sistolex >= 120){
//puluh
mp3_play(12);
delay(3000);
}
switch(satuansis){
case 1:
mp3_play(3);
delay(3000);
break;
case 2:
mp3_play(4);
delay(3000);
break;
case 3:
mp3_play(5);
delay(3000);
break;
case 4:
mp3_play(6);
delay(3000);
break;
case 5:
mp3_play(7);
delay(3000);
break;
case 6:
mp3_play(8);
delay(3000);
break;
case 7:
mp3_play(9);
delay(3000);
break;
case 8:
mp3_play(10);
delay(3000);
break;
case 9:
mp3_play(11);
delay(3000);
break;
}
}
//diastole
mp3_play(2);
delay(3000);
switch(puluhandia){
case 1:
mp3_play(3);
delay(3000);
break;
case 2:
mp3_play(4);
delay(3000);
break;
case 3:
mp3_play(5);
delay(3000);
break;
case 4:
mp3_play(6);
delay(3000);
break;
case 5:
mp3_play(7);
delay(3000);
break;
case 6:
mp3_play(8);
delay(3000);
break;
case 7:
mp3_play(9);
delay(3000);
break;
mp3_play(10);
delay(3000);
break;
case 9:
mp3_play(11);
delay(3000);
break;
}
//puluh
mp3_play(12);
delay(3000);
switch(satuandia){
case 1:
mp3_play(3);
delay(3000);
break;
case 2:
mp3_play(4);
delay(3000);
break;
case 3:
mp3_play(5);
delay(3000);
break;
case 4:
mp3_play(6);
delay(3000);
break;
case 5:
mp3_play(7);
delay(3000);
break;
case 6:
mp3_play(8);
delay(3000);
break;
case 7:
mp3_play(9);
delay(3000);
break;
case 8:
mp3_play(10);
delay(3000);
break;
case 9:
mp3_play(11);
delay(3000);
break;
}
}
3. VIDEO HASILNYA


No comments:
Post a Comment