驴友花雕
发表于 2021-7-13 11:52:01
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十一:看门狗定时器
实验串口返回情况
驴友花雕
发表于 2021-7-13 14:58:11
本帖最后由 驴友花雕 于 2021-7-13 15:00 编辑
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)
*/
#define Threshold 40 //数值越大,灵敏度更高
RTC_DATA_ATTR int bootCount = 0;
touch_pad_t touchPin;
//打印 ESP32 已经从睡梦中醒来的原因
void print_wakeup_reason() {
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch (wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("使用 RTC_IO 的外部信号引起的唤醒"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("使用 RTC_CNTL 的外部信号引起的唤醒"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("定时器引起的唤醒"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("触摸板引起的唤醒"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("ULP 程序引起的唤醒"); break;
default : Serial.printf("唤醒不是由深度睡眠引起的: %d\n", wakeup_reason); break;
}
}
//打印 ESP32 已经从睡梦中醒来的原因
void print_wakeup_touchpad() {
touchPin = esp_sleep_get_touchpad_wakeup_status();
switch (touchPin)
{
case 0: Serial.println("在 GPIO 4 上检测到触摸"); break;
case 1: Serial.println("在 GPIO 0 上检测到触摸"); break;
case 2: Serial.println("在 GPIO 2 上检测到触摸"); break;
case 3: Serial.println("在 GPIO 15 上检测到触摸"); break;
case 4: Serial.println("在 GPIO 13 上检测到触摸"); break;
case 5: Serial.println("在 GPIO 12 上检测到触摸"); break;
case 6: Serial.println("在 GPIO 14 上检测到触摸"); break;
case 7: Serial.println("在 GPIO 27 上检测到触摸"); break;
case 8: Serial.println("在 GPIO 33 上检测到触摸"); break;
case 9: Serial.println("在 GPIO 32 上检测到触摸"); break;
default : Serial.println("唤醒不是通过触摸板"); break;
}
}
void callback() {
//占位符回调函数
}
void setup() {
Serial.begin(115200);
delay(1000); //花一些时间打开串行监视器
//增加引导编号并在每次重启时打印
++bootCount;
Serial.println("Boot number: " + String(bootCount));
//也打印 ESP32 和触摸板的唤醒原因
print_wakeup_reason();
print_wakeup_touchpad();
//在触摸板 0 (GPIO4) 上设置中断
touchAttachInterrupt(T0, callback, Threshold);
//将触摸板配置为唤醒源
esp_sleep_enable_touchpad_wakeup();
//现在去睡觉
Serial.println(" 要休眠了");
esp_deep_sleep_start();
Serial.println("这永远不会被打印");
}
void loop() {
//这永远不会到达
}
驴友花雕
发表于 2021-7-13 15:01:52
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)
项目串口返回情况
驴友花雕
发表于 2021-7-13 15:09:54
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)
实验场景图
驴友花雕
发表于 2021-7-13 15:26:29
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)
*/
#define uS_TO_S_FACTOR 1000000ULL/* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP5 //时间ESP32将转入休眠状态(以秒为单位)
RTC_DATA_ATTR int bootCount = 0;
/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason() {
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch (wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n", wakeup_reason); break;
}
}
void setup() {
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor
//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));
//Print the wakeup reason for ESP32
print_wakeup_reason();
/*
First we configure the wake up source
We set our ESP32 to wake up every 5 seconds
*/
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
" Seconds");
/*
Next we decide what all peripherals to shut down/keep on
By default, ESP32 will automatically power down the peripherals
not needed by the wakeup source, but if you want to be a poweruser
this is for you. Read in detail at the API docs
http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
Left the line commented as an example of how to configure peripherals.
The line below turns off all RTC peripherals in deep sleep.
*/
//esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
//Serial.println("Configured all RTC Peripherals to be powered down in sleep");
/*
Now that we have setup a wake cause and if needed setup the
peripherals state in deep sleep, we can now start going to
deep sleep.
In the case that no wake up sources were provided but deep
sleep was started, it will sleep forever unless hardware
reset occurs.
*/
Serial.println("Going to sleep now");
Serial.flush();
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop() {
//This is not going to be called
}
驴友花雕
发表于 2021-7-13 15:29:00
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)
项目串口返回情况
驴友花雕
发表于 2021-7-13 15:56:47
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)
*/
#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 十六进制
RTC_DATA_ATTR int bootCount = 0;
/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch(wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}
void setup(){
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor
//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));
//Print the wakeup reason for ESP32
print_wakeup_reason();
/*
First we configure the wake up source
We set our ESP32 to wake up for an external trigger.
There are two types for ESP32, ext0 and ext1 .
ext0 uses RTC_IO to wakeup thus requires RTC peripherals
to be on while ext1 uses RTC Controller so doesnt need
peripherals to be powered on.
Note that using internal pullups/pulldowns also requires
RTC peripherals to be turned on.
*/
esp_sleep_enable_ext0_wakeup(GPIO_NUM_34,1); //1 = High, 0 = Low
//If you were to use ext1, you would use it like
//esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);
//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}
驴友花雕
发表于 2021-7-13 16:05:36
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)
项目串口返回情况
驴友花雕
发表于 2021-7-13 16:06:16
本帖最后由 驴友花雕 于 2021-7-13 16:15 编辑
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)
实验场景图
驴友花雕
发表于 2021-7-13 17:06:03
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT
*/
#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif
#ifndef LED_BUILTIN
#define LED_BUILTIN 2
#endif
// 为 Blink 和 AnalogRead 定义两个任务
void TaskBlink( void *pvParameters );
void TaskAnalogReadA3( void *pvParameters );
// the setup function runs once when you press reset or power the board
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
// Now set up two tasks to run independently.
xTaskCreatePinnedToCore(
TaskBlink
,"TaskBlink" // A name just for humans
,1024// This stack size can be checked & adjusted by reading the Stack Highwater
,NULL
,2// Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
,NULL
,ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
TaskAnalogReadA3
,"AnalogReadA3"
,1024// Stack size
,NULL
,1// Priority
,NULL
,ARDUINO_RUNNING_CORE);
// Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
}
void loop()
{
// Empty. Things are done in Tasks.
}
/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/
void TaskBlink(void *pvParameters)// This is a task.
{
(void) pvParameters;
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
If you want to know what pin the on-board LED is connected to on your ESP32 model, check
the Technical Specs of your board.
*/
// initialize digital LED_BUILTIN on pin 13 as an output.
pinMode(LED_BUILTIN, OUTPUT);
for (;;) // A Task shall never return or exit.
{
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
vTaskDelay(1000);// one tick delay (15ms) in between reads for stability
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
vTaskDelay(1000);// one tick delay (15ms) in between reads for stability
}
}
void TaskAnalogReadA3(void *pvParameters)// This is a task.
{
(void) pvParameters;
/*
AnalogReadSerial
Reads an analog input on pin A4, prints the result to the serial monitor.
Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
Attach the center pin of a potentiometer to pin A3, and the outside pins to +5V and ground.
This example code is in the public domain.
*/
for (;;)
{
// read the input on analog pin 4:
int sensorValueA4 = analogRead(4);
// print out the value you read:
Serial.println(sensorValueA4);
vTaskDelay(100);// one tick delay (15ms) in between reads for stability
}
}
驴友花雕
发表于 2021-7-13 17:09:43
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT
项目串口返回情况
驴友花雕
发表于 2021-7-13 17:11:31
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验串口绘图器返回情况
驴友花雕
发表于 2021-7-13 17:17:37
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
实验接脚:2脚为板载LED,4脚接电位器OUT
实验场景图
驴友花雕
发表于 2021-7-13 18:13:03
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十六:打印 ESP32 上次复位原因
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十六:打印 ESP32 上次复位原因
*/
#include <rom/rtc.h>
#define uS_TO_S_FACTOR 1000000/* Conversion factor for micro seconds to seconds */
void print_reset_reason(RESET_REASON reason){
switch ( reason) {
case 1 : Serial.println ("POWERON_RESET"); break; /**<1,Vbat power on reset*/
case 3 : Serial.println ("SW_RESET"); break; /**<3,Software reset digital core*/
case 4 : Serial.println ("OWDT_RESET"); break; /**<4,Legacy watch dog reset digital core*/
case 5 : Serial.println ("DEEPSLEEP_RESET"); break; /**<5,Deep Sleep reset digital core*/
case 6 : Serial.println ("SDIO_RESET"); break; /**<6,Reset by SLC module, reset digital core*/
case 7 : Serial.println ("TG0WDT_SYS_RESET"); break; /**<7,Timer Group0 Watch dog reset digital core*/
case 8 : Serial.println ("TG1WDT_SYS_RESET"); break; /**<8,Timer Group1 Watch dog reset digital core*/
case 9 : Serial.println ("RTCWDT_SYS_RESET"); break; /**<9,RTC Watch dog Reset digital core*/
case 10 : Serial.println ("INTRUSION_RESET"); break; /**<10, Instrusion tested to reset CPU*/
case 11 : Serial.println ("TGWDT_CPU_RESET"); break; /**<11, Time Group reset CPU*/
case 12 : Serial.println ("SW_CPU_RESET"); break; /**<12, Software reset CPU*/
case 13 : Serial.println ("RTCWDT_CPU_RESET"); break; /**<13, RTC Watch dog Reset CPU*/
case 14 : Serial.println ("EXT_CPU_RESET"); break; /**<14, for APP CPU, reseted by PRO CPU*/
case 15 : Serial.println ("RTCWDT_BROWN_OUT_RESET"); break; /**<15, Reset when the vdd voltage is not stable*/
case 16 : Serial.println ("RTCWDT_RTC_RESET"); break; /**<16, RTC Watch dog reset digital core and rtc module*/
default : Serial.println ("NO_MEAN");
}
}
void verbose_print_reset_reason(RESET_REASON reason){
switch ( reason){
case 1: Serial.println ("Vbat power on reset"); break;
case 3: Serial.println ("Software reset digital core"); break;
case 4: Serial.println ("Legacy watch dog reset digital core"); break;
case 5: Serial.println ("Deep Sleep reset digital core"); break;
case 6: Serial.println ("Reset by SLC module, reset digital core"); break;
case 7: Serial.println ("Timer Group0 Watch dog reset digital core"); break;
case 8: Serial.println ("Timer Group1 Watch dog reset digital core"); break;
case 9: Serial.println ("RTC Watch dog Reset digital core"); break;
case 10 : Serial.println ("Instrusion tested to reset CPU"); break;
case 11 : Serial.println ("Time Group reset CPU"); break;
case 12 : Serial.println ("Software reset CPU"); break;
case 13 : Serial.println ("RTC Watch dog Reset CPU"); break;
case 14 : Serial.println ("for APP CPU, reseted by PRO CPU"); break;
case 15 : Serial.println ("Reset when the vdd voltage is not stable"); break;
case 16 : Serial.println ("RTC Watch dog reset digital core and rtc module"); break;
default : Serial.println ("NO_MEAN");
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
delay(2000);
Serial.println("CPU0 reset reason:");
print_reset_reason(rtc_get_reset_reason(0));
verbose_print_reset_reason(rtc_get_reset_reason(0));
Serial.println("CPU1 reset reason:");
print_reset_reason(rtc_get_reset_reason(1));
verbose_print_reset_reason(rtc_get_reset_reason(1));
// Set ESP32 to go to deep sleep to see a variation
// in the reset reason. Device will sleep for 5 seconds.
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
Serial.println("Going to sleep");
esp_deep_sleep(5 * uS_TO_S_FACTOR);
}
void loop() {
// put your main code here, to run repeatedly:
}
/*
Example Serial Log:
====================
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
CPU0 reset reason:
RTCWDT_RTC_RESET
RTC Watch dog reset digital core and rtc module
CPU1 reset reason:
EXT_CPU_RESET
for APP CPU, reseted by PRO CPU
Going to sleep
ets Jun8 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
CPU0 reset reason:
DEEPSLEEP_RESET
Deep Sleep reset digital core
CPU1 reset reason:
EXT_CPU_RESET
for APP CPU, reseted by PRO CPU
Going to sleep
ets Jun8 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
CPU0 reset reason:
DEEPSLEEP_RESET
Deep Sleep reset digital core
CPU1 reset reason:
EXT_CPU_RESET
for APP CPU, reseted by PRO CPU
Going to sleep
*/
驴友花雕
发表于 2021-7-13 18:16:58
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十七:Wemos D1 R32 ESP32开发板项目二十六:打印 ESP32 上次复位原因
项目串口返回情况
驴友花雕
发表于 2021-7-13 18:47:05
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十七:实现RGB-LED颜色的变换
实验接脚:LED R接14,B接27,G接16
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十七:实现RGB-LED颜色的变换
实验接脚:LED R接14,B接27,G接16
*/
uint8_t ledR = 14;
uint8_t ledG = 27;
uint8_t ledB = 16;
void setup(){
Serial.begin(115200);
delay(10);
ledcAttachPin(ledR, 1); //引脚的通道
ledcAttachPin(ledG, 2);
ledcAttachPin(ledB, 3);
ledcSetup(1, 12000, 8); // 12 kHz PWM,8位的分辨率
ledcSetup(2, 12000, 8);
ledcSetup(3, 12000, 8);
}
void loop(){
//红色
ledcWrite(1, 0);
ledcWrite(2, 255);
ledcWrite(3, 255);
delay(2000);
//绿色
ledcWrite(1, 255);
ledcWrite(2, 0);
ledcWrite(3, 255);
delay(2000);
//蓝色
ledcWrite(1, 255);
ledcWrite(2, 255);
ledcWrite(3, 0);
delay(2000);
}
驴友花雕
发表于 2021-7-13 19:08:32
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十七:实现RGB-LED颜色的变换
实验接脚:LED R接14,B接27,G接16
实验场景图
驴友花雕
发表于 2021-7-14 06:54:00
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十八:ESP32通过PWM控制蜂鸣器
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十八:ESP32通过PWM控制蜂鸣器
实验接脚:无源蜂鸣器接12
*/
int freq = 2000;
int channel = 0;
int resolution = 8;
void setup() {
Serial.begin(115200);
ledcSetup(channel, freq, resolution);
ledcAttachPin(12, channel);
}
void loop() {
ledcWriteTone(channel, 2000);
for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 10) {
Serial.println(dutyCycle);
ledcWrite(channel, dutyCycle);
delay(1000);
}
ledcWrite(channel, 125);
for (int freq = 255; freq < 10000; freq = freq + 250) {
Serial.println(freq);
ledcWriteTone(channel, freq);
delay(1000);
}
}
驴友花雕
发表于 2021-7-14 07:10:18
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十八:ESP32通过PWM控制蜂鸣器
实验接脚:无源蜂鸣器接12
实验场景图
驴友花雕
发表于 2021-7-14 08:18:23
驴友花雕
发表于 2021-7-14 10:07:02
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十九:OLED液晶屏显示“Hello World”
实验接脚: 0.96寸OLED液晶屏SDA接22, SCL接21
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十七:Wemos D1 R32 ESP32开发板
项目二十九:OLED液晶屏显示“Hello World”
实验接脚: 0.96寸OLED液晶屏SDA接22, SCL接21
*/
#include "ssd1306.h"
void setup() {
//如果需要使用 128x32 显示,请将下面的行替换为 ssd1306_128x32_i2c_init()
ssd1306_128x64_i2c_init();
ssd1306_fillScreen(0x00);
ssd1306_setFixedFont(ssd1306xled_font6x8);
ssd1306_printFixed (0, 16, " Hello World", STYLE_NORMAL);
}
void loop() {
}
页:
1
2
3
4
[5]
6
7
8
9
10