之前写过关于外部中断使用的笔记了,但是始终没有正式的对Arduino开个头。

也许大家很早很早就听说过Arduino 的大名,但是Arduino 却在专业开发者眼中显得如此不二流, 如此低级。但是福利君不这么认为,当然,如果我也这么想我就不会用了。

废话不说。

Arduino到底是什么

Arduino 是一个(或者说一套)较为完整的开源硬件开发平台。其实Arduino 是一个AVR的开发板。当然,他好像没有引出所有的接口,尤其对于MEGA2560和STM32系列的开发板来说。

对于Arduino硬件平台来说,他有好多种,主要的有下面几种。

幸亏二头同学的大力支持,现在福利君有两款 ,UNO和Mega 2560 还有从HouminLi 那里拿来的ArduPilot Mega 1.X

所以,在没有新设备进入的情况下,笔记内容不会超越这三个板子的功能。

当然,Mega2560 已经非常非常强大了,并且不和其他的atmegax8系列特性完全一样,所以程序是不能不修改直接移植的,就算我们使用了相同的扩展板。

说道atmega8 不得不说说这个系列芯片的特性。

根据这个图,我们很容易可以看出每个数字代表的含义。

比如 Atmega328P    -------- 32 代表32k flash   8 代表 8位机     P代表低功耗

这些是arduino所支持的主控芯片。

对于我们比较常见的应用来说,我们需要知道Arduino 的基本电气特性。

我们来一张大照片。

我们可以从丝印(神马是丝印? 去翻该篇的附录1)中看到:

  • 14个数字IO
  • 6个模拟输入
  • 3路地
  • 2路参考输入电压
  • 1路3.3V输出
  • 1路5V输出

还有两个ICSP,现在对我们来说用处不大。 因为买来的板子bootloader都烧写完毕了。

下面详细介绍一下。

14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能

  • 串口信号RX(0号)、TX(1号): 与内部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。
  • 外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
  • 脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。
  • SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
  • LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。

6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能

  • TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。

AREF:模拟输入信号的参考电压。

Reset:信号为低时复位单片机芯片。

硬件资源就是这么多,就像普通单片机一样我们需要编程,虽然大家学过了数字电路,而且分高的一逼,那么真的明白寄存器是什么吗,好吧,学霸的答案是肯定的。真的理解寻址是什么吗,当然,学霸的答案也是肯定的,那我们真正理解时序吗,学霸的答案必须是肯定的,要不怎么能画时序图,做电路逻辑功能呢,但是,如果给学霸一份datasheet ,学霸能把一片Atmega8玩的和74LS163一样吗,哦,我们坚强的学霸告诉你,可以。好吧,我们认为,学霸是不需要用Arduino ,学霸直接从AVR学起就可以了,当然学霸必须选择32位,ARM才是学霸入门的正确选择,正所谓人间正道是沧桑,后话不提。

当然,福利君不是学霸,福利君很懒,福利君要做的是加速开发流程,所以福利君选择了Arduino。

让我们看一下Arduino最基础的小程序Blink,这个程序的地位如同编程语言中的Hello World ,通过这个,我们就能认识到Arduino编程语言的基本结构。

void setup() {                // initialize the digital pin as an output.// Pin 13 has an LED connected on most Arduino boards:pinMode(13, OUTPUT);
}void loop() {digitalWrite(13, HIGH);   // set the LED ondelay(1000);              // wait for a seconddigitalWrite(13, LOW);    // set the LED offdelay(1000);              // wait for a second
}

忘了说,在Arduino的数字13脚连了一个LED,当输出高电平就亮,低电平就灭。板子上本身就带着这个LED以便测试Arduino的功能正常。

上面这个程序是合法的可执行的,让我们看一下结构。

有两个程序段:   setup( ) 和 loop( )

根据简单的英语翻译,安装,循环。

setup( ) 段中的内容是用来定义io脚模式,载入库,初始化变量的。这个程序段只会在打开电源或者按下重启后运行一次。

loop ( ) 段内的code将在setup段执行后执行,并总在结束后重新开始。

从字面意思上来看,上面的程序让板载led 一灭一亮,间隔都是一秒。

digitalWrite 的用法就是定义针脚和输出电平,高电平电压为输入电压,低电平电压为ground电压。

delay 的单位是毫秒。


MEGA2560 我们以后再说,小程序还用不上大炮。


附录1 :

丝印:说明白点就是你在PCB电路板上看到的字。

例如UNO上面的

转载于:https://www.cnblogs.com/Kaysin/archive/2013/02/15/2913060.html

