差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
barometersensors [2023/07/24 15:14]
huangyuan
barometersensors [2023/07/25 12:07] (当前版本)
huangyuan
行 89: 行 89:
   from machine import I2C, Pin   from machine import I2C, Pin
   import time   import time
- 
   i2c = I2C(0, scl=Pin(21),​ sda=Pin(20),​ freq=400_000)   i2c = I2C(0, scl=Pin(21),​ sda=Pin(20),​ freq=400_000)
- 
   ms5611_c = [0, 0, 0, 0, 0, 0, 0, 0]   ms5611_c = [0, 0, 0, 0, 0, 0, 0, 0]
- 
   GY63_ADDRESS = 0x77   GY63_ADDRESS = 0x77
   print(i2c.scan())   print(i2c.scan())
- 
   def reset():   def reset():
       i2c.writeto(GY63_ADDRESS,​ bytearray([0x1E]))       i2c.writeto(GY63_ADDRESS,​ bytearray([0x1E]))
       time.sleep(0.01)       time.sleep(0.01)
- 
   def init():   def init():
       reset()       reset()
       for i in range(8):       for i in range(8):
           ms5611_c[i] = prom(i)           ms5611_c[i] = prom(i)
- 
   def prom(coef_num):​   def prom(coef_num):​
       rxbuff = i2c.readfrom_mem(GY63_ADDRESS,​ 0XA0+coef_num*2,​ 3)       rxbuff = i2c.readfrom_mem(GY63_ADDRESS,​ 0XA0+coef_num*2,​ 3)
-      return rxbuff[0] << 8 | rxbuff[1] +      return rxbuff[0] << 8 | rxbuff[1] ​    
-     +  def read_pressure(): ​  ​ 
-  def read_pressure():​ +      i2c.writeto(GY63_ADDRESS,​ bytearray([0x48])) ​  ​ 
-    ​ +      time.sleep(0.02) ​    
-      i2c.writeto(GY63_ADDRESS,​ bytearray([0x48])) +      data = i2c.readfrom_mem(GY63_ADDRESS,​ 0, 3)     
-    ​ +      pressure = (data[0] << 16) + (data[1] << 8) + data[2] ​   ​
-      time.sleep(0.02) +
-     +
-      data = i2c.readfrom_mem(GY63_ADDRESS,​ 0, 3) +
-     +
-      pressure = (data[0] << 16) + (data[1] << 8) + data[2] +
-    +
       return pressure       return pressure
- 
   def read_temperature():​   def read_temperature():​
- +      ​i2c.writeto(GY63_ADDRESS,​ bytearray([0x58])) ​  ​ 
-      ​i2c.writeto(GY63_ADDRESS,​ bytearray([0x58])) +      time.sleep(0.02) ​    
-    ​ +      data = i2c.readfrom_mem(GY63_ADDRESS,​ 0, 3)     
-      time.sleep(0.02) +      temperature = (data[0] << 16) + (data[1] << 8) + data[2] ​  ​
-     +
-      data = i2c.readfrom_mem(GY63_ADDRESS,​ 0, 3) +
-     +
-      temperature = (data[0] << 16) + (data[1] << 8) + data[2] +
-    ​+
       return temperature       return temperature
- 
- 
   def calculate(ut,​ up):   def calculate(ut,​ up):
- 
       dT = ut - (ms5611_c[5] << 8)       dT = ut - (ms5611_c[5] << 8)
       off = (ms5611_c[2] << 16) + ((ms5611_c[4]*dT) >> 7)       off = (ms5611_c[2] << 16) + ((ms5611_c[4]*dT) >> 7)
       sens = (ms5611_c[1] << 15) + ((ms5611_c[3]*dT) >> 8)       sens = (ms5611_c[1] << 15) + ((ms5611_c[3]*dT) >> 8)
-      temp = 2000 + ((dT*ms5611_c[6]) >> 23) +      temp = 2000 + ((dT*ms5611_c[6]) >> 23)   ​
-    ​+
       if (temp < 2000):       if (temp < 2000):
           delt = temp - 2000           delt = temp - 2000
           delt = 5 * delt *delt           delt = 5 * delt *delt
           off = off - (delt >> 1)           off = off - (delt >> 1)
-          sens = sens - (delt >> 2) +          sens = sens - (delt >> 2)   ​
-    ​+
       if (temp < -1500):       if (temp < -1500):
           delt = temp + 1500           delt = temp + 1500
           delt = delt * delt           delt = delt * delt
           off = off - (7 * delt)           off = off - (7 * delt)
-          sens = sens - ((11 * delt) >> 1) +          sens = sens - ((11 * delt) >> 1)   ​
-    ​+
       temp = temp - ((dT*dT) >> 31)       temp = temp - ((dT*dT) >> 31)
       press = (((int(up)*sens) >> 21) - off) >> 15       press = (((int(up)*sens) >> 21) - off) >> 15
-      return press, temp +      return press, temp   ​
-    ​+
   init()   init()
   while True:   while True:
行 164: 行 139:
       pressure, temperature = calculate(ut,​ up)       pressure, temperature = calculate(ut,​ up)
       print("​Pressure:",​ pressure)       print("​Pressure:",​ pressure)
-      print("​Temperature:",​ temperature) +      print("​Temperature:",​ temperature) ​   ​
-    +
       time.sleep(1)       time.sleep(1)
 +    ​
 +结果显示:
 +     
 +{{ ::​qiya.png?​500 |}}