关于adrduino HX711库的解析
生活随笔
收集整理的這篇文章主要介紹了
关于adrduino HX711库的解析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
資料在這里:鏈接:https://pan.baidu.com/s/1a3lbToJZKTeBq6lbU9SRCg
提取碼:1234
實驗室一個hx711稱重模塊,搞了一下,不穩(wěn)定,所以解析一下代碼:
#ifndef __HX711__H__ #define __HX711__H__ #include <Arduino.h> #define HX711_SCK 2 //設置2號引腳發(fā)送時鐘信號 #define HX711_DT 3 //設置3號引腳接收數(shù)據(jù)信號 extern void Init_Hx711(); //初始化 extern unsigned long HX711_Read(void); //讀取增益128 extern long Get_Weight(); //獲取重量 extern void Get_Maopi(); //獲取毛皮 #endif初始化函數(shù)
Init_Hx711():
讀取增益函數(shù)unsigned long HX711_Read(void)
unsigned long HX711_Read(void) //增益128 {unsigned long count; //儲存變量unsigned char i; //接收位數(shù)bool Flag = 0; //沒啥用digitalWrite(HX711_DT, HIGH);delayMicroseconds(1); //高一微秒digitalWrite(HX711_SCK, LOW);delayMicroseconds(1); //低一微秒count=0; //清除儲存變量while(digitalRead(HX711_DT)); //等待數(shù)據(jù)引腳DT響應高電平for(i=0;i<24;i++) //循環(huán)讀取24位數(shù)據(jù) hx711芯片是24位ADC儲存芯片{ digitalWrite(HX711_SCK, HIGH); delayMicroseconds(1);count=count<<1; digitalWrite(HX711_SCK, LOW); delayMicroseconds(1);if(digitalRead(HX711_DT))count++; //發(fā)送時鐘信號 并且移位 如果讀取電平為高,當前的count的位數(shù)為1,否則默認為0} digitalWrite(HX711_SCK, HIGH); count ^= 0x800000; /*^是異或,位運算的一種,相同為0不同為1 a=3,二進制表示是00000011 b=4,二進制表示是00000100 a=a^b,a的值為:00000111 b=b^a,b的值為:00000011,即是a的初值3 a=a^b,a的值為:00000100,即是b的初值4 實現(xiàn)交換 這里相當于是count ^= 0x800000 = count=count^0x800000,如果count=FFFFFF,拆散開來為二進制的1111 1111 1111 1111 1111 11110x800000=1000 0000 0000 0000 0000 0000count=count^0x800000=1111 1111 1111 1111 1111 1111^1000 0000 0000 0000 0000 0000=1000 0000 0000 0000 0000 0000;*/delayMicroseconds(1);digitalWrite(HX711_SCK, LOW); delayMicroseconds(1);//質(zhì)低時鐘,等待下次發(fā)送return(count); //返回count的值 }獲取毛皮(重量初始化) void Get_Maopi()
void Get_Maopi() {Weight_Maopi = HX711_Read(); //賦值hx711獲取的值count給maopi } /* 可以理解為獲取沒有東西時候的重量 重量初始化 */獲取重量:long Get_Weight()
long Get_Weight() {HX711_Buffer = HX711_Read();Weight_Shiwu = HX711_Buffer;Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //獲取實物的AD采樣數(shù)值。 用現(xiàn)在的重量-之前初始化的重量Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue); //實物的重量=數(shù)值/GapValuereturn Weight_Shiwu; //返回實物的重量 }GapValue取多少,具體看說明書,在函數(shù)里是這樣子定義的:
#define GapValue 430手冊又是這樣子定義的:
arduino代碼實現(xiàn):
總結
以上是生活随笔為你收集整理的关于adrduino HX711库的解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟登录北京移动
- 下一篇: 计算机二级准考证是哪套题,计算机二级wo