Arduino单片机基础及应用开发

前言

  现代生活、生产、研究在很大程度上和自动化几乎是密不可分的。自动化的内容很丰富。与我们的教学实验的改进等相关的一个内容是AD/DA的实现。在此基础上,结合单片机的编程和控制可以实现很多很多的想法。

  Arduino单片机提供了这样一个低门槛、功能较完整的开发平台,欢迎感兴趣的各位同学一起来参与Arduino单片机的使用。

  这个页面是一个交流的平台,欢迎各位同学在此学习、讨论,也贡献自己的心得。

实用链接

www.arduino.cc Arduino官网

www.processing.org

http://blog.flamingoeda.com/ 一个淘宝卖家的博客, 里面的东西还是很丰富的, idea也很多

其实从后面往前面开始看比较好, 可以像作者一样跟着一点一点学起来, 人家学这个也是有过程的, 值得我们借鉴

http://zh.wikipedia.org/wiki/Arduino 维基百科

http://en.wikipedia.org/wiki/Arduino 英文维基百科

http://www.geek-workshop.com/forum.php 极客工坊(大量Arduino开发实例)

http://www.geek-workshop.com/thread-1218-1-1.html Arduino与LabVIEW通讯

http://phylab.fudan.edu.cn/doku.php?id=home:xiaole:group_meetings:discussion:matlab_arduino Arduino与MATLAB通讯

基础知识

一、单片机

  单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。   Arduino是一个单片机的最小系统。

二、Arduino简介

1、什么是arduino?

  Arduino,是一块基于开放源代码的USB接口Simple i/o接口板并且具有使用类似Java,C语言的IDE集成开发环境。可以很容易实现与Flash 和 processing 的互动。   IDE(Integrated Development Environment),即集成开发环境。是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫做集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。

2、Arduino规格

  微型控制器 ATmega168 ——这个是单片机并附带芯片说明书 — 罗页 2009/12/23 16:22

  ATmega168(中文版)沈金辉 2013/06/11 18:13

  Atmega1280(英文版)沈金辉 2013/07/22 15:08

  Atmega328P(英文版)沈金辉 2013/07/29 11:50

  Arduino UNO R2 电路原理图:电路原理图

  工作电压 5V

  输入电压(建议) 7-12V

  输入电压(极限) 6-20V

  数字输入/输出端 14 (3, 5, 6, 9, 10, 11提供输出的PWM)

  模拟输入端 6

  闪存 16 KB (ATmega168)或32KB(ATmega328) ,其中2 KB被bootloader使用

  SRAM 1 KB (ATmega168)或2 KB (ATmega328)

  EEPROM 512个字节(ATmega168)或1 KB (ATmega328)

  其中:

  PWM (Pulse Width Modulation),即脉冲宽度调制。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

  闪存,用于存储程序。

  bootloader可以看作是一个引导程序。

  SRAM(Static RAM),是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。

  EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器。一种掉电后数据不丢失的存储芯片。

  

3、Arduino开发环境

  从官方网站 www.arduino.cc 可下载到程序,编程语言类似C, java,且有详细的介绍和丰富的实例。

  在本页面的 参考资料 中也能下载到

4、工作方式

  可以通过USB与电脑相连,或单独供电。程序写到arduino里之后只要有电就可以独立运行。

  The internal USB-RS232 Chip FT232R is provided by FTDI. Download Driver罗页 2009/12/23 16:31

  实际的量通过传感器变成模拟信号,再通过A/D装换器变成电压信号(其分度取决于模数转换的精度),再传给arduino

  此模数转换器精度为10bit,即能读取1024(2^10=1024)个状态,模拟输入电压0~5V,所以arduino能感知的最小电压变化为4.8mV(5V/1024=4.8mV)。

PROCESSING

Processing 是一种具有革命前瞻性的新兴计算机语言,她的概念是在电子艺术的环境下介绍程序语言,并将电子艺术的概念介绍给程序设计师。她是 Java 语言的延伸,并支持许多现有的 Java 语言架构,不过在语法 (syntax) 上简易许多,并具有许多贴心及人性化的设计。Processing 可以在 Windows、MAC OS X、MAC OS 9 、Linux 等操作系统上使用。本软件目前是处于初版测试的阶段,试用版听说最近真的快要出了!以 Processing 完成的作品可在个人本机端作用,或以Java Applets 的模式外输至网络上发布。 虽然图形使用接口早在二十年前成为主流,但是基础程序语言的教学到今天仍是以文字命令列的接口为主,学习程序语言为什么要那么枯燥呢?人脑天生擅长的是空间的辨识,图形接口利用的正是这种演化上的优势,加上它能提供各种实时且鲜明的图像式反馈 (feedback),可以大幅缩短学习曲线,并帮助理解抽象逻辑法则。举例来说,计算机屏幕上的一个像素 (pixel) 就是一个变量值 (the value of a variable) 的可视化表现。Processing 将 Java 的语法简化并将其运算结果“感官化”,让使用者能很快享有声光兼备的交互式多媒体作品。 Processing 的创始者: Casey Reas 与 Ben Fry 是美国麻省理工学院媒体实验室 (M.I.T. Media Laboratory) 旗下美学与运算小组 (Aesthetics & Computation Group) 的成员。美学与运算小组由著名的计算机艺术家 John Maeda 领导,于一九九六年成立至今,在短时间内声名大噪,以其高度实验性及概念性的作品,既广且深地在艺术及设计的领域里,探索计算机的运算特质及其带来源源不绝的创造性。极少数人能完美结合并平衡艺术家、设计师和计算机工程师的才华于一身,更重要的是Casey和Ben拥有开放源码的胸襟。 网络的兴起激起了许多设计师和艺术家学习程序语言的动机,因为学会了计算机的语言,你才能跟它沟通,这样不只静态的图像和文字,连动态的互动模式都可以成为设计师和艺术家全盘掌控下的精确表现。杰出的设计师和艺术家往往具有病态的控制欲,这是无庸置疑的,所以才会有些人干脆连软件都自己写算了,而且写程序也 是艺术!如何写的简洁,还要清楚明白,中间的学问很大。 ——摘自百度百科

