一、前言 最近要使用U8G2库驱动OLED屏显示大量中文字,并且都是在线获取的资料,就开始从网上寻找解决方案。找到的几乎都是手动制作字库导入的教程,无法解决我面临的问题。 事实上解决方案多年前就有人提出,并且已经合并到了主线的u8g2库当中,不需要任何操作就可以实现GB2312中文字库显示。 二、u8g2_wqy 适合 u8g2 的中文字体,采用文泉驿点阵宋体作为源本,提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。 区别 chinese1、chinese2、chinese3 为 u8g2 官方提供的小字符集。 gb2312 是完整的 GB2312 简体中文编码 字符集。 gb2312a 只有 GB2312 01、02 和 16 到 55 以及部分 08 区的编码。没有包含全角标点符号,如 !,请用半角 ! 代替。 gb2312b 只有 GB2312 01 到 55 的编码,其中 10 到 15 区为空区。比 gb2312a 多一些额外的符号。 字库大小 字体名字符数字节 u8g2_font_wqy12_t_chinese14119,491 u8g2_f....
from machine import Pin import time import tm1637 smg=tm1637.TM1637(clk=Pin(16),dio=Pin(17)) key1=Pin(14,Pin.IN,Pin.PULL_UP) n=0 def key1_irq(key1): global n time.sleep_ms(10) if key1.value()==0: n=0 #程序入口 if __name__=="__main__": key1.irq(key1_irq,Pin.IRQ_FALLING) while True: smg.number(n) n+=1 time.sleep(1)
时钟主机输出,从机输入主机输入,从机输出片选信号,由主机发送 SCLKMOSIMISOCS SCKSOMISIMOSS D0DINDOUTNSS DIDOSSEL SDISDO SISO D1 DC 有的也叫RS DC这个引脚是单片机控制OLED写入命令还是数据,因为它的数据线和命令线共用一根线MOSI即主机输出从机接收端口,这块屏的通信协议是一个没有MISO只有MOSI的SPI协议,即通过SPI连接MCU和OLED,DC接MCU,如果要向OLED写入命令,拉高DC,如果要向OLED写入数据,拉低DC(这是LCD5110的SPI协议,不知道和你这块屏是不是一样的,但是接口是一样的,可以参考5110)!
ESP32的优势之一是它的GPIO比ESP8266多得多。您不必兼顾或多复用IO。有几件事要注意,因此请仔细查看引脚分配图。 ESP32外围设备和I/O 尽管ESP32总共有48个GPIO引脚,但其中只有25个引出到开发板两侧的插头。这些引脚可以分配给各种外围职责,包括: ● 15个ADC通道:15个12位SAR ADC的通道。ADC范围可以在固件中设置为0-1V,0-1.4V,0-2V或0-4V ● 2个UART接口:一个用于串口加载代码。它们具有流控制,并支持IRDA! ● 25个PWM输出:25个通道PWM引脚用于调光LED或控制电动机。 ● 2个DAC通道:8位DAC可产生真正的模拟电压。 ● 3个SPI和1个I2C接口:有3个SPI和1个I2C接口,可连接各种传感器和外围设备。 ● 9个触摸引脚:9个GPIO具有电容触摸感应。 18 个模数转换器 (ADC) 通道 4 组SPI接口 3 组UART接口 1 组I2C接口 16 个PWM输出通道 2 个数模转换器 (DAC) 2 个I2S接口 10 个电容式感应 GPIO 16 个 RTC GPIO ESP32 内置2个霍尔传感....
esp32 中断demo如下: #include <stdio.h> #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "driver/gpio.h" const gpio_num_t gpio01 = 18; const gpio_num_t gpio02 = 17; static bool sta = true; static QueueHandle_t gpioEventQueue = NULL; static void IRAM_ATTR intrHandler(void* arg) { uint32_t gpio_num = (uint32_t)arg; xQueueSendFromISR(gpioEventQueue, &gpio_num, NULL); } static void gpioTaskExample(void* arg) { int ioNum = (int....
ESP32开发有很多方式 MicorePy,Arduino,Mixly等。不过本章讲的是乐心官方的开发工具ESP-IDF。下面我们点亮一盏led灯。 首先配置gpio口gpio_set_direction具体参数如下: esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode) 设置io输出gpio_set_level参数如下: esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level) 最终代码如下,idf默认代码执行入口为app_main。不要写错了 void app_main(void) { gpio_set_direction(LED_CLK, GPIO_MODE_OUTPUT); gpio_set_level(LED_CLK, 1); bool status = 0; while (true) { status = !status; gpio_set_level(LED_CLK, status); vTaskDelay(250 / p....
该文章已经加密。
平常DIY中,很多人都在使用ESP kits,常见的是开发板 ESP-8266,ESP32,NODEMCU等。 如果大家用的都很多,估计不会翻车。但我在画板子的时候,还是出了问题。经过多次验证,终于明白了官方所谓的管脚定义。所以,这篇文章就当个笔记,记录下一些心得体会。 0x01:首先,管脚定义: 来,一个一个说: 这里先说一个概念:pin,pin指的是芯片管脚号,不是名字,是芯片管脚脚序。在ESP-12F官方定义中,如下图。芯片右侧最上面那个脚是pin 1,然后往下依次到PIN8,然后最下面一排不算!!!不算!!!跳过!!从最左侧的最下面开始算,这个是PIN9!!依次往上累加,左侧最上为PIN16。 好了。了解了Pin,我们再来看这一张图: 这张图里面的英文标识及其GPIO标识是芯片管脚的功能名。其与管脚序号的对应关系及管脚功能是: 好的,接下来,我们讨论下在Arduino IDE中如何使用这些对应的IO口。 因为大家都用成熟的开发板,很少用最小电路来DIY,写程序。所以大家应该对这张图特别熟悉: 大家更多的是在Arduino IDE中用D0,D1,D2等管脚名字来使用它,比如:pi....
1、蓝牙探针有效距离为10米,决定了近场场景,且采集的mac地址也会出现假的,iphone xr是这样的,可以采集到小米手环,其它机型测试并不灵敏,没发现采集到 2、开发环境 配置“开发板管理器地址”:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json #define SCAN_TIME 60 // seconds #include <Arduino.h> #include <sstream> #include <BLEDevice.h> #include <BLEUtils.h> #include <BLEScan.h> #include <BLEAdvertisedDevice.h> std::stringstream ss; class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks { void....
该文章已经加密。