最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

低成本氣壓式高度計(jì)制作教程(代碼與接線部分)

2023-07-12 05:06 作者:洋洋柚Y  | 我要投稿

bmp.py


from micropython import const

from machine import I2C


BMP280_I2C_ADDR = const(0x76)


class BMP280():

? ? def __init__(self, i2c):

? ? ? ? self.i2c = i2c

? ? ? ? self.tb = bytearray(1)

? ? ? ? self.rb = bytearray(1)

? ? ? ? self.dig_T1 = self.get2Reg(0x88)

? ? ? ? self.dig_T2 = self.short(self.get2Reg(0x8A))

? ? ? ? self.dig_T3 = self.short(self.get2Reg(0x8C))

? ? ? ? self.dig_P1 = self.get2Reg(0x8E)

? ? ? ? self.dig_P2 = self.short(self.get2Reg(0x90))

? ? ? ? self.dig_P3 = self.short(self.get2Reg(0x92))

? ? ? ? self.dig_P4 = self.short(self.get2Reg(0x94))

? ? ? ? self.dig_P5 = self.short(self.get2Reg(0x96))

? ? ? ? self.dig_P6 = self.short(self.get2Reg(0x98))

? ? ? ? self.dig_P7 = self.short(self.get2Reg(0x9A))

? ? ? ? self.dig_P8 = self.short(self.get2Reg(0x9C))

? ? ? ? self.dig_P9 = self.short(self.get2Reg(0x9E))

? ? ? ? self.mode = 3

? ? ? ? self.osrs_p = 3

? ? ? ? self.osrs_t = 1

? ? ? ? self.setReg(0xF4, 0x2F)

? ? ? ? self.setReg(0xF5, 0x0C)

? ? ? ? self.filter = 3

? ? ? ? self.T = 0

? ? ? ? self.P = 0

? ? ? ? self.version = '1.0'


? ? def short(self, dat):

? ? ? ? if dat > 32767:

? ? ? ? ? ? return dat - 65536

? ? ? ? else:

? ? ? ? ? ? return dat


? ? # set reg

? ? def setReg(self, reg, dat):

? ? ? ? self.tb[0] = dat

? ? ? ? self.i2c.writeto_mem(BMP280_I2C_ADDR, reg, self.tb)


? ? # get reg

? ? def getReg(self, reg):

? ? ? ? self.i2c.readfrom_mem_into(BMP280_I2C_ADDR, reg, self.rb)

? ? ? ? return self.rb[0]


? ? # get two reg

? ? def get2Reg(self, reg):

? ? ? ? return self.getReg(reg) + self.getReg(reg+1) * 256


? ? def get(self):

? ? ? ? adc_T = (self.getReg(0xFA)<<12) + (self.getReg(0xFB)<<4) + (self.getReg(0xFC)>>4)

? ? ? ? var1 = (((adc_T>>3)-(self.dig_T1<<1))*self.dig_T2)>>11

? ? ? ? var2 = (((((adc_T>>4)-self.dig_T1)*((adc_T>>4) - self.dig_T1))>>12)*self.dig_T3)>>14

? ? ? ? t = var1+var2

? ? ? ? self.T = ((t * 5 + 128) >> 8)/100

? ? ? ? var1 = (t>>1) - 64000

? ? ? ? var2 = (((var1>>2) * (var1>>2)) >> 11 ) * self.dig_P6

? ? ? ? var2 = var2 + ((var1*self.dig_P5)<<1)

? ? ? ? var2 = (var2>>2)+(self.dig_P4<<16)

? ? ? ? var1 = (((self.dig_P3*((var1>>2)*(var1>>2))>>13)>>3) + (((self.dig_P2) * var1)>>1))>>18

? ? ? ? var1 = ((32768+var1)*self.dig_P1)>>15

? ? ? ? if var1 == 0:

? ? ? ? ? ? return? # avoid exception caused by division by zero

? ? ? ? adc_P = (self.getReg(0xF7)<<12) + (self.getReg(0xF8)<<4) + (self.getReg(0xF9)>>4)

? ? ? ? p=((1048576-adc_P)-(var2>>12))*3125

? ? ? ? if p < 0x80000000:

? ? ? ? ? ? p = (p << 1) // var1

? ? ? ? else:

? ? ? ? ? ? p = (p // var1) * 2

? ? ? ? var1 = (self.dig_P9 * (((p>>3)*(p>>3))>>13))>>12

? ? ? ? var2 = (((p>>2)) * self.dig_P8)>>13

? ? ? ? self.P = p + ((var1 + var2 + self.dig_P7) >> 4)

? ? ? ? return [self.T, self.P]


? ? # get Temperature in Celsius

? ? def getTemp(self):

? ? ? ? self.get()

? ? ? ? return self.T


? ? # get Pressure in Pa

? ? def getPress(self):

? ? ? ? self.get()

? ? ? ? return self.P


? ? # Calculating absolute altitude

? ? def getAltitude(self):

? ? ? ? return 44330*(1-(self.getPress()/101325)**(1/5.255))


? ? # sleep mode

? ? def poweroff(self):

? ? ? ? self.setReg(0xF4, 0)


? ? # normal mode

? ? def poweron(self):

? ? ? ? self.setReg(0xF4, 0x2F)

===================================================================<<<<<<<

boot.py


import time

from machine import Pin,I2C

import _thread

import bmp280

def run():

? ? i2c = I2C(sda=Pin(6), scl=Pin(7))

? ? b = bmp280.BMP280(i2c)

? ? da = 0

? ? t=0

? ? try:

? ? ? ? while(1):

? ? ? ? ? ? da=da+1

? ? ? ? ? ? f = open("date"+str(da)+".txt",'r')

? ? ? ? ? ? f.close()

? ? except:

? ? ? ? f = open("date"+str(da)+".txt",'a')

? ? ? ? f.write('氣壓計(jì)數(shù)據(jù)記錄\n')

? ? ? ? f.write("記錄時(shí)間:? 原始溫度和氣壓:? 高度:\n")

? ? ? ? f.close()

? ? while(True):

? ? ? ? time.sleep_ms(100)

? ? ? ? f = open("date"+str(da)+".txt",'a')

? ? ? ? t=t+1

? ? ? ? y = b.get()

? ? ? ? p = b.getPress()

? ? ? ? h = (101325-p)*9/100

? ? ? ? dat = (str(t/10)+"? "+str(y)+"? "+str(h)+"\n")

? ? ? ? f.write(dat)

? ? ? ? #print(h)

? ? ? ? f.close()

pboot = Pin(9,Pin.IN)

def bled():

? ? led4 = Pin(12,Pin.OUT)

? ? led5 = Pin(13,Pin.OUT)

? ? while(True):

? ? ? ? led4.on()

? ? ? ? time.sleep_ms(500)

? ? ? ? led4.off()

? ? ? ? led5.on()

? ? ? ? time.sleep_ms(500)

? ? ? ? led5.off()

? ? ? ? #_thread.start_new_thread(bled,())

while(1):

? ? time.sleep_ms(100)

? ? if(pboot.value()==0):

? ? ? ? _thread.start_new_thread(bled,())

? ? ? ? run()

? ? ? ? break

關(guān)于接線圖

接線圖

SDA=IO06????????SCL=IO07????????VCC=3.3V????????GND=GND

==========????????==========?????????==========?????????==========?

電池3.7/4.2V????????正極=+5v????????負(fù)極=GND

==========????????==========?????????==========?????????==========?

最后模塊接到usb的5伏電源或者

把正5伏和gnd接到一塊滿電1s電池上

切記其他電池(2s-6s)只能插平衡頭來(lái)獲取1s電壓

否則直接看煙花



低成本氣壓式高度計(jì)制作教程(代碼與接線部分)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
建宁县| 渭南市| 都昌县| 象州县| 遂昌县| 白河县| 杨浦区| 常宁市| 凤台县| 江油市| 北川| 天长市| 尉氏县| 淮阳县| 略阳县| 朝阳区| 清镇市| 玉溪市| 漯河市| 左权县| 新乐市| 治县。| 嘉定区| 乌拉特后旗| 临武县| 鸡泽县| 闽清县| 昌吉市| 苍溪县| 尉氏县| 庆阳市| 资兴市| 繁峙县| 堆龙德庆县| 友谊县| 镶黄旗| 阿巴嘎旗| 浑源县| 家居| 托克逊县| 广宁县|