开坑使我快乐,本教程仅供初学者入门学习使用,要想深入还是得靠自己。本教程假设读者为完全无编程基础的普通人,所以行文可能会稍显啰嗦,但相信仍然会是目前比较精炼简短的教程。

Arduino是啥

一个开源的硬件开发平台,其特点在于简单易学易上手,而且国内外资源多,有啥问题也好解决。

Arduino要些什么知识

基础

有这些基础你基本上可以用Arduino做出网上常见的60%的项目。

  1. C语言基础和一点面向对象语言编程概念

    1. Arduino编程时使用C++,但是C++是兼容C语言的,一些简单基础的部分有C语言基础就能实现。
    2. 在基础使用时我们仍然会使用到面向对象编程的东西,先掌握概念和一点基础的东西,初学阶段够用就行。
  2. 初中电学知识和一点数电模电概念
    1. 知道短路、断路概念还有电压电流电阻之间的关系计算,这是硬件制作最基础的东西。
    2. 有一些涉及电容、电感、半导体的内容,这些一般属于模电知识,初学的时候不需要了解,因为我们可以用别人做好的电路,稍微连连线就行。
    3. 数字电路会是一个很常用的概念,不过初学阶段你只需要知道二进制计算就行。
  3. 时间、精力和钱
    1. 虽然Arduino的资料很多,但是偶尔你也可能遇到百度上找不到的问题(也有可能是你因为知识不够无法形容出来的问题),要把这些问题解决你需要花很多时间来搜索、学习、试错。
    2. 学习是一个很耗费精力的事,事实上你最好喜欢一样知识或者有一个明确需要学习它的理由,才能更好坚持下来。
    3. Arduino属于硬件开发平台,和平常我们电脑手机上开发一个程序软件游戏不同,硬件购买时将会花费大量的金钱,我会在后面不时提一下怎么尽量省钱去买这些硬件,但是实际学习中你仍然要做好花钱的准备。
    4. 不过不要被我上面说的吓到了,毕竟硬件如果能做好也是可以带来收入的,很多东西都是会者不难,难者不会,现代社会赚钱不就是赚信息差嘛。我在学Arduino没多久的时候,靠着百度搜搜改改,就用它接到了我人生中的第一笔单子,用了一下午赚了三百块。

进阶

这些是你觉得自己已经行了之后可以继续深入学习的方向,本教程会不时提及但是不做详述。

  1. C++语言编程

    1. C++是Arduino的核心语言,虽然运行效率略低于直接用C,但是其带来的方便性可以让我们无视这几毫秒。
    2. 网上说C++有点难学,但是不要担心,你只是需要用它来做Arduino而已,不会怎么用到C++那些乱七八糟的复杂特性。
  2. 嵌入式编程
    1. 当你可以自己从底层上将一个全新的芯片做成Arduino的时候,你就可以算嵌入式编程入门了。
    2. 有句话叫嵌入式门槛在门里,前期简单入门做点简单事不用担心,但是越到后面学习难度越陡峭,请提前做好准备。
  3. 操作系统
    1. 这里涉及到嵌入式编程的高级操作了,主要目的是为了实现多线程(让芯片同一时间处理多件事),不需要去详细学,接触到嵌入式后自然会学到
    2. 如果你从软件那边往嵌入式这边学的话也会学到这个东西,操作系统往上就是我们平常在系统环境上的编程,往下就是针对硬件的编程
  4. 网络编程
    1. 这个主要是未来物联网开发会更加多,甚至现在所谓的嵌入式编程和物联网编程都有点代称的感觉了,所以你需要掌握一定的网络编程的知识
    2. 如果你有操作系统上的网络编程开发经验,那么你在理解这一块上会比较容易,而如果你学会了这块,后面想学互联网行业的技术也会比较容易
  5. 复杂的电路知识
    1. 初中那点电路知识在这肯定是不够的,高频射频电路、高速电路的设计,这些也是可以学习的一个点(但是不是必学的,因为这一块实际上会有专门的开发人员),当然实际上这里也包括了半导体设计、FPGA啥的(这又是另外一个行业了,但是了解一些知识有助于更好地理解一些底层原理)
    2. 玩Arduino的大多都是对极客、发明家之类的感兴趣的朋友,所以会电路设计肯定会让你节省下更多的时间精力和钱
  6. 非常非常多的时间、精力和钱
    1. 你要深入学习那么路线就肯定是很陡峭的,事实上我在上面罗列的这些东西也只是所有知识的冰山一角,不过你既然都看到这了想必也下定决心了,所以,加油吧。