www.processing.org 可以实现与arduino的互动!

参考资料

这是历史版本arduino-0018(不含Java虚拟机),Java虚拟机请到http://www.java.com/zh_CN/下载。

  • 建议有兴趣的同学把以下四款软件都下载一下:002200231.0.11.5.2(目前最新版)。以上四个版本的软件代表了Arduino的四个不同的时期,它们对于库函数调用和库函数本身差别较大,网络教程大多对版本都有所区别,如果版本不对称会导致下载失败。因此,拥有这四款版本可以“玩转”现在实验室的单片机~
  • arduino开发文档:http://chaishushan.googlecode.com/svn/doc/arduino/r106/index.html 介绍的相当详细,关于语法之类,很多内容,中文的,很好很强大!
  • Programming Interactivity:programming_interactivity.pdf(编程交互性?我也不知道怎么翻译,反正就差不多是这个意思,里面分析了各种编程的交互性,包括方法,图像和实际的交互例如Arduino等等,是一本非常不错的参考书)(这里的资料,如果是有版权的,自己看看就好,请不要四处传播!)

讨论区

感谢李争路同学做了一个很不错的开端! — 乐永康 2009/11/25 17:05
需要硬件支持的同学可以和我联系:leyk@fudan.edu.cn。 — 乐永康 2009/11/25 17:05
我来写几个网站地址: — 朱骏 2009/11/28 14:34
http://blog.flamingoeda.com/ 一个淘宝卖家的博客, 里面的东西还是很丰富的, idea也很多
其实从后面往前面开始看比较好, 可以像作者一样跟着一点一点学起来, 人家学这个也是有过程的, 值得我们借鉴
http://zh.wikipedia.org/wiki/Arduino 维基百科, 貌似没什么东西, 完全没概念的可以看下
http://en.wikipedia.org/wiki/Arduino 还是英文的wiki比较强悍一点@@
众人拾柴火焰高!非常希望有更多的人知道这个东西,参与学习、讨论和使用。 — 乐永康 2009/11/28 14:40
找来的简单的语法指南:Arduino Programming Notebook朱骏 2009/12/02 23:52
谢谢你的贡献。参考资料可以另开一个栏目,上面的链接也可以放到前面的“链接”栏目中去。 — 乐永康 2009/12/03 00:56
各位已经在学习使用Arduino单片机的同学,如果有什么成果或者学习心得,记得拿出来和大家分享啊! — 乐永康 2009/12/06 22:11
建议同学学的时候先搞清楚最基本的函数的含义和用法,看看Arduino.cc上的learning里面的example,上手很快的。如果自己再弄点传感器玩玩,学得更快!——有一点点经验的菜鸟谈经验 = = — 李争路
还有其他同学在访问这个页面,或者“玩”这个单片机吗?留点脚印?上传点经验?也可以留下让你觉得苦恼的问题,或许有高人马上可以给你指点呢! — 乐永康 2009/12/09 21:48
oh竟然找到了Getting started with Arduino啊。。。不错不错。。。 — 朱骏 2010/01/20 17:41
新购几块Arduino单片机,两种规格的,如果有同学需要,可以到我这里来申请借用一块。 — 乐永康 2010/05/17 17:52
There are chipKIT (fully arduino-compatible) available now, which is a 32-bit MCU at a lower price. I am working on that now. If any of you interested in that, it is easy to get in china now :P — Tinghui 2011/08/02 10:46
为C语言的课写了个arduino的介绍的ppt,水平有限,有疑惑或者问题还望多多指出,谢谢。introduction_to_arduino.pptx朱骏 2012/11/20 17:47
乐老师,这个格式我调不好,不知道是什么原因。。。 — 沈金辉 2013/06/11 18:18
好了。 — 乐永康 2013/06/11 19:39
我刚才也是这么弄的,没有成功。。。乐老师太酷了! — 沈金辉 2013/06/11 19:44
这需要专门的技术。 — 乐永康 2013/06/11 19:53
等我探索一下。。 — 沈金辉 2013/06/11 20:24
可以高效率一点:文本开始前的连续两个半角空格是Wiki系统的格式控制字符;但全角空格不是… — 乐永康 2013/06/11 20:25
怪不得我发现空格字符的数目不对。。。 — 沈金辉 2013/06/11 20:29
技术资料越来越完整了,谢谢沈金辉。 — 乐永康 2013/07/29 13:17
谢谢乐老师的鼓励~~~ — 沈金辉 2013/07/29 14:06
把Arduino接到win8.1的电脑上,驱动安装程序并未自动跳出。我查到一个简单的解决方案:Windows键+R→输入shutdown.exe /r /o /f /t 00(空格也要)→ 点”确定”进入”选项”页面→疑难解答→高级选项→windows启动设置→点击重启按钮→系统将重启,并跳转到高级启动选项页面→选择“禁用驱动程序强制签名”.重启后在设备管理器中选择安装驱动。—洪叶瀚 2014/11/28 19:09
谢谢洪叶瀚同学的分享。 — 乐永康 2014/12/02 16:58
 
yuandi/arduino/start.txt · 最后更改: 2018/05/16 18:56 由 wojiaoziyou
 
除额外注明的地方外,本维基上的内容按下列许可协议发布:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki