27157浏览
楼主: 驴友花雕

[ESP8266/ESP32] 最像Arduino Uno的ESP32开发板之WeMos D1 R32

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 11:52:01

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十一:看门狗定时器

  实验串口返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 14:58:11

本帖最后由 驴友花雕 于 2021-7-13 15:00 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)

  实验开源代码
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)
  5. */
  6. #define Threshold 40 //数值越大,灵敏度更高
  7. RTC_DATA_ATTR int bootCount = 0;
  8. touch_pad_t touchPin;
  9. //打印 ESP32 已经从睡梦中醒来的原因
  10. void print_wakeup_reason() {
  11.   esp_sleep_wakeup_cause_t wakeup_reason;
  12.   wakeup_reason = esp_sleep_get_wakeup_cause();
  13.   switch (wakeup_reason)
  14.   {
  15.     case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("使用 RTC_IO 的外部信号引起的唤醒"); break;
  16.     case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("使用 RTC_CNTL 的外部信号引起的唤醒"); break;
  17.     case ESP_SLEEP_WAKEUP_TIMER : Serial.println("定时器引起的唤醒"); break;
  18.     case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("触摸板引起的唤醒"); break;
  19.     case ESP_SLEEP_WAKEUP_ULP : Serial.println("ULP 程序引起的唤醒"); break;
  20.     default : Serial.printf("唤醒不是由深度睡眠引起的: %d\n", wakeup_reason); break;
  21.   }
  22. }
  23. //打印 ESP32 已经从睡梦中醒来的原因
  24. void print_wakeup_touchpad() {
  25.   touchPin = esp_sleep_get_touchpad_wakeup_status();
  26.   switch (touchPin)
  27.   {
  28.     case 0  : Serial.println("在 GPIO 4 上检测到触摸"); break;
  29.     case 1  : Serial.println("在 GPIO 0 上检测到触摸"); break;
  30.     case 2  : Serial.println("在 GPIO 2 上检测到触摸"); break;
  31.     case 3  : Serial.println("在 GPIO 15 上检测到触摸"); break;
  32.     case 4  : Serial.println("在 GPIO 13 上检测到触摸"); break;
  33.     case 5  : Serial.println("在 GPIO 12 上检测到触摸"); break;
  34.     case 6  : Serial.println("在 GPIO 14 上检测到触摸"); break;
  35.     case 7  : Serial.println("在 GPIO 27 上检测到触摸"); break;
  36.     case 8  : Serial.println("在 GPIO 33 上检测到触摸"); break;
  37.     case 9  : Serial.println("在 GPIO 32 上检测到触摸"); break;
  38.     default : Serial.println("唤醒不是通过触摸板"); break;
  39.   }
  40. }
  41. void callback() {
  42.   //占位符回调函数
  43. }
  44. void setup() {
  45.   Serial.begin(115200);
  46.   delay(1000); //花一些时间打开串行监视器
  47.   //增加引导编号并在每次重启时打印
  48.   ++bootCount;
  49.   Serial.println("Boot number: " + String(bootCount));
  50.   //也打印 ESP32 和触摸板的唤醒原因
  51.   print_wakeup_reason();
  52.   print_wakeup_touchpad();
  53.   //在触摸板 0 (GPIO4) 上设置中断
  54.   touchAttachInterrupt(T0, callback, Threshold);
  55.   //将触摸板配置为唤醒源
  56.   esp_sleep_enable_touchpad_wakeup();
  57.   //现在去睡觉
  58.   Serial.println(" 要休眠了");
  59.   esp_deep_sleep_start();
  60.   Serial.println("这永远不会被打印");
  61. }
  62. void loop() {
  63.   //这永远不会到达
  64. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 15:01:52

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)

  项目串口返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 15:09:54

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十二:深度睡眠触摸唤醒(这里设置T0唤醒)

  实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 15:26:29

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)
  5. */
  6. #define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
  7. #define TIME_TO_SLEEP  5        //时间ESP32将转入休眠状态(以秒为单位)
  8. RTC_DATA_ATTR int bootCount = 0;
  9. /*
  10.   Method to print the reason by which ESP32
  11.   has been awaken from sleep
  12. */
  13. void print_wakeup_reason() {
  14.   esp_sleep_wakeup_cause_t wakeup_reason;
  15.   wakeup_reason = esp_sleep_get_wakeup_cause();
  16.   switch (wakeup_reason)
  17.   {
  18.     case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
  19.     case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
  20.     case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
  21.     case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
  22.     case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
  23.     default : Serial.printf("Wakeup was not caused by deep sleep: %d\n", wakeup_reason); break;
  24.   }
  25. }
  26. void setup() {
  27.   Serial.begin(115200);
  28.   delay(1000); //Take some time to open up the Serial Monitor
  29.   //Increment boot number and print it every reboot
  30.   ++bootCount;
  31.   Serial.println("Boot number: " + String(bootCount));
  32.   //Print the wakeup reason for ESP32
  33.   print_wakeup_reason();
  34.   /*
  35.     First we configure the wake up source
  36.     We set our ESP32 to wake up every 5 seconds
  37.   */
  38.   esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  39.   Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
  40.                  " Seconds");
  41.   /*
  42.     Next we decide what all peripherals to shut down/keep on
  43.     By default, ESP32 will automatically power down the peripherals
  44.     not needed by the wakeup source, but if you want to be a poweruser
  45.     this is for you. Read in detail at the API docs
  46.     http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
  47.     Left the line commented as an example of how to configure peripherals.
  48.     The line below turns off all RTC peripherals in deep sleep.
  49.   */
  50.   //esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  51.   //Serial.println("Configured all RTC Peripherals to be powered down in sleep");
  52.   /*
  53.     Now that we have setup a wake cause and if needed setup the
  54.     peripherals state in deep sleep, we can now start going to
  55.     deep sleep.
  56.     In the case that no wake up sources were provided but deep
  57.     sleep was started, it will sleep forever unless hardware
  58.     reset occurs.
  59.   */
  60.   Serial.println("Going to sleep now");
  61.   Serial.flush();
  62.   esp_deep_sleep_start();
  63.   Serial.println("This will never be printed");
  64. }
  65. void loop() {
  66.   //This is not going to be called
  67. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 15:29:00

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十三:带定时器唤醒的简单深度睡眠(这里设置为五秒)

  项目串口返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 15:56:47

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)
  5. */
  6. #define BUTTON_PIN_BITMASK 0x200000000 // 2^33 十六进制
  7. RTC_DATA_ATTR int bootCount = 0;
  8. /*
  9. Method to print the reason by which ESP32
  10. has been awaken from sleep
  11. */
  12. void print_wakeup_reason(){
  13.   esp_sleep_wakeup_cause_t wakeup_reason;
  14.   wakeup_reason = esp_sleep_get_wakeup_cause();
  15.   switch(wakeup_reason)
  16.   {
  17.     case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
  18.     case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
  19.     case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
  20.     case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
  21.     case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
  22.     default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
  23.   }
  24. }
  25. void setup(){
  26.   Serial.begin(115200);
  27.   delay(1000); //Take some time to open up the Serial Monitor
  28.   //Increment boot number and print it every reboot
  29.   ++bootCount;
  30.   Serial.println("Boot number: " + String(bootCount));
  31.   //Print the wakeup reason for ESP32
  32.   print_wakeup_reason();
  33.   /*
  34.   First we configure the wake up source
  35.   We set our ESP32 to wake up for an external trigger.
  36.   There are two types for ESP32, ext0 and ext1 .
  37.   ext0 uses RTC_IO to wakeup thus requires RTC peripherals
  38.   to be on while ext1 uses RTC Controller so doesnt need
  39.   peripherals to be powered on.
  40.   Note that using internal pullups/pulldowns also requires
  41.   RTC peripherals to be turned on.
  42.   */
  43.   esp_sleep_enable_ext0_wakeup(GPIO_NUM_34,1); //1 = High, 0 = Low
  44.   //If you were to use ext1, you would use it like
  45.   //esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);
  46.   //Go to sleep now
  47.   Serial.println("Going to sleep now");
  48.   esp_deep_sleep_start();
  49.   Serial.println("This will never be printed");
  50. }
  51. void loop(){
  52.   //This is not going to be called
  53. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 16:05:36

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)

  项目串口返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 16:06:16