学习须知

请务必保持不求甚解的态度,所有的东西你不需要挨个记住,只需有个大概印象即可,因为有些知识并不是你后来会常用的,花时间去记浪费时间又容易造成挫败感,而经常用的东西你在多用了之后自然就记住了。

有个大概印象后需要多自己做项目,做点小玩意,可以搜索借鉴代码,但是要多思考,这样才能帮助你融会贯通所学的知识,也才能让你从一大堆知识中总结凝练出能够帮助到自己的东西。

环境搭建

在看完这一章之前先别买硬件,免得吃亏买贵了。

百度Arduino,你一般会看到最前面的两个链接,其中一个是英文官网,另二个是中文社区。这两个网站里面都有安装包可以下载,我们这里举例为选择官网下载,点击我上面给的链接即可进入英文官网,然后界面中依次选择:Software-Download,在出现的下载界面里点击你需要的程序包。

如果选择ZIP file你将获得一个压缩包,这个属于免安装的方式,直接解压就可以使用,更方便,但是稳定性弱点(一般也没啥)。其中Windows平台不建议点那个Windows app选项,那个是从Windows应用商店下载安装的,这种安装方式有时候要搞点花的不方便。

下载好后你将获得一个安装程序或者压缩文件,将Arduino安装或解压到你一个找得到的位置即可,它可能会让你安装一个驱动,同样安装即可。

然后你的Arduino环境就搭建好了,非常简单。

界面介绍

现在打开你的Arduino(实际上它叫Arduino IDE,即Arduino的集成开发环境):

让我们来看看界面长啥样:

可以看到,下载安装好后它就是一个不大简单的中文界面,现在我将其放大然后标注一下主界面的内容:

配置

为了方便起见,在此对我们的Arduino IDE进行配置一下,点击文件-首选项:

然后我们可以看到新界面,也没啥大变化,多了个行号和可折叠符号,不喜欢也可以去掉,不过建议留着,比较方便:

设置完了,我们再看看工具栏中还有一些其它什么有用的功能没:

文件

首先点开文件,这里面最重要的除了刚才讲过的首选项界面,另一个就是示例了,里面给出了很多例子供以学习:

编辑

然后是编辑界面,这里有一个复制到论坛和复制为HTML可以把代码以特定格式进行全部复制,便于分享;

另外下面还有三行关于注释、缩进的功能,如果再框选一大段文字后通过快捷键进行操作的话,可以实现块注释和块缩进:

