FireBeetle Board-ESP32试用----arduino开发体验

[复制链接]
1214|4
 楼主 | 2018-2-25 21:06 | 显示全部楼层 |阅读模式
本帖最后由 BinWin 于 2018-2-25 21:06 编辑

      感谢二姨送出的萤火虫,不仅有了ESP32,俨然也是一个arduino开发板,首次入手,对比了一下开发环境,首先以arduino切入。
      下载windows平台的安装包,安装过程就不需多说了。第一次打开后,字体较小,并且比较难看,费眼睛,找了半天,修改方式如下
      
       这里只能更改字体大小,修改配置文件来更改使用的字体。这个字体路径在用户下的AppData中,要查看隐藏文件
      
       打开这个文件可以修改很多内容,不过要先关闭IDE,重新打开就可以生效了

  1. board=firebeetle32
  2. boardsmanager.additional.urls=
  3. build.verbose=false
  4. build.warn_data_percentage=75
  5. compiler.cache_core=true
  6. compiler.warning_level=none
  7. console=true
  8. console.auto_clear=true
  9. console.error.file=stderr.txt
  10. console.length=500
  11. console.lines=4
  12. console.output.file=stdout.txt
  13. custom_FlashFreq=firebeetle32_80
  14. custom_UploadSpeed=firebeetle32_921600
  15. editor.antialias=true
  16. editor.auto_close_braces=true
  17. editor.caret.blink=true
  18. editor.code_folding=false
  19. editor.divider.size=2
  20. editor.external=false
  21. editor.font=Microsoft YaHei Mono,plain,14
  22. editor.indent=true
  23. .........
复制代码
       我这里给修改的结果是:Microsoft YaHei Mono,plain,14,这是后来安装的字体,代码看起来舒服。
        来看下板子的资源
         
        小板子上有两个LED,可以使用的LED对应的口线是D9,于是点灯的程序就可以这样

  1. void setup() {
  2.   // initialize digital pin LED_BUILTIN as an output.
  3.   pinMode(LED_BUILTIN, OUTPUT);
  4. }

  5. // the loop function runs over and over again forever
  6. void loop() {
  7.   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  8.   delay(1000);                       // wait for a second
  9.   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  10.   delay(1000);                       // wait for a second
  11. }
复制代码
      修改字体以后的样子,还可以吧
      
       直接点击上传会先进行编译后再上传,对于esp32来说,代码是存放在外部16M的flash中的,和通常使用的单片机有所不同,这里对flash编程算法部分不做详细说明。上传成功可以看到蓝色的led已1秒频率闪烁。
        以上可以验证成功的操作了IO口。只有一个led,那再尝试一下呼吸灯。对照dfrobot给出的用户手册来看下PWM的定义
        

        然后在通过arduino高度封装的代码来配置一个脉冲输出

  1. //设置通道 0
  2. #define LEDC_CHANNEL_0     0

  3. //设置 13 位定时器
  4. #define LEDC_TIMER_13_BIT  13

  5. //设置定时器频率位 5000Hz
  6. #define LEDC_BASE_FREQ     5000
  7. //设置 LED 灯
  8. #define LED_PIN            D9
  9. int brightness = 0;    // how bright the LED is
  10. int fadeAmount = 5;    // how many points to fade the LED by

  11. //设置 led 灯的亮度
  12. void ledcAnalogWrite(uint32_t value, uint32_t valueMax = 255) {
  13.   //计算占空比  
  14.   uint32_t duty = (LEDC_BASE_FREQ / valueMax) * min(value, valueMax);
  15.   //设置占空比   
  16.   ledcWrite(LEDC_CHANNEL_0, duty);
  17. }
  18. void setup() {
  19.   // put your setup code here, to run once:
  20.   ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
  21.   ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
  22. }

  23. void loop() {
  24.   // put your main code here, to run repeatedly:
  25.   ledcAnalogWrite(brightness);   brightness += fadeAmount;

  26.   if (brightness <= 0 || brightness >= 255) {     fadeAmount = -fadeAmount;   }   delay(30);
  27. }
复制代码
      注释足够清晰,配置定时器计数数值和通道,设置频率, 然后使用void ledcAnalogWrite(uint32_t value, uint32_t valueMax = 255) 函数计算占空比和设置使用的占空比数值,关于具体的实现方式在arduino的库文件中有详细的实现过程,有兴趣可以看看,arduino的库是比例如stm32的库函数更易用的一种方式。例如打开串口只需要一句Serial.begin(115200); 即已115200的波特率开启了对应的串口,再来一句Serial.println("hello esp32"); 即可以输出字符串。习惯C开发单片机的朋友们是不是也会突然感觉arduino原来是这么的平易近人。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-2-27 17:56 | 显示全部楼层
期待更多分享~
| 2018-2-28 14:58 | 显示全部楼层
啧啧啧赞赞赞
| 2018-2-28 15:13 | 显示全部楼层
赞赞赞
| 2018-7-24 11:56 | 显示全部楼层
厉害啊
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

快速回复 返回顶部 返回列表