kl25z with hx711 loadcell
Dependencies: ESP8266 HX711 mbed
main.cpp@0:0cf9262fc2b2, 2017-03-20 (annotated)
- Committer:
- padte
- Date:
- Mon Mar 20 13:11:21 2017 +0000
- Revision:
- 0:0cf9262fc2b2
aa
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
padte | 0:0cf9262fc2b2 | 1 | #include "mbed.h" |
padte | 0:0cf9262fc2b2 | 2 | #include "HX711.h" |
padte | 0:0cf9262fc2b2 | 3 | #include "ESP8266.h" |
padte | 0:0cf9262fc2b2 | 4 | |
padte | 0:0cf9262fc2b2 | 5 | ESP8266 esp(PTC4,PTC3,9600); |
padte | 0:0cf9262fc2b2 | 6 | DigitalIn hx711input(D5); |
padte | 0:0cf9262fc2b2 | 7 | DigitalOut green(LED2); |
padte | 0:0cf9262fc2b2 | 8 | DigitalOut red(LED1); |
padte | 0:0cf9262fc2b2 | 9 | Serial pc(USBTX, USBRX); // USB Serial Terminal |
padte | 0:0cf9262fc2b2 | 10 | |
padte | 0:0cf9262fc2b2 | 11 | HX711 scale(D5,D13); |
padte | 0:0cf9262fc2b2 | 12 | char rs[100],rcv[100]; |
padte | 0:0cf9262fc2b2 | 13 | int averageSamples = 100; |
padte | 0:0cf9262fc2b2 | 14 | float calibration_factor = 1000; |
padte | 0:0cf9262fc2b2 | 15 | int main(void) |
padte | 0:0cf9262fc2b2 | 16 | { |
padte | 0:0cf9262fc2b2 | 17 | pc.baud(9600); |
padte | 0:0cf9262fc2b2 | 18 | pc.printf("Starting Scale\r\n"); |
padte | 0:0cf9262fc2b2 | 19 | //wait(0.2f); |
padte | 0:0cf9262fc2b2 | 20 | // pc.printf("HX711 calibration sketch\r\n"); |
padte | 0:0cf9262fc2b2 | 21 | //wait(0.2f); |
padte | 0:0cf9262fc2b2 | 22 | pc.printf("Remove all weight from scale\r\n"); |
padte | 0:0cf9262fc2b2 | 23 | //wait(0.2f); |
padte | 0:0cf9262fc2b2 | 24 | pc.printf("After readings begin, place known weight on scale\r\n"); |
padte | 0:0cf9262fc2b2 | 25 | //wait(0.2f); |
padte | 0:0cf9262fc2b2 | 26 | |
padte | 0:0cf9262fc2b2 | 27 | |
padte | 0:0cf9262fc2b2 | 28 | scale.setScale(0); |
padte | 0:0cf9262fc2b2 | 29 | scale.tare(); //Reset the scale to 0 |
padte | 0:0cf9262fc2b2 | 30 | |
padte | 0:0cf9262fc2b2 | 31 | //long zero_factor = scale.averageValue(averageSamples); //Get a baseline reading |
padte | 0:0cf9262fc2b2 | 32 | // pc.printf("Zero factor: %.4f\r\n" , zero_factor); //This can be used to remove the need to tare the scale. Useful in permanent scale projects. |
padte | 0:0cf9262fc2b2 | 33 | |
padte | 0:0cf9262fc2b2 | 34 | while (true) { |
padte | 0:0cf9262fc2b2 | 35 | scale.setScale(calibration_factor); |
padte | 0:0cf9262fc2b2 | 36 | float weight = scale.getGram(); |
padte | 0:0cf9262fc2b2 | 37 | |
padte | 0:0cf9262fc2b2 | 38 | |
padte | 0:0cf9262fc2b2 | 39 | //float raw = scaleRaw.read(); |
padte | 0:0cf9262fc2b2 | 40 | if (weight >5 && weight <10) |
padte | 0:0cf9262fc2b2 | 41 | weight = 50; |
padte | 0:0cf9262fc2b2 | 42 | else if (weight >10 && weight <15) |
padte | 0:0cf9262fc2b2 | 43 | weight = 100; |
padte | 0:0cf9262fc2b2 | 44 | else if (weight >15 && weight <25) |
padte | 0:0cf9262fc2b2 | 45 | weight = 100; |
padte | 0:0cf9262fc2b2 | 46 | else if (weight >25 && weight <30) |
padte | 0:0cf9262fc2b2 | 47 | weight = 200; |
padte | 0:0cf9262fc2b2 | 48 | else if (weight >30 && weight <50) |
padte | 0:0cf9262fc2b2 | 49 | weight = 300; |
padte | 0:0cf9262fc2b2 | 50 | else if (weight >50 && weight <70) |
padte | 0:0cf9262fc2b2 | 51 | weight = 400; |
padte | 0:0cf9262fc2b2 | 52 | else if (weight >70 && weight <75) |
padte | 0:0cf9262fc2b2 | 53 | weight = 500; |
padte | 0:0cf9262fc2b2 | 54 | else if (weight >145 && weight <150) |
padte | 0:0cf9262fc2b2 | 55 | weight = 1000; |
padte | 0:0cf9262fc2b2 | 56 | |
padte | 0:0cf9262fc2b2 | 57 | pc.printf("Reading: %.2f gms \r\n", weight); |
padte | 0:0cf9262fc2b2 | 58 | pc.printf(" calibration_factor: %.2f\r\n", calibration_factor); |
padte | 0:0cf9262fc2b2 | 59 | if(pc.readable()) { |
padte | 0:0cf9262fc2b2 | 60 | char temp = pc.getc(); |
padte | 0:0cf9262fc2b2 | 61 | if(temp == '+' || temp == 'a') |
padte | 0:0cf9262fc2b2 | 62 | calibration_factor += 10; |
padte | 0:0cf9262fc2b2 | 63 | else if(temp == '-' || temp == 'z') |
padte | 0:0cf9262fc2b2 | 64 | calibration_factor -= 10; |
padte | 0:0cf9262fc2b2 | 65 | } |
padte | 0:0cf9262fc2b2 | 66 | sprintf(rs,"&pr=%.3f", weight); |
padte | 0:0cf9262fc2b2 | 67 | esp.SendCMD(rs); |
padte | 0:0cf9262fc2b2 | 68 | esp.RcvReply(rcv, 1000); |
padte | 0:0cf9262fc2b2 | 69 | //pc.printf("%s", rcv); |
padte | 0:0cf9262fc2b2 | 70 | wait(1); |
padte | 0:0cf9262fc2b2 | 71 | /* if(hx711input > 2000) |
padte | 0:0cf9262fc2b2 | 72 | { |
padte | 0:0cf9262fc2b2 | 73 | green = !green; |
padte | 0:0cf9262fc2b2 | 74 | wait(0.2); |
padte | 0:0cf9262fc2b2 | 75 | } |
padte | 0:0cf9262fc2b2 | 76 | else |
padte | 0:0cf9262fc2b2 | 77 | { red=!red; |
padte | 0:0cf9262fc2b2 | 78 | wait(0.2); |
padte | 0:0cf9262fc2b2 | 79 | } |
padte | 0:0cf9262fc2b2 | 80 | //pc.printf("Raw Value: %.7f\n", raw);*/ |
padte | 0:0cf9262fc2b2 | 81 | // wait(0.2); |
padte | 0:0cf9262fc2b2 | 82 | } |
padte | 0:0cf9262fc2b2 | 83 | } |