Arduino 笔记。开篇相关推荐

  1. 【Arduino笔记】超声波传感器的使用

    这里使用:超声波传感器HC-SR04型号,搭配SG90舵机. 超声波简介 测量距离:2 ~ 400cm 分辨率:0.3cm 测量频率:40Hz 测量角度:15° 工作电压:4.5 ~ 5.5V 工作电 ...

  2. Arduino笔记实验(初级阶段)—Keypad小键盘

    Arduino笔记实验(初级阶段)-Keypad小键盘 文章目录 Arduino笔记实验(初级阶段)-Keypad小键盘 前言 一.电路图 二.集成库方案(Keypad) 三方集成库 代码 实验效果展 ...

  3. Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 文章目录 Arduino笔记实验(初级阶段)-火焰传感器+有源蜂鸣器实验 前言 一.电路图 二.火焰传感器(4引脚)-有源蜂鸣器 代码 ...

  4. Arduino笔记实验(初级阶段)—继电器模块

    Arduino笔记实验(初级阶段)-继电器模块 文章目录 Arduino笔记实验(初级阶段)-继电器模块 前言 一.电路图 二.继电器模块实验 代码 实验效果展示 三.继电器模块 实验总结 前言 自学 ...

  5. 网站美工设计学习笔记-开篇

    网站美工设计学习笔记-开篇: 从今天开始学习网站美工方面的知识,希望和广大UI设计师一同成长. 目的: 1. 学习网站美工基础知识. 2. 有能力处理网站Banner设计,导航设计,图片美工,登陆注册 ...

  6. iBATIS学习笔记开篇

    因工作需要,从今天开始,计划一个月内学懂学透.net下的iBATIS.关于iBATIS,网上有很多介绍(官方网站),我会把学习(.net下的)iBATIS的笔记整理成一个系列来写,希望对有相同需求的朋 ...

  7. UCOSII学习笔记[开篇]

    学习及使用单片机的时间到现在为止其实不是很长,中间断断续续的大概也有两三年的时间了.因为一直在上学,现在也上了研究生了,中间所涉及的东西并不是很多,研究也不是很透彻和深入.上研究生以来,选择了我十分有 ...

  8. arduino笔记32:nRF24l01模块使用 电磁波频率 距离限制 掉电模式 热待机模式

    最近再arduino中文社区看到了一篇介绍nrf24l01基本原理的帖子,内容感觉蛮不错的,学习一下,记录一下学习笔记. 大部分内容都是Arduino中文社区的帖子,附上自己的一点点体会. 目录 一. ...

  9. 【ESP32+freeRTOS学习笔记-开篇前言】

    目录 前言的前言 RTOS的选择 开发与实践环境 参考资料 笔记的形式 专题文章的链接(持续更新中......) 前言的前言 单片机的开发,也有两年多了,之前一直是做一些简单应用,因此以裸机开发的方式 ...

最新文章

  1. python逐行写入csv_python之模块csv之CSV文件的写入(按行写入)
  2. Linux 系统工具
  3. cad新手必练300图_[CAD]平面练习图,CAD新手练技术练速度的好去处
  4. 【java实训课】web网页相关知识点总结
  5. NSAssert和NSParameterAssert
  6. 《结对-贪吃蛇-设计文档》
  7. 开启Nginx压缩,解决前端访问慢问题
  8. 开启 ASA 5505 snmp协议
  9. 深度学习1-深度学习框架介绍
  10. php框架启动过程,框架启动方式 - CrossPHP 框架文档
  11. 插件地址(eclipse jrebel jed)、问题
  12. html国庆节代码,QQ空间国庆节留言代码_祝大家国庆节快乐
  13. 图片透明底如何在线生成?试试小编推荐的这款工具吧
  14. 从“一时红”到“持久火”,“网红”农产品如何越向“长红”?
  15. 服装erp软件如何提高企业利润
  16. 手机 APP 的卖货界面
  17. 教你羊肉炒菠菜的做法
  18. 用聚合数据苏州实时公交API写的微信小程序
  19. Sentinel-1 雷达数据快速下载
  20. 留言获赠书 | 朱春雷:Rust编程:入门 实战与进阶

热门文章

  1. MFC:ListControl数据修改
  2. 【AutoML】优化方法可以进行自动搜索学习吗?
  3. 【图像分类】 标签噪声对分类性能会有什么样的影响?
  4. 中国呼吸道防护劳保用品市场投资效益与销售前景调研报告2022年
  5. 中国合成橡胶行业竞争趋势与运营展望规划分析报告2022年
  6. 在浏览器上浏览vue项目,后退按钮是可以正常返回上一页的,但打包成app后,点击手机上的物理返回按钮就直接退出app回到桌面...
  7. JuJu团队12月28号工作汇报
  8. springboot 问题总结
  9. ubuntu18.04 mariadb start失败
  10. ABP框架连接Mysql数据库