Weight-machine-App

Dependencies:   HX711 ST7567 mbed

Committer:
josespaul
Date:
Fri Jan 20 11:49:14 2017 +0000
Revision:
1:c72a74304949
Parent:
0:bca8659e032c
optimised code. lcd support added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
josespaul 0:bca8659e032c 1 #include "mbed.h"
josespaul 0:bca8659e032c 2 #include "HX711.h"
josespaul 1:c72a74304949 3 #include "ST7567.h"
josespaul 1:c72a74304949 4 #define STEPS 100.0
josespaul 0:bca8659e032c 5 #define MAX_WEIGHT 2.0
josespaul 0:bca8659e032c 6
josespaul 1:c72a74304949 7 ST7567 lcd(P1_24, P1_20, P1_25, P1_22, P1_21); // mosi, sclk, reset, A0, nCS
josespaul 1:c72a74304949 8 Serial pc(USBTX,USBRX,115200);
josespaul 1:c72a74304949 9 HX711 Balance(P3_25,P3_26);
josespaul 0:bca8659e032c 10 PwmOut ser_mtr(P2_3);
josespaul 0:bca8659e032c 11
josespaul 0:bca8659e032c 12 int main()
josespaul 0:bca8659e032c 13 {
josespaul 1:c72a74304949 14 float current_value;
josespaul 1:c72a74304949 15 float initial_value;
josespaul 0:bca8659e032c 16 float weight;
josespaul 1:c72a74304949 17 float i,j;
josespaul 1:c72a74304949 18 lcd.set_contrast(0x3F);
josespaul 1:c72a74304949 19 lcd.cls();
josespaul 1:c72a74304949 20 lcd.locate(0, 1);
josespaul 1:c72a74304949 21 lcd.printf("\n\n\n Hello !");
josespaul 1:c72a74304949 22 wait(2);
josespaul 1:c72a74304949 23 lcd.cls();
josespaul 1:c72a74304949 24 lcd.locate(0, 1);
josespaul 1:c72a74304949 25 lcd.printf("\n\n\n Calibtrating Sensors ..");
josespaul 1:c72a74304949 26 ser_mtr.write(0.05f);
josespaul 0:bca8659e032c 27 wait(1);
josespaul 1:c72a74304949 28 initial_value = Balance.getValue();
josespaul 1:c72a74304949 29 ser_mtr.write(0.105f);
josespaul 0:bca8659e032c 30 wait(1);
josespaul 1:c72a74304949 31 lcd.cls();
josespaul 1:c72a74304949 32
josespaul 0:bca8659e032c 33 while (true)
josespaul 0:bca8659e032c 34 {
josespaul 1:c72a74304949 35 current_value = Balance.getValue();
josespaul 1:c72a74304949 36 weight = ((float)current_value-(float)initial_value)/315701; //Calibration - 315701 is the corresponding value for 1KG
josespaul 1:c72a74304949 37 lcd.locate(4, 4);
josespaul 1:c72a74304949 38 if (weight < 0.005)
josespaul 1:c72a74304949 39 weight = 0.00;
josespaul 1:c72a74304949 40 lcd.printf("\n\n\n Weight %.3lf KG",weight);
josespaul 1:c72a74304949 41 //pc.printf("current_value : %ld Kilograms :%.3lf\n",current_value,weight);
josespaul 1:c72a74304949 42 for(i=0, j=0.105; i<=MAX_WEIGHT; i=i+(MAX_WEIGHT/STEPS), j=j-(0.055/STEPS)) {
josespaul 1:c72a74304949 43 if(weight >= i)
josespaul 0:bca8659e032c 44 ser_mtr.write(j);
josespaul 0:bca8659e032c 45 }
josespaul 1:c72a74304949 46 }
josespaul 0:bca8659e032c 47 }