目前我正在使用覆盆子pi的氣壓傳感器。我使用的是延時和我的代碼看起來像這樣,如何在Python中使用時間延遲時在兩個輸出之間放置空格?
import smbus
import time
while True:
try:
# Get I2C bus
bus = smbus.SMBus(1)
# BMP280 address, 0x76(118)
# Read data back from 0x88(136), 24 bytes
b1 = bus.read_i2c_block_data(0x76, 0x88, 24)
# Convert the data
# Temp coefficents
dig_T1 = b1[1] * 256 + b1[0]
dig_T2 = b1[3] * 256 + b1[2]
if dig_T2 > 32767 :
dig_T2 -= 65536
dig_T3 = b1[5] * 256 + b1[4]
if dig_T3 > 32767 :
dig_T3 -= 65536
# Pressure coefficents
dig_P1 = b1[7] * 256 + b1[6]
dig_P2 = b1[9] * 256 + b1[8]
if dig_P2 > 32767 :
dig_P2 -= 65536
dig_P3 = b1[11] * 256 + b1[10]
if dig_P3 > 32767 :
dig_P3 -= 65536
dig_P4 = b1[13] * 256 + b1[12]
if dig_P4 > 32767 :
dig_P4 -= 65536
dig_P5 = b1[15] * 256 + b1[14]
if dig_P5 > 32767 :
dig_P5 -= 65536
dig_P6 = b1[17] * 256 + b1[16]
if dig_P6 > 32767 :
dig_P6 -= 65536
dig_P7 = b1[19] * 256 + b1[18]
if dig_P7 > 32767 :
dig_P7 -= 65536
dig_P8 = b1[21] * 256 + b1[20]
if dig_P8 > 32767 :
dig_P8 -= 65536
dig_P9 = b1[23] * 256 + b1[22]
if dig_P9 > 32767 :
dig_P9 -= 65536
# BMP280 address, 0x76(118)
# Select Control measurement register, 0xF4(244)
# 0x27(39) Pressure and Temperature Oversampling rate = 1
# Normal mode
bus.write_byte_data(0x76, 0xF4, 0x27)
# BMP280 address, 0x76(118)
# Select Configuration register, 0xF5(245)
# 0xA0(00) Stand_by time = 1000 ms
bus.write_byte_data(0x76, 0xF5, 0xA0)
time.sleep(0.5)
# BMP280 address, 0x76(118)
# Read data back from 0xF7(247), 8 bytes
# Pressure MSB, Pressure LSB, Pressure xLSB, Temperature MSB, Temperature LSB
# Temperature xLSB, Humidity MSB, Humidity LSB
data = bus.read_i2c_block_data(0x76, 0xF7, 8)
# Convert pressure and temperature data to 19-bits
adc_p = ((data[0] * 65536) + (data[1] * 256) + (data[2] & 0xF0))/16
adc_t = ((data[3] * 65536) + (data[4] * 256) + (data[5] & 0xF0))/16
# Temperature offset calculations
var1 = ((adc_t)/16384.0 - (dig_T1)/1024.0) * (dig_T2)
var2 = (((adc_t)/131072.0 - (dig_T1)/8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3)
t_fine = (var1 + var2)
cTemp = (var1 + var2)/5120.0
fTemp = cTemp * 1.8 + 32
# Pressure offset calculations
var1 = (t_fine/2.0) - 64000.0
var2 = var1 * var1 * (dig_P6)/32768.0
var2 = var2 + var1 * (dig_P5) * 2.0
var2 = (var2/4.0) + ((dig_P4) * 65536.0)
var1 = ((dig_P3) * var1 * var1/524288.0 + (dig_P2) * var1)/524288.0
var1 = (1.0 + var1/32768.0) * (dig_P1)
p = 1048576.0 - adc_p
p = (p - (var2/4096.0)) * 6250.0/var1
var1 = (dig_P9) * p * p/2147483648.0
var2 = p * (dig_P8)/32768.0
pressure = (p + (var1 + var2 + (dig_P7))/16.0)/100
# Output data to screen
print "Temperature in Celsius : %.2f C" %cTemp
print "Temperature in Fahrenheit : %.2f F" %fTemp
print "Pressure : %.2f hPa " %pressure
# add a short sleep here at the end...
sleep(1)
except KeyboardInterrupt:
# quit
sys.exit()
上面的代碼讓我在攝氏溫度,溫度華氏和壓力以一秒的按以下格式的延遲輸出。
Temp in C
Temp in F
Pressure
Temp in C
Temp in F
Pressure
Temp in C
Temp in F
Pressure
我想把一個間隙(我想要控制該間隙)當我使用循環和時間延遲在這種情況下(像一個換行)的各輸出集之間。我的輸出應該是這個樣子,
Temp in C
Temp in F
Pressure
Temp in C
Temp in F
Pressure
Temp in C
Temp in F
Pressure
我可以理解,通過將打印(「)會給出一個線空間,但有什麼辦法來調整這條線空間的大小?例如,如果行空間是1釐米,那麼如何才能改變它/它使至0.5cm或2釐米-1任何指導會有所幫助。 感謝。
是由一個'.read_i2c_block_data()'產生的輸出塊(包含所有3個變量)嗎?還是每個.read_i2c_block_data()只返回其中的1個友善嗎? – Guillaume
不,有一個輸出塊一次產生所有3個變量。 – John
好吧,那很簡單,只需在打印3個變量後打印一個空行。只是'print()' – Guillaume