本帖最后由 驴友花雕 于 2021-7-13 16:15 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十四:深度睡眠与外部唤醒(这里使用10K下拉按钮到 GPIO 34)

  实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 17:06:03

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
  实验接脚:2脚为板载LED,4脚接电位器OUT

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
  5.   实验接脚:2脚为板载LED,4脚接电位器OUT
  6. */
  7. #if CONFIG_FREERTOS_UNICORE
  8. #define ARDUINO_RUNNING_CORE 0
  9. #else
  10. #define ARDUINO_RUNNING_CORE 1
  11. #endif
  12. #ifndef LED_BUILTIN
  13. #define LED_BUILTIN 2
  14. #endif
  15. // 为 Blink 和 AnalogRead 定义两个任务
  16. void TaskBlink( void *pvParameters );
  17. void TaskAnalogReadA3( void *pvParameters );
  18. // the setup function runs once when you press reset or power the board
  19. void setup() {
  20.   
  21.   // initialize serial communication at 115200 bits per second:
  22.   Serial.begin(115200);
  23.   
  24.   // Now set up two tasks to run independently.
  25.   xTaskCreatePinnedToCore(
  26.     TaskBlink
  27.     ,  "TaskBlink"   // A name just for humans
  28.     ,  1024  // This stack size can be checked & adjusted by reading the Stack Highwater
  29.     ,  NULL
  30.     ,  2  // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
  31.     ,  NULL
  32.     ,  ARDUINO_RUNNING_CORE);
  33.   xTaskCreatePinnedToCore(
  34.     TaskAnalogReadA3
  35.     ,  "AnalogReadA3"
  36.     ,  1024  // Stack size
  37.     ,  NULL
  38.     ,  1  // Priority
  39.     ,  NULL
  40.     ,  ARDUINO_RUNNING_CORE);
  41.   // Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
  42. }
  43. void loop()
  44. {
  45.   // Empty. Things are done in Tasks.
  46. }
  47. /*--------------------------------------------------*/
  48. /*---------------------- Tasks ---------------------*/
  49. /*--------------------------------------------------*/
  50. void TaskBlink(void *pvParameters)  // This is a task.
  51. {
  52.   (void) pvParameters;
  53. /*
  54.   Blink
  55.   Turns on an LED on for one second, then off for one second, repeatedly.
  56.    
  57.   If you want to know what pin the on-board LED is connected to on your ESP32 model, check
  58.   the Technical Specs of your board.
  59. */
  60.   // initialize digital LED_BUILTIN on pin 13 as an output.
  61.   pinMode(LED_BUILTIN, OUTPUT);
  62.   for (;;) // A Task shall never return or exit.
  63.   {
  64.     digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  65.     vTaskDelay(1000);  // one tick delay (15ms) in between reads for stability
  66.     digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  67.     vTaskDelay(1000);  // one tick delay (15ms) in between reads for stability
  68.   }
  69. }
  70. void TaskAnalogReadA3(void *pvParameters)  // This is a task.
  71. {
  72.   (void) pvParameters;
  73.   
  74. /*
  75.   AnalogReadSerial
  76.   Reads an analog input on pin A4, prints the result to the serial monitor.
  77.   Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  78.   Attach the center pin of a potentiometer to pin A3, and the outside pins to +5V and ground.
  79.   This example code is in the public domain.
  80. */
  81.   for (;;)
  82.   {
  83.     // read the input on analog pin 4:
  84.     int sensorValueA4 = analogRead(4);
  85.     // print out the value you read:
  86.     Serial.println(sensorValueA4);
  87.     vTaskDelay(100);  // one tick delay (15ms) in between reads for stability
  88.   }
  89. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 17:09:43

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
  实验接脚:2脚为板载LED,4脚接电位器OUT

  项目串口返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 17:11:31

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)

  实验串口绘图器返回情况

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 17:17:37

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十五:读取模拟量与闪灯(旋转电位器模拟输入)
  实验接脚:2脚为板载LED,4脚接电位器OUT

  实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 18:13:03

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十六:打印 ESP32 上次复位原因

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十六:打印 ESP32 上次复位原因
  5. */
  6. #include <rom/rtc.h>
  7. #define uS_TO_S_FACTOR 1000000  /* Conversion factor for micro seconds to seconds */
  8. void print_reset_reason(RESET_REASON reason){
  9.   switch ( reason) {
  10.     case 1 : Serial.println ("POWERON_RESET"); break;         /**<1,  Vbat power on reset*/
  11.     case 3 : Serial.println ("SW_RESET"); break;              /**<3,  Software reset digital core*/
  12.     case 4 : Serial.println ("OWDT_RESET"); break;            /**<4,  Legacy watch dog reset digital core*/
  13.     case 5 : Serial.println ("DEEPSLEEP_RESET"); break;       /**<5,  Deep Sleep reset digital core*/
  14.     case 6 : Serial.println ("SDIO_RESET"); break;            /**<6,  Reset by SLC module, reset digital core*/
  15.     case 7 : Serial.println ("TG0WDT_SYS_RESET"); break;      /**<7,  Timer Group0 Watch dog reset digital core*/
  16.     case 8 : Serial.println ("TG1WDT_SYS_RESET"); break;      /**<8,  Timer Group1 Watch dog reset digital core*/
  17.     case 9 : Serial.println ("RTCWDT_SYS_RESET"); break;      /**<9,  RTC Watch dog Reset digital core*/
  18.     case 10 : Serial.println ("INTRUSION_RESET"); break;      /**<10, Instrusion tested to reset CPU*/
  19.     case 11 : Serial.println ("TGWDT_CPU_RESET"); break;      /**<11, Time Group reset CPU*/
  20.     case 12 : Serial.println ("SW_CPU_RESET"); break;         /**<12, Software reset CPU*/
  21.     case 13 : Serial.println ("RTCWDT_CPU_RESET"); break;     /**<13, RTC Watch dog Reset CPU*/
  22.     case 14 : Serial.println ("EXT_CPU_RESET"); break;        /**<14, for APP CPU, reseted by PRO CPU*/
  23.     case 15 : Serial.println ("RTCWDT_BROWN_OUT_RESET"); break; /**<15, Reset when the vdd voltage is not stable*/
  24.     case 16 : Serial.println ("RTCWDT_RTC_RESET"); break;     /**<16, RTC Watch dog reset digital core and rtc module*/
  25.     default : Serial.println ("NO_MEAN");
  26.   }
  27. }
  28. void verbose_print_reset_reason(RESET_REASON reason){
  29.   switch ( reason){
  30.     case 1  : Serial.println ("Vbat power on reset"); break;
  31.     case 3  : Serial.println ("Software reset digital core"); break;
  32.     case 4  : Serial.println ("Legacy watch dog reset digital core"); break;
  33.     case 5  : Serial.println ("Deep Sleep reset digital core"); break;
  34.     case 6  : Serial.println ("Reset by SLC module, reset digital core"); break;
  35.     case 7  : Serial.println ("Timer Group0 Watch dog reset digital core"); break;
  36.     case 8  : Serial.println ("Timer Group1 Watch dog reset digital core"); break;
  37.     case 9  : Serial.println ("RTC Watch dog Reset digital core"); break;
  38.     case 10 : Serial.println ("Instrusion tested to reset CPU"); break;
  39.     case 11 : Serial.println ("Time Group reset CPU"); break;
  40.     case 12 : Serial.println ("Software reset CPU"); break;
  41.     case 13 : Serial.println ("RTC Watch dog Reset CPU"); break;
  42.     case 14 : Serial.println ("for APP CPU, reseted by PRO CPU"); break;
  43.     case 15 : Serial.println ("Reset when the vdd voltage is not stable"); break;
  44.     case 16 : Serial.println ("RTC Watch dog reset digital core and rtc module"); break;
  45.     default : Serial.println ("NO_MEAN");
  46.   }
  47. }
  48. void setup() {
  49.   // put your setup code here, to run once:
  50.   Serial.begin(115200);
  51.   delay(2000);
  52.   Serial.println("CPU0 reset reason:");
  53.   print_reset_reason(rtc_get_reset_reason(0));
  54.   verbose_print_reset_reason(rtc_get_reset_reason(0));
  55.   Serial.println("CPU1 reset reason:");
  56.   print_reset_reason(rtc_get_reset_reason(1));
  57.   verbose_print_reset_reason(rtc_get_reset_reason(1));
  58.   // Set ESP32 to go to deep sleep to see a variation
  59.   // in the reset reason. Device will sleep for 5 seconds.
  60.   esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  61.   Serial.println("Going to sleep");
  62.   esp_deep_sleep(5 * uS_TO_S_FACTOR);
  63. }
  64. void loop() {
  65.   // put your main code here, to run repeatedly:
  66. }
  67. /*
  68.   Example Serial Log:
  69.   ====================
  70.   rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  71.   configsip: 0, SPIWP:0x00
  72.   clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  73.   mode:DIO, clock div:1
  74.   load:0x3fff0008,len:8
  75.   load:0x3fff0010,len:160
  76.   load:0x40078000,len:10632
  77.   load:0x40080000,len:252
  78.   entry 0x40080034
  79.   CPU0 reset reason:
  80.   RTCWDT_RTC_RESET
  81.   RTC Watch dog reset digital core and rtc module
  82.   CPU1 reset reason:
  83.   EXT_CPU_RESET
  84.   for APP CPU, reseted by PRO CPU
  85.   Going to sleep
  86.   ets Jun  8 2016 00:22:57
  87.   rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  88.   configsip: 0, SPIWP:0x00
  89.   clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  90.   mode:DIO, clock div:1
  91.   load:0x3fff0008,len:8
  92.   load:0x3fff0010,len:160
  93.   load:0x40078000,len:10632
  94.   load:0x40080000,len:252
  95.   entry 0x40080034
  96.   CPU0 reset reason:
  97.   DEEPSLEEP_RESET
  98.   Deep Sleep reset digital core
  99.   CPU1 reset reason:
  100.   EXT_CPU_RESET
  101.   for APP CPU, reseted by PRO CPU
  102.   Going to sleep
  103.   ets Jun  8 2016 00:22:57
  104.   rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
  105.   configsip: 0, SPIWP:0x00
  106.   clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
  107.   mode:DIO, clock div:1
  108.   load:0x3fff0008,len:8
  109.   load:0x3fff0010,len:160
  110.   load:0x40078000,len:10632
  111.   load:0x40080000,len:252
  112.   entry 0x40080034
  113.   CPU0 reset reason:
  114.   DEEPSLEEP_RESET
  115.   Deep Sleep reset digital core
  116.   CPU1 reset reason:
  117.   EXT_CPU_RESET
  118.   for APP CPU, reseted by PRO CPU
  119.   Going to sleep
  120. */
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 18:16:58

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十六:打印 ESP32 上次复位原因

  项目串口返回情况

  最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 18:47:05

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十七:实现RGB-LED颜色的变换
  实验接脚:LED R接14,B接27,G接16

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十七:实现RGB-LED颜色的变换
  5.   实验接脚:LED R接14,B接27,G接16
  6. */
  7. uint8_t ledR = 14;
  8. uint8_t ledG = 27;
  9. uint8_t ledB = 16;
  10. void setup(){
  11.   Serial.begin(115200);
  12.   delay(10);
  13.   ledcAttachPin(ledR, 1); //引脚的通道
  14.   ledcAttachPin(ledG, 2);
  15.   ledcAttachPin(ledB, 3);
  16.   ledcSetup(1, 12000, 8); // 12 kHz PWM,8位的分辨率
  17.   ledcSetup(2, 12000, 8);
  18.   ledcSetup(3, 12000, 8);
  19. }
  20. void loop(){
  21.   //红色
  22.   ledcWrite(1, 0);
  23.   ledcWrite(2, 255);
  24.   ledcWrite(3, 255);
  25.   delay(2000);
  26.   //绿色
  27.   ledcWrite(1, 255);
  28.   ledcWrite(2, 0);
  29.   ledcWrite(3, 255);
  30.   delay(2000);
  31.   //蓝色
  32.   ledcWrite(1, 255);
  33.   ledcWrite(2, 255);
  34.   ledcWrite(3, 0);
  35.   delay(2000);
  36. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-13 19:08:32

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十七:实现RGB-LED颜色的变换
  实验接脚:LED R接14,B接27,G接16

  实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-14 06:54:00

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十八:ESP32通过PWM控制蜂鸣器

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十八:ESP32通过PWM控制蜂鸣器
  5.   实验接脚:无源蜂鸣器接12
  6. */
  7. int freq = 2000;
  8. int channel = 0;
  9. int resolution = 8;
  10. void setup() {
  11.   Serial.begin(115200);
  12.   ledcSetup(channel, freq, resolution);
  13.   ledcAttachPin(12, channel);
  14. }
  15. void loop() {
  16.   ledcWriteTone(channel, 2000);
  17.   for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 10) {
  18.     Serial.println(dutyCycle);
  19.     ledcWrite(channel, dutyCycle);
  20.     delay(1000);
  21.   }
  22.   
  23.   ledcWrite(channel, 125);
  24.   for (int freq = 255; freq < 10000; freq = freq + 250) {
  25.     Serial.println(freq);
  26.     ledcWriteTone(channel, freq);
  27.     delay(1000);
  28.   }
  29. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-14 07:10:18

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十八:ESP32通过PWM控制蜂鸣器
  实验接脚:无源蜂鸣器接12

  实验场景图

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-14 08:18:23

最像Arduino Uno的ESP32开发板之WeMos D1 R32图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2021-7-14 10:07:02

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百七十七:Wemos D1 R32 ESP32开发板
  项目二十九:OLED液晶屏显示“Hello World”
  实验接脚: 0.96寸OLED液晶屏SDA接22, SCL接21

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百七十七:Wemos D1 R32 ESP32开发板
  4.   项目二十九:OLED液晶屏显示“Hello World”
  5.   实验接脚: 0.96寸OLED液晶屏SDA接22, SCL接21
  6. */
  7. #include "ssd1306.h"
  8. void setup() {
  9.   //如果需要使用 128x32 显示,请将下面的行替换为 ssd1306_128x32_i2c_init()
  10.   ssd1306_128x64_i2c_init();
  11.   ssd1306_fillScreen(0x00);
  12.   ssd1306_setFixedFont(ssd1306xled_font6x8);
  13.   ssd1306_printFixed (0, 16, " Hello World", STYLE_NORMAL);
  14. }
  15. void loop() {
  16. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail