Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。
Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台
Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。
Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。
"""ILI9341 demo (fonts 8x8).""" from time import sleep from ili9341 import Display, color565 from machine import Pin, SPI # type: ignore from xglcd_font import XglcdFont from machine import Pin,I2C import time import aht10 from cnfont import Chine """Test code.""" spi = SPI(1, baudrate=20000000, sck=Pin(4), mosi=Pin(5)) display = Display(spi, dc=Pin(16), cs=Pin(18), rst=Pin(15), rotation=180) addr = 0x38 # aht10 I2C地址 i2c = I2C(scl = Pin(11),sda = Pin(12),freq = 1_000_000) # addr = hex(i2c.scan()[0]) aht = aht10.AHT10(i2c,0,addr) espresso_dolce = XglcdFont('fonts/EspressoDolce18x24.c', 18, 24) display.clear() #16*32字体函数 def ByteOpera16x32(num,dat): byte= [0x01,0x02,0x04,0x8,0x10,0x20,0x40,0x80] if dat&byte[num]: return 1 else: return 0 def LcdShowCh_16x32(n, x_axis, y_axis): for i in range(4): for a in range(16): for b in range(8): # 8个汉字 if(ByteOpera16x32(b,Chine.chine[n*64+i*16+a])): display.draw_pixel(x_axis+a,y_axis+i*8+b,color565(255,0,255)) else: display.draw_pixel(x_axis+a,y_axis+i*8+b,color565(0,0,0)) # 显示汉字 for i in range(8): # 8指得是8个汉字 LcdShowCh_16x32(i,(i*16)+50,10) def test(): humi = aht.humidity() # 湿度 temp = aht.temperature() # 温度 #Lcd12864_Write_Text(0x88,str("humi = %.2f"%humi)) #Lcd12864_Write_Text(0x98,str("temp = %.2f"%temp)) print("湿度 = %.2f \t 温度 = %.2f" %(humi,temp)) display.draw_text(0, 70, "WD = %.2f"%temp, espresso_dolce,color565(0, 255, 255)) display.draw_text(0, 110, "SD = %.2f"%humi, espresso_dolce,color565(0, 255, 255)) #display.draw_text8x8(0, 0, '=====================================', color565(255, 0, 255)) display.draw_text8x8(0, 55, '====================================', color565(255, 255, 0)) display.draw_text8x8(0, 310, '=====================================', color565(255, 255, 0)) time.sleep_ms(1000) #display.clear() #sleep(15) #display.cleanup() while True: test()
字库文件 cnfont.py
class Chine: chine = [ 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x00, 0x00,0x00,0x00,0x00,0xFF,0x22,0x22,0x22,0x22,0x22,0x22,0x5E,0x00,0x00,0x00,0x00, 0x00,0x00,0xFF,0x02,0x02,0xF2,0x12,0x12,0x12,0x12,0xF2,0x02,0x02,0xFF,0x00,0x00, 0x00,0x00,0x7F,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x07,0x10,0x20,0x7F,0x00,0x00,#高#0*/ 0x00,0x40,0x80,0xF4,0x08,0x80,0x40,0x40,0x40,0x40,0xFC,0x40,0x40,0x60,0x40,0x00, 0x00,0x20,0x27,0xFF,0x20,0x33,0x20,0x40,0x44,0x44,0x7F,0x44,0x44,0x46,0x60,0x00, 0x00,0x80,0x78,0xFF,0x01,0x0E,0x00,0x00,0xFE,0x12,0x12,0x12,0x12,0xFF,0x00,0x00, 0x00,0x03,0x00,0x7F,0x00,0x00,0x00,0x00,0x7F,0x01,0x01,0x21,0x61,0x3F,0x00,0x00,#精#1*/ 0x00,0x00,0xE0,0x40,0x40,0x40,0xC0,0x44,0x78,0x40,0xC0,0x40,0x40,0x60,0x40,0x00, 0x00,0x00,0xFF,0x00,0x08,0x08,0xFF,0x09,0x08,0x08,0x08,0xFF,0x08,0x0C,0x00,0x00, 0x00,0x00,0xFF,0x00,0x00,0x08,0x1B,0xE9,0x09,0x09,0xC9,0x39,0x08,0x00,0x00,0x00, 0x00,0x3C,0x03,0x40,0x40,0x20,0x10,0x18,0x0D,0x07,0x18,0x18,0x30,0x70,0x00,0x00,#度#2*/ 0x00,0x00,0x08,0x70,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00, 0x00,0x08,0x70,0x80,0x7F,0x00,0xFF,0x42,0x42,0x42,0x42,0x42,0xFF,0x00,0x00,0x00, 0x00,0x40,0xE0,0x1F,0x00,0xFC,0x08,0x08,0xF8,0x08,0xF8,0x08,0x08,0xFC,0x00,0x00, 0x00,0x00,0x3F,0x20,0x20,0x3F,0x20,0x20,0x3F,0x20,0x3F,0x20,0x20,0x3F,0x38,0x00,#温#3*/ 0x00,0x00,0x18,0xF0,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00, 0x00,0x0C,0x78,0xC0,0x3E,0x00,0xFF,0x22,0xA2,0x22,0xA2,0x22,0x22,0x7F,0x00,0x00, 0x00,0x20,0xF0,0x0F,0x00,0x18,0xE0,0x00,0xFF,0x00,0xFF,0x01,0xE0,0x18,0x04,0x00, 0x00,0x00,0x1F,0x00,0x20,0x20,0x23,0x20,0x3F,0x20,0x3F,0x21,0x20,0x20,0x30,0x00,#湿#4*/ 0x00,0x00,0xE0,0x40,0x40,0x40,0xC0,0x44,0x78,0x40,0xC0,0x40,0x40,0x60,0x40,0x00, 0x00,0x00,0xFF,0x00,0x08,0x08,0xFF,0x09,0x08,0x08,0x08,0xFF,0x08,0x0C,0x00,0x00, 0x00,0x00,0xFF,0x00,0x00,0x08,0x1B,0xE9,0x09,0x09,0xC9,0x39,0x08,0x00,0x00,0x00, 0x00,0x3C,0x03,0x40,0x40,0x20,0x10,0x18,0x0D,0x07,0x18,0x18,0x30,0x70,0x00,0x00,#度#5*/ 0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0xC0,0x3C,0x60,0x80,0x00,0x00,0x00,0x00, 0x00,0x02,0x02,0xFF,0x62,0xC2,0x32,0x4C,0x43,0x40,0x40,0x43,0x4E,0x18,0x18,0x00, 0x00,0x70,0x0F,0xFF,0x00,0x03,0x08,0xF0,0x00,0x1E,0xE0,0x80,0x7F,0x02,0x00,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x20,0x23,0x20,0x20,0x20,0x1F,0x20,0x10,0x10,0x00,#检#6*/ 0x00,0x00,0x18,0xF0,0x00,0xF0,0x10,0x10,0x10,0xF8,0x00,0x80,0x80,0xFC,0x08,0x00, 0x00,0x0C,0x38,0xC0,0x3C,0xFF,0x00,0xFE,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00, 0x00,0x20,0xE0,0x1F,0x00,0x7F,0xC0,0x3F,0x00,0x3F,0x00,0xFF,0x00,0xFF,0x00,0x00, 0x00,0x00,0x1F,0x40,0x30,0x0C,0x03,0x00,0x03,0x3C,0x00,0x10,0x30,0x7F,0x00,0x00,#测#7*/ ]
aht10.py
import time from math import log # AHT10 Library for MicroPython on ESP32 # Author: Sean Yong # Date: 23rd December, 2019 # Version 1.0 #CONSTANTS AHT10_ADDRESS = 0x38 # 0111000 (7bit address) AHT10_READ_DELAY_MS = 75 # Time it takes for AHT to collect data AHT_TEMPERATURE_CONST = 200 AHT_TEMPERATURE_OFFSET = 50 KILOBYTE_CONST = 1048576 CMD_INITIALIZE = bytearray([0xE1, 0x08, 0x00]) CMD_MEASURE = bytearray([0xAC, 0x33, 0x00]) FARENHEIT_MULTIPLIER = 9/5 FARENHEIT_OFFSET = 32 class AHT10: def __init__(self, i2c, mode=0, address=AHT10_ADDRESS): if i2c is None: raise ValueError('I2C object required.') if mode is not (0 and 1): raise ValueError('Mode must be either 0 for Celsius or 1 Farenheit') self.i2c = i2c self.address = address self.i2c.writeto(address, CMD_INITIALIZE) self.readings_raw = bytearray(8) self.results_parsed = [0, 0] self.mode = mode # 0 for Celsius, 1 for Farenheit def read_raw(self): self.i2c.writeto(self.address, CMD_MEASURE) time.sleep_ms(AHT10_READ_DELAY_MS) self.readings_raw = self.i2c.readfrom(AHT10_ADDRESS, 6) self.results_parsed[0] = self.readings_raw[1] << 12 | self.readings_raw[2] << 4 | self.readings_raw[3] >> 4 self.results_parsed[1] = (self.readings_raw[3] & 0x0F) << 16 | self.readings_raw[4] << 8 | self.readings_raw[5] def humidity(self): self.read_raw() return (self.results_parsed[0] / KILOBYTE_CONST) * 100 def temperature(self): self.read_raw() if self.mode is 0: return (self.results_parsed[1] / KILOBYTE_CONST) * AHT_TEMPERATURE_CONST - AHT_TEMPERATURE_OFFSET else: return ((self.results_parsed[1] / KILOBYTE_CONST) * AHT_TEMPERATURE_CONST - AHT_TEMPERATURE_OFFSET) * FARENHEIT_MULTIPLIER + FARENHEIT_OFFSET def set_mode(self, mode): if mode is not (0 or 1): raise ValueError('Mode must be either 0 for Celsius or 1 Farenheit') self.mode = mode def print(self): print("Temperature: " + str(self.temperature()) + ("C","F")[self.mode] + ", Humidity: " + str(self.humidity())) def dew_point(self): h = self.humidity() prev_mode = self.mode self.mode = 0 h = (log(h, 10) - 2) / 0.4343 + (17.62 * t) / (243.12 + t) return 243.12 * h / (17.62 - h)
完整源码:链接: https://pan.baidu.com/s/1DU0g1bAIRQo8l_Xv9smliQ?pwd=1gjj
提取码: 1gjj 复制这段内容后打开百度网盘手机App,操作更方便哦
淘宝链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17584875593.11.5a4e49deQMWcmI&id=654657725650
取模软件PCtoLCD2002链接: https://pan.baidu.com/s/1sntqfzPIlxcbHhgCn9ai6g?pwd=2sd8
Copyright © 2014 ESP56.com All Rights Reserved
执行时间: 0.0079391002655029 seconds