#include <EEPROM.h>
#include <HCSR04.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define upb A2
#define okb A1
#define dnb A0
#define trig 7
#define echo 6
#define DT 4
#define SCK 5
#define maxHeight 250
HX711 scale;
LiquidCrystal_I2C lcd(0x27,20,4);
UltraSonicDistanceSensor distanceSensor(7,6);
SoftwareSerial mySoftwareSerial(13, 12); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
// variable use to measuer the intervals inbetween impulses
int i=0;
// Number of impulses detected
unsigned int impulsCount=0;
// Sum of all the coins inseted
unsigned int total_amount=0;
// number of service offered
unsigned int serviceCount=0;
void setup()
{
lcd.begin();
welcomeDisplay();
scale.begin(DT,SCK);
EEPROM.get(0, total_amount);
EEPROM.get(100, serviceCount);
pinMode(upb,INPUT);
pinMode(okb,INPUT);
pinMode(dnb,INPUT);
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(30); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
}
float getHeight()
{
float length = distanceSensor.measureDistanceCm();
length= maxHeight-length;
Serial.print("length is :");
Serial.println(length);
return length;
}
String getSex()
{
String sex ="MALE";
sexDisplay(sex);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH || digitalRead(dnb)==HIGH)
{
delay(500);
if(sex =="FEMALE"){sex = "MALE";Serial.println(sex)};
if(sex =="MALE"){sex = "FEMALE";Serial.println(sex)};
sexDisplay(sex);
}
}
Serial.print("THE CHOICE OF SEX IS: ");
Serial.print(sex);
return sex;
}
int getAge()
{
int age=25;
ageDisplay(age);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH)
{
delay(500);
age++;
Serial.println(age);
ageDisplay(age);
}
if(digitalRead(dnb)==HIGH)
{
delay(500);
age--;
Serial.println(age);
ageDisplay(age);
}
}
return age;
}
bool getpayment()
{
attachInterrupt(0,incomingImpuls, FALLING);
while(total_amount<200)
{
i=i+1;
Serial.print("i=");
Serial.print(i);
Serial.print(" Impulses:");
Serial.print(impulsCount);
Serial.print(" Total:");
Serial.println(total_amount);
if (i>=30 and impulsCount==2)
{
total_amount=total_amount+100;
impulsCount=0;
EEPROM.put(0, total_amount);
}
if (i>=30 and impulsCount==5)
{
total_amount=total_amount+200;
impulsCount=0;
EEPROM.put(0, total_amount);
}
}
detachInterrupt(digitalPinToInterrupt(2));
return HIGH;
}
void incomingImpuls()
{
impulsCount=impulsCount+1;
i=0;
}
float getMass()
{
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
reading =reading;
return reading;
}
else {
Serial.println("HX711 not found.");
return 9999;
}
delay(1000);
}
/////////////////////////////// welcome display screen//////////////////////////////////////////
void welcomeDisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" SMART BMI MACHINE ");
lcd.setCursor(0,1);
lcd.print(" BY GPC ICT STUDENT");
lcd.setCursor(0,2);
lcd.print("*SYSTEM INITIALIZE!*");
lcd.setCursor(0,3);
for(int i=0;i<20;i++)
{
lcd.setCursor(i,3);
lcd.print('-');
delay(500);
}
}
/////////////////////////////// welcome data display///////////////////////////
void sexDisplay(String text)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(text);
lcd.setCursor(0,3);
lcd.print("CHANGE ACCEPT CHANGE");
}
void ageDisplay(int num)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(num);
lcd.setCursor(0,3);
lcd.print("DOWN ACCEPT UP");
}#include <EEPROM.h>
#include <HCSR04.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define upb A2
#define okb A1
#define dnb A0
#define trig 7
#define echo 6
#define DT 4
#define SCK 5
#define maxHeight 250
HX711 scale;
LiquidCrystal_I2C lcd(0x27,20,4);
UltraSonicDistanceSensor distanceSensor(7,6);
SoftwareSerial mySoftwareSerial(13, 12); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
// variable use to measuer the intervals inbetween impulses
int i=0;
// Number of impulses detected
unsigned int impulsCount=0;
// Sum of all the coins inseted
unsigned int total_amount=0;
// number of service offered
unsigned int serviceCount=0;
void setup()
{
lcd.begin();
welcomeDisplay();
scale.begin(DT,SCK);
EEPROM.get(0, total_amount);
EEPROM.get(100, serviceCount);
pinMode(upb,INPUT);
pinMode(okb,INPUT);
pinMode(dnb,INPUT);
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(30); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
}
float getHeight()
{
float length = distanceSensor.measureDistanceCm();
length= maxHeight-length;
Serial.print("length is :");
Serial.println(length);
return length;
}
String getSex()
{
String sex ="MALE";
sexDisplay(sex);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH || digitalRead(dnb)==HIGH)
{
delay(500);
if(sex =="FEMALE"){sex = "MALE";Serial.println(sex)};
if(sex =="MALE"){sex = "FEMALE";Serial.println(sex)};
sexDisplay(sex);
}
}
Serial.print("THE CHOICE OF SEX IS: ");
Serial.print(sex);
return sex;
}
int getAge()
{
int age=25;
ageDisplay(age);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH)
{
delay(500);
age++;
Serial.println(age);
ageDisplay(age);
}
if(digitalRead(dnb)==HIGH)
{
delay(500);
age--;
Serial.println(age);
ageDisplay(age);
}
}
return age;
}
bool getpayment()
{
attachInterrupt(0,incomingImpuls, FALLING);
while(total_amount<200)
{
i=i+1;
Serial.print("i=");
Serial.print(i);
Serial.print(" Impulses:");
Serial.print(impulsCount);
Serial.print(" Total:");
Serial.println(total_amount);
if (i>=30 and impulsCount==2)
{
total_amount=total_amount+100;
impulsCount=0;
EEPROM.put(0, total_amount);
}
if (i>=30 and impulsCount==5)
{
total_amount=total_amount+200;
impulsCount=0;
EEPROM.put(0, total_amount);
}
}
detachInterrupt(digitalPinToInterrupt(2));
return HIGH;
}
void incomingImpuls()
{
impulsCount=impulsCount+1;
i=0;
}
float getMass()
{
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
reading =reading;
return reading;
}
else {
Serial.println("HX711 not found.");
return 9999;
}
delay(1000);
}
/////////////////////////////// welcome display screen//////////////////////////////////////////
void welcomeDisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" SMART BMI MACHINE ");
lcd.setCursor(0,1);
lcd.print(" BY GPC ICT STUDENT");
lcd.setCursor(0,2);
lcd.print("*SYSTEM INITIALIZE!*");
lcd.setCursor(0,3);
for(int i=0;i<20;i++)
{
lcd.setCursor(i,3);
lcd.print('-');
delay(500);
}
}
/////////////////////////////// welcome data display///////////////////////////
void sexDisplay(String text)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(text);
lcd.setCursor(0,3);
lcd.print("CHANGE ACCEPT CHANGE");
}
void ageDisplay(int num)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(num);
lcd.setCursor(0,3);
lcd.print("DOWN ACCEPT UP");
}#include <EEPROM.h>
#include <HCSR04.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
#include "HX711.h"
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define upb A2
#define okb A1
#define dnb A0
#define trig 7
#define echo 6
#define DT 4
#define SCK 5
#define maxHeight 250
HX711 scale;
LiquidCrystal_I2C lcd(0x27,20,4);
UltraSonicDistanceSensor distanceSensor(7,6);
SoftwareSerial mySoftwareSerial(13, 12); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
// variable use to measuer the intervals inbetween impulses
int i=0;
// Number of impulses detected
unsigned int impulsCount=0;
// Sum of all the coins inseted
unsigned int total_amount=0;
// number of service offered
unsigned int serviceCount=0;
void setup()
{
lcd.begin();
welcomeDisplay();
scale.begin(DT,SCK);
EEPROM.get(0, total_amount);
EEPROM.get(100, serviceCount);
pinMode(upb,INPUT);
pinMode(okb,INPUT);
pinMode(dnb,INPUT);
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(30); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
}
float getHeight()
{
float length = distanceSensor.measureDistanceCm();
length= maxHeight-length;
Serial.print("length is :");
Serial.println(length);
return length;
}
String getSex()
{
String sex ="MALE";
sexDisplay(sex);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH || digitalRead(dnb)==HIGH)
{
delay(500);
if(sex =="FEMALE"){sex = "MALE";Serial.println(sex)};
if(sex =="MALE"){sex = "FEMALE";Serial.println(sex)};
sexDisplay(sex);
}
}
Serial.print("THE CHOICE OF SEX IS: ");
Serial.print(sex);
return sex;
}
int getAge()
{
int age=25;
ageDisplay(age);
while(digitalRead(okb)==LOW)
{
if(digitalRead(upb)==HIGH)
{
delay(500);
age++;
Serial.println(age);
ageDisplay(age);
}
if(digitalRead(dnb)==HIGH)
{
delay(500);
age--;
Serial.println(age);
ageDisplay(age);
}
}
return age;
}
bool getpayment()
{
attachInterrupt(0,incomingImpuls, FALLING);
while(total_amount<200)
{
i=i+1;
Serial.print("i=");
Serial.print(i);
Serial.print(" Impulses:");
Serial.print(impulsCount);
Serial.print(" Total:");
Serial.println(total_amount);
if (i>=30 and impulsCount==2)
{
total_amount=total_amount+100;
impulsCount=0;
EEPROM.put(0, total_amount);
}
if (i>=30 and impulsCount==5)
{
total_amount=total_amount+200;
impulsCount=0;
EEPROM.put(0, total_amount);
}
}
detachInterrupt(digitalPinToInterrupt(2));
return HIGH;
}
void incomingImpuls()
{
impulsCount=impulsCount+1;
i=0;
}
float getMass()
{
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
reading =reading;
return reading;
}
else {
Serial.println("HX711 not found.");
return 9999;
}
delay(1000);
}
/////////////////////////////// welcome display screen//////////////////////////////////////////
void welcomeDisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" SMART BMI MACHINE ");
lcd.setCursor(0,1);
lcd.print(" BY GPC ICT STUDENT");
lcd.setCursor(0,2);
lcd.print("*SYSTEM INITIALIZE!*");
lcd.setCursor(0,3);
for(int i=0;i<20;i++)
{
lcd.setCursor(i,3);
lcd.print('-');
delay(500);
}
}
/////////////////////////////// welcome data display///////////////////////////
void sexDisplay(String text)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(text);
lcd.setCursor(0,3);
lcd.print("CHANGE ACCEPT CHANGE");
}
void ageDisplay(int num)
{
lcd.clear();
lcd.setCursor(0,8);
lcd.print(num);
lcd.setCursor(0,3);
lcd.print("DOWN ACCEPT UP");
}