单片机菜鸟 发表于 2016-12-1 00:28:20

《博哥Arduino学习笔记系列》- 第一课 初识Arduino

本帖最后由 单片机菜鸟 于 2016-12-3 23:54 编辑

一、前言

近段时间,因为偶然项目原因接触了第一个Arduino板子,UNO板子。当时并没有去研究原理而是直接从网上拷贝一些代码而完成项目。后来由于时间空闲,就玩了一把蓝牙小车以及蓝牙RGB灯。最近,忽然觉得,应该从基础看起去了解Arduino,这样才能设计自己的东西,所以就去看了两个电子书《ARDUINO程序设计基础》,《Arduino-语法手册》,所以就准备写个系列帖子去记录一下学习笔记以及过程中所做的试验。

二、什么是Arduino

      Arduino可以是一块小小电路板,也可以是一个开放的电子开发平台。它既包含了硬件,也包含了软件——开发环境以及开发者、使用者创造出来的代码、程序。Arduino抛开了传统硬件开发的复杂操作,不需要了解硬件的内部结构和寄存器设置(如果是单片机开发,是需要了解寄存器并且设置各个寄存器),也不需要过多的电子知识和编程知识,开发者只需要通过简单学习,了解各个引脚和函数的作用,便可利用它开发出各种出色的项目。
      Arduino编译器使用GCC,Arduino语音衍生自Wiring语言,这是一个开源的单片机编程架构,同时Arduino语言又是基于AVR-Libc这个AVR单片机扩展库编写的,意味着很多单片机的寄存器设置细节应该是被二次封装了。

三、选择一款适合自己的Arduino控制器

1、Arduino UNO
       Arduino UNO 是目前使用最广泛的Arduino控制器,具有Arduino的所有功能,是初学者最佳选择。掌握UNO开发技巧,其他型号控制器也是类似的。

      

      

       1)处理器 ATmega328
       2)工作电压 5V
       3)输入电压(推荐) 7-12V
       4)输入电压(范围) 6-20V
       5)数字IO脚 14 (其中6路作为PWM输出)
       6)模拟输入脚 6
       7)IO脚直流电流 40 mA
       8)3.3V脚直流电流 50 mA
       9)Flash Memory 32 KB (ATmega328,其中0.5 KB 用于 bootloader)
       10)SRAM 2 KB (ATmega328)
       11)EEPROM 1 KB (ATmega328)
       12)工作时钟 16 MHz

2、Arduino MEGA
      Arduino Mega 是一个增强型的Arduino 控制器,相对于UNO,它提供了更多的输入/输出接口,可以控制更多的设备,以及拥有更大的程序空间和内存,是完成较大型项目的较好选择。

      

      

      1)控制器      ATmega2560
      2)工作电压      5V
      3)输入电压(推荐)      7-12V
      4)输入电压(限制)      6-20V
      5)数字I/0口      54 (含15路PWM输出)
      6)模拟输入口      16
      7)每个I/0口直流电流      40 mA
      8)3.3v口直流电流      50 mA
      9)闪存(Flash Memory)      256 KB(其中8 KB用作bootloader)
      10)静态存储器(SRAM)      8 KB
      11) EEPROM      4 KB
      12) 时钟      16 MHz

3、Arduino Leonardo
         Arduino Leonardo 使用集成了USB功能的AVR单片机作为主控芯片,具备其他型号Arduino控制器的所有功能之外还可以轻松模拟USB键盘/鼠标等USB设备。

         

         

         1) 微控制器               ATmega32u4
         2) 工作电压               5V
         3) 输入电压(推荐)   7-12V
         4) 输入电压(限制)   6-20V
         5) 数字I/O引脚         20
         6) PWM通道               7
         7)模拟输入通道          12
         8)每个I/O直流输出能力       40毫安
         9)3.3V端口输出能力            50毫安
         10)Flash                              32 KB(ATmega32u4)其中4 KB由引导程序使用
         11)SRAM                           2.5 KB(ATmega32u4)
         12)EEPROM                         1 KB(ATmega32u4)
         13)时钟速度                         16MHz

4、Arduino Due
      Arduino Due 突破性使用了32位的ARM Cortex-M3作为主控芯片。它集成了多种外设,有着其他Arduino板无法比拟的性能,是目前最为强大的Arduino控制器。

      

      1)微控制器AT91SAM3X8E
      2)工作电压Voltage 3.3V
      3)输入电压(推荐)7-12V
      4)输入电压(限制)6-20V
      5)数字I/O引脚54 (其中12路PWM输出)
      6)模拟输入通道Pins 12
      7)模拟输出通道 Pins 2 (DAC)
      8)IO口总输出电流 130 mA
      9)3.3V端口输出能力   800 mA
      10)5V端口输出能力   800 mA
      11)Flash    512 KB (所有空间都可以储存用户程序)
      12)SRAM   96 KB (两个部分: 64KB and 32KB)
      13)时钟速率84 MHz