void setup() {// put your setup code here, to run once:}void loop() {// put your main code here, to run repeatedly:}

上面这个代码是我通过复制到HTML格式后直接在网页上渲染出来的效果,这种写法便于在个人网站上使用,不过现在装上Markdown解释器后网站博客通常可以以Markdown实现上述功能。

项目

然后是项目界面,其中编译、上传功能在上面已经说过了,通过编程器上传即既编译又上传,而导出已编译的二进制文件则是将编译好生成的将会上传到芯片中的文件先导出保存,然后通过其它软件进行烧录上传;

而显示项目文件夹顾名思义就是找到项目当前地址,而加载库则为添加所需库文件,至于添加文件顾名思义就是把一些文件内容添加到工程里:

工具

工具栏是一个很重要的部分,我们经常要在这里设置东西,其中自动格式化就是调整代码的缩进让他符合C++语言推荐规范。项目存档就是把项目通过zip封装起来进行保存。修正编码并重新加载我也不知道是个啥,目前没用过。管理库就是对库文件进行管理。串口监视器和绘图器都是串口工具,但是一个直接显示文字,一个可以把数字以图像形式绘制。下面的东西是开发板设置,后面我会详细讲。编程器和烧录引导程序一般用不到,后面会提。

帮助

帮助界面提供的都是官方的英文网址链接,可以在网站上进行查询相应的需求功能,不过一般重要的只有参考功能,其它可以不管。

硬件

所谓硬件,一般就是指的单片机开发板,单片机是一块小芯片,可以理解为一个简化版的电脑CPU,通过配合各种传感器实现各种功能,我们平常经常使用的运动手环、汽车导航等都是单片机制作的,事实上我们手机的芯片从定义上也是高级单片机的一种。而单片机开发板就是把单片机焊接在一个可以用于开发工作的电路板上制成的。

官方Arduino(是的,虽然是开源硬件,但是它仍然有个官方,类似于基金会的形式存在)使用的单片机为AVR系列(这些所谓系列一般就是指的芯片提供厂家),其中最著名的Arduino开发板名字叫Arduino UNO(音同乌诺),官方的长这样,买下来应该要一百多:

他的芯片是AVR系列的Atmega328p单片机,当然因为这是开源的产品,所以也有很多非官方的板子(这不是盗版,因为硬件是开源的,事实上通过电路图你自己也可以来做一个板子),网上我见过最便宜的只要十块左右(当时打折,总之一般不超过二十,当然有一些添加了新的外设那种会很贵但是买了也不亏,不过目前如果你不懂就别买),总之别买贵了。初学者买UNO是最方便的,看到这里你可以去买UNO板了,但是其它的东西也还是先别买(最好找那种送USB线的,因为这种方口USB比较少见)。然后我们可以看到UNO的板载资源有这些:

其中USB接口可以用来供电或者上传程序,DC插头只能用于供电,左右两边的两排孔是用于接线的。而上面那很大一坨的芯片,就是ATMEGA328p,是核心芯片,而复位按键功能类似于重启按钮。其它的暂时不需要知道,因为平常也不用。

除了UNO以外,Arduino官方还用AVR系列的单片机制作了micro、mini、mega、leonardo等一系列官方Arduino。而民间也有使用AVR制作的Arduino,比如之前出名了一阵的bad USB(一个USB入侵设备),另外还有更多通过其它芯片制作的Arduino,例如STM32的Maple系列、STM32duino系列、ESP32、ESP8266的Nodemcu等等,当然如果你后面技术精湛了,也可以尝试把自己喜欢的芯片做成Arduino然后自己给它命名并发布出去。

不过现在我们还是继续讲UNO吧,因为Arduino将底层的东西封装起来,所以很多时候这些代码是可以互用的。

然后你可以在淘宝上搜索以下东西:

  1. 面包板(大小无所谓)
  2. 杜邦线(公对公、母对母、公对母三种最好都买)
  3. 电阻(直插式的,精度要求不高,一包几百个只要几块钱)
  4. LED(发光二极管,直插式的,随便什么颜色)

上述这些东西买下来差不多三十块左右,不用买多了。

然后下单,等待你的快递,我们在这段时间学学C语言基础。

C语言基础

因为一般来说会学这个的大多还是知道编程是个啥的,但是我们还是要考虑到所有人群,故而这里简单介绍一下C语言基础学习方案。

因为我们只需要一个基础,而且你等待快递的时间一般也就三天左右,所以我这里只提供一个非常简要的学习方案:

  1. 打开菜鸟教程的C语言教程。

  2. 看完如图所示的部分

  3. 尝试写出这样一个程序:

    先写一个函数,这个函数的功能为根据参数设定在屏幕上打印与参数相等行的“Hello World!”。在封装好函数后,实现如下功能:用户输入行数,如果行数为奇数则执行上述函数的功能,如果为偶数则不执行,并且通过switch语句实现判断,如果行数为1-5,则分别在最后输出一行He、ll、oW、rl、d!。

    如果可以实现上述程序,那么你基本上就掌握了C语言的基础了,然后我们后面再进行后面的教程。

后言

本教程只有两章,下一章内容即为具体编程部分:链接。

Arduino极速入门教程——两篇文章让你会用Arduino(上)相关推荐

  1. Arduino极速入门教程——两篇文章让你会用Arduino(下)

    接上篇关于Arduino基础环境配置.界面介绍和C语言基础,这一篇的内容为具体如何在Arduino中进行编程. 在VSCode上配置Arduino 什么是VSCode VSCode,即Visual S ...

  2. SpringMvc模式【从一篇文章入门到两篇文章入坑】更新中

    SpringMvc模式 SpringMvc基础---- SpringMvc的优势: Spring MVC应用 MVC模式 创建项目 项目的目录结构 基础JAR包引入 注解实现控制层 @Controll ...

  3. Proteus简单入门教程以及使用Proteus仿真STM32F103单片机和Arduino单片机

    工欲善其事必先利其器,有条件的朋友直接使用开发板学习即可,但有时候手边没有实物开发板可以用,那么可以借助一些仿真软件运行我们的程序,Proteus算是使用的比较多的一种仿真软件,我们使用它来做STM3 ...

  4. 审完两篇想要发表在顶刊上的文章后,能学到什么?

    全文约4800字,阅读预计时间12分钟. 以下记录了我从刚开始准备审第一篇PC,到完成第二篇NC的审稿经历及观点,看完你大概能了解到审稿的全流程.如何审稿.review report该如何写.对撰写文 ...

  5. ESP32-C3入门教程 问题篇⑬——IOS手机蓝牙连接容易断开问题,BT_HCI: DiscCmpl evt: hdl=1, rsn=0x8

    文章目录 一.前言 二.发现问题 三.解决问题 一.前言 本文基于VS Code IDE进行编程.编译.下载.运行等操作 基础入门章节请查阅:ESP32-C3入门教程 基础篇①--基于VS Code构 ...

  6. 泰凌微8258入门教程 进阶篇③——LIGHT HSL+CT 彩色灯+色温灯调光

    文章目录 一.前言 二.刷新Light函数 light_dim_refresh() 三.Light硬件引脚 light_res_hw 一.前言 HSL彩色灯调光和CT色温灯调光 ,前面两篇博文都有讲述 ...

  7. ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)

    前面的7节课把开发板上基本的外设都测试过一边,接下来马上就要进入wifi和蓝牙应用的测试了 在此之前,还需要把掉电数据保存的功能给实现,在STM32中,可以使用内部的flash或者有些自带的EEPRO ...

  8. ESP32-C3入门教程 WiFi篇③——WiFi SoftAP 模式开启AP热点

    文章目录 一.前言 二.WiFi模式 三.快速运行 四.运行效果 五.程序流程 5.1 主程序 5.2 注册事件回调函数 六.关键函数 6.1 将事件回调函数注册到特定循环 6.2 设置 ESP32 ...

  9. ESP32-C3入门教程 WiFi篇②——WiFi Station 模式连接到 AP 热点接入点

    文章目录 一.前言 二.WiFi模式 三.快速运行 四.运行效果 4.1 连接失败 4.2 连接成功 五.程序流程 5.1 主程序 5.2 注册事件回调函数 六.关键函数 6.1 将事件回调函数注册到 ...

