Emmanuel Edwards
/
Hexi_Serial_Example
modified serial for HX711 readout
Fork of Hexi_Serial_Example by
main.cpp
- Committer:
- eddienuel
- Date:
- 2016-10-09
- Revision:
- 1:cad368af277b
- Parent:
- 0:79c0c4cd1ab3
File content as of revision 1:cad368af277b:
#include "mbed.h" float _scale; DigitalOut myled(LED_BLUE); DigitalIn HX_DOUT(PTC3); DigitalOut HX_PD_SCK(PTC5); Serial pc(USBTX, USBRX); long offset = 0; long ReadWeight(void); //double getGram(); uint16_t getGram(); long getAverageValue(int times); int main() { offset = getAverageValue(20); int i = 0; pc.printf("Hello World!\n"); while (true) { wait(0.5f); // wait a small period of time pc.printf("%d \n", getGram()); // print the value of variable i i++; // increment the variable myled = !myled; // toggle a led } } long ReadWeight(void) { long Count; unsigned char i; HX_PD_SCK.write(0); Count = 0; while(HX_DOUT.read() == 1); for (i=0;i<24;i++) { HX_PD_SCK.write(1); Count=Count<<1; HX_PD_SCK.write(0); if(HX_DOUT.read() == 1) Count++; } HX_PD_SCK.write(1); Count=Count^0x800000; HX_PD_SCK.write(0); return(Count); } //double getGram(){ // return ((getAverageValue(20) - offset)*0.0000407059);//8409088 // //return getAverageValue(20);// - offset)*0.00793457031);//8409088 // //} uint16_t getGram(){ return ((getAverageValue(20) - offset))/1000;//*0.0000407059);//8409088 //return getAverageValue(20);// - offset)*0.00793457031);//8409088 } long getAverageValue(int times){ long sum = 0; for (int i = 0; i < times; i++) { sum += ReadWeight(); } return sum / times; }