Appearance
为什么一定要学习Arduino开发板?
Arduino 就是个玩具,学 Arduino 就是浪费时间!
网络上有不少这样的论调,甚至有些人已经产生了开发板鄙视链,感觉自己会玩一些 STM32、ARM 开发板就有一种莫名的优越感,打心里鄙视玩 Arduino 开发板的人。
但实际上,据我观察,有这种论调的人,未必自己也能把 Arduino 玩明白。
在我看来,如果你想学好嵌入式,Arduino 不仅要玩,而且要深入去玩!
支持玩 Arduino 的人主要是这些论调:
- 易于入门:Arduino提供了一个简单易用的编程环境,降低了初学者的学习门槛。对于没有嵌入式开发经验的初学者来说,Arduino是一个友好的入门平台。
- 丰富的资源:Arduino有着庞大的用户社区和丰富的资源,包括教程、项目示例和开源库。这使得初学者可以更容易地找到解决问题的方法和学习资料。
- 硬件兼容性:Arduino支持多种不同类型的开发板,涵盖了各种不同的处理器和功能。因此,学习者可以根据需求选择合适的开发板进行学习和实践。
- 模块化设计:Arduino支持许多现成的模块和传感器,可以很容易地与开发板进行连接。这使得初学者可以快速搭建原型,而无需关注底层硬件细节。
- 跨平台支持:Arduino IDE支持多个操作系统,包括Windows、macOS和Linux。这意味着学习者可以在自己熟悉的操作系统上进行开发。
这上面的字有点多,有点太啰嗦,太官方的话语。
根据我自己这么多年玩 Arduino 的经验,我觉得大家一定要玩 Arduino 的原因只有两个字,那就是简单!
比如说,对于 IO 口的配置,Arduino 只需要一个简简单单的 pinMode()
函数就可以了。
但同样的需求,STM32 需要写这么多的代码!
C++
void MX_GPIO_Init(void)
{
//定义GPIO结构体变量
GPIO_InitTypeDef GPIO_InitStruct = {0};
//总线时钟使能
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
//配置GPIO结构体变量的值
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = LED_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
}
这么多的代码,一下子就把很多初学者吓得肝胆俱裂!
初学者要的是什么?要的就是简单、快速上手!
而 Arduino 就具备这样的条件,它足够简单,初学者很快就能看到效果。
比如经典的点灯案例,Arduino 只需短短 5 行代码就搞定了,而且烧进去立马就能看到代码执行效果了。
c
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(D4, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(D4, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(D4, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
这种在短时间内就可以得到的成就感,对初学者太重要了!
而同样的案例在 STM32 平台上操作,你们自己想想看,光是搭建一个模板工程,就花费了你们多少时间?有多少小伙伴,过了两天都还没办法把灯点亮?
想要完成一个嵌入式项目,你需要掌握的不仅仅是硬件那些知识。
就比如这个天气预报的小项目,你们猜猜看,这里应用了哪些知识?
首先,这个天气的数据是在和风天气平台获取的,所以,你需要先知道如何连接网络;
其次,连接上网络后,你还需要知道如何向和风天气平台请求数据,这就要涉及到 https 请求;
然后,请求得到的是一个 Json 包,你需要知道解析这个 Json 包;
再接下来,你要把解析来的数据显示在 OLED 屏幕上,所以你要了解 OLED 相关的知识,比如怎么点亮,怎么显示文本或图像;
进一步的,如果你使用了温湿度传感器获取当前环境的温湿度,那你还需要知识对应传感器的玩法。
有没发现,刚刚提到的这些东西,已经超出了 Arduino 的范畴?
你要玩转嵌入式,那么网络、 https、Json、OLED、各种传感器,就必须都要懂,而这些内容跟平台是没有关系的。
但是,正是因为 Arduino 足够简单,你写几行代码就可以看到效果,可以将精力放在原理的理解上。而且,做了几个这样的项目后,对你的业务能力也是有很大的提升。
所以,接下来我会在我的网站里更新一系列的 Arduino 教程,帮助大家快速玩转 Arduino,快速掌握嵌入式的知识点,快速入行。
而且,我也准备了一个文字版的教程,如果大家不方便看视频的话,直接看文档也行,我都已经写得很通俗易懂,而且是图文并茂,看起来更舒服。
我已经将这个文案做成了视频,发到了 B 站,结果被人喷成了筛子,小黑子真多!
我要强调一点哈,企业不会用 Arduino 做产品的,Arduino 是用来学习的,特别是适合零基础的小伙伴入门。
欢迎大家的持续关注,后面我会持续输出嵌入式干货,同时也会拍成视频,大家也可以关注我的 B 站:程序员良许,观看效果更好。