最新文章

  1. Spark的RDD 文件读取与保存
  2. mysql 查询结果行变列_SQL 查询怎么将行变成列
  3. 用SNMP实现对大型网络的轻松管理!
  4. bzoj2337: [HNOI2011]XOR和路径
  5. MxNet 模型转Tensorflow pb模型
  6. scala集合同时支持不可变集合和可变集合
  7. 左右TextView旋转门问题
  8. SAP UI5对于颜色使用的最佳实践
  9. php采集分页数据,如何通过php+wordpress实现分页获取数据
  10. php同步邮件,php – 使用同步驱动程序在Laravel 4中排队电子邮件
  11. Linux内核升级Broadcom网卡问题(bnx2)
  12. 对抗弱网下的音视频难题,声网正式开源抗丢包音频编解码器 Agora SOLO!
  13. Scikit-learn:scikit-learn快速教程及实例
  14. STL之仿函数实现详解
  15. 当前版本与卡刷包android_Android p系统下载-MIUI 10 Android p线刷包卡刷包最新版 - 极光下载站...
  16. 微信小程序支付和退款(微信公众号和微信小程序支付和退款属于一个爹妈)
  17. 国产数据库普及风暴有奖征文获奖名单揭晓
  18. Java删除StringBuilder最后一个逗号
  19. 【AI论文精粹】图形化解释工具;神经网络数据质量;LiDAR 语义分割;机器学习的应用
  20. 悲观锁的实现方式java_并发编程--锁--悲观锁和乐观锁

热门文章

  1. bluehost 盗版_Bluehost评论
  2. Android Application对象必须掌握的七点
  3. CSS3的文字阴影—text-shadow
  4. 学习黑客十余年,如何成为一名安全工程师?
  5. 爬了世纪佳缘后发现了一个秘密
  6. 杭电OJ——ACM 1003.Max Sum
  7. 三星Gear VR与Oculus Rift DK2全方位比拼
  8. 2020牛客多校E- Groundhog Chasing Death
  9. qeephp 记录下
  10. 微服务中常用的限流算法(一)