5、小型化的Arduino
         常见小型Arduino控制器有Arduino Nano,Arduino Mini,Arduino Micro,Arduino LilyPad等。
         一、Arduino Nano
               Arduino Nano是Arduino USB接口的微型版本,最大的不同是没有电源插座以及USB接口是Mini-B型插座。

               

               

               1)处理器 ATmega168 or ATmega328
               2)工作电压 5V
               3)输入电压(推荐) 7-12V
               4)输入电压(范围) 6-20V
               5)数字IO脚 14 (其中6路作为PWM输出)
               6)模拟输入脚 6
               7)IO脚直流电流 40 mA
               8)Flash Memory 16 or 32 KB (其中2 KB 用于 bootloader)
               9)SRAM 1 KB or 2 KB
               10)EEPROM 0.5 KB or 1 KB (ATmega328)
               11)FT232RL FTDI USB接口芯片
               12)工作时钟 16 MHz

         二、Arduino LilyPad
               Arduino 一个特殊版本,是为可穿戴设备和电子纺织品而开发的.
               Arduino LilyPad可以通过USB连接或者外部电源供电,电压可从2.7V到5.5V,需要注意Arduino LilyPad没有保护电路,输入电压不能正负接反也不            能超过阀值。

               

               1) 处理器 ATmega168 or ATmega328
               2) 工作电压 2.7V-5.5V
               3) 输入电压 2.7V-5.5V
               4) 数字IO脚 14 (其中6路作为PWM输出)
               5) 模拟输入脚 6
               6) IO脚直流电流 40 mA
               7) 3.3V脚直流电流 50 mA
               8) Flash Memory 16 KB (ATmega168,其中2 KB 用于 bootloader)
               9) SRAM 1 KB
               10) EEPROM 0.5 KB
               11) 工作时钟 8 MHz

          三、Arduino Mini
                Arduino Mini是Arduino 的最简洁微型版本,可以插在面包板上,适用于对尺寸要求严苛的场合。
                Arduino MIni必须外接扩展板才能够下载程序

               

                1)处理器 ATmega328
                2)工作电压 5V
                3)输入电压 7-9V
                4)输入充电电压 3.7-7V
                5)数字IO脚 14 (其中6路作为PWM输出)
                6)模拟输入脚 8
                7)IO脚直流电流 40 mA
                8)Flash Memory 32 KB (其中2 KB 用于 bootloader)
                9)SRAM 2 KB
                10)EEPROM 1 KB
                11)工作时钟 16 MHz


四、第一个程序
         当你在Arduino IDE上新增项目,默认是以下代码:
void setup() {
// put your setup code here, to run once:

}

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

}

会发现,Arduino的程序结构与传统的c程序结构有所不同——Arduino程序中没有main函数。其实并不是Arduino程序中没有main函数,而是main函数的定义隐藏在了Arduino的核心库文件中。在进行Arduino开发中不直接操作main函数,而是使用setup和loop这两个函数。

    1.setup()
       Arduino控制器通电或者复位后,就会开始执行Arduino的初始化配置(IO口 串口等);
    2.loop()
       setup函数执行完毕后,Arduino会接着执行loop()函数中的程序。而loop函数是一个死循环,其中的程序会不断地重复运行。通常在loop函数中完成程序的主要功能,如驱动各种模块和采集数据等。

所以,这个模型应该是这样的。

int main(){
    setup();
    while(1){
      loop();
    }
}

这样就满足c的程序结构了。

第一课就到此了。

博哥学习笔记系列:

《博哥Arduino学习笔记系列》- 第一课 初识Arduino
      http://www.geek-workshop.com/thread-27936-1-1.html

《博哥Arduino学习笔记系列》- 第二课 Arduino语言基础
      http://www.geek-workshop.com/thread-27938-1-1.html

《博哥Arduino学习笔记系列》- 第三课 经典LED
      http://www.geek-workshop.com/thread-27948-1-1.html

《博哥Arduino学习笔记系列》- 第四课 经典按键实验
      http://www.geek-workshop.com/thread-27958-1-1.html

电磁波 发表于 2016-12-1 08:59:34

不错,原来arduino有着多板子。。

单片机菜鸟 发表于 2016-12-1 09:58:04

电磁波 发表于 2016-12-1 08:59
不错,原来arduino有着多板子。。

哈哈哈哈 可以有

木森林的年轮 发表于 2016-12-2 00:19:51

又见楼主好贴:lol当初买的uno烧了,mega丢了,只剩下一堆mini还在:'(

单片机菜鸟 发表于 2016-12-2 07:03:34

木森林的年轮 发表于 2016-12-2 00:19
又见楼主好贴当初买的uno烧了,mega丢了,只剩下一堆mini还在

迷你也可以干活

木森林的年轮 发表于 2016-12-2 07:43:07

单片机菜鸟 发表于 2016-12-2 07:03
迷你也可以干活

嗯,就是下载的时候稍微麻烦了些。还是nano好:lol

单片机菜鸟 发表于 2016-12-2 08:04:54

木森林的年轮 发表于 2016-12-2 07:43
嗯,就是下载的时候稍微麻烦了些。还是nano好

看需求哈哈哈能完成需求越便宜越好
页: [1]
查看完整版本: 《博哥Arduino学习笔记系列》- 第一课 初识Arduino