最好是坐飞机 最好是坐飞机
关注数: 73 粉丝数: 100 发帖数: 319 关注贴吧数: 71
arduino编程与电路之间的关系 Arduino编程与电路之间的关系是紧密耦合、相互依赖、互为因果的。它们共同构成了一个完整的物理计算系统。理解它们之间的关系对于有效使用Arduino至关重要: 编程是电路的“大脑”和“指挥官”: 意图表达: 代码(使用Arduino语言/C++编写)定义了系统应该做什么、如何响应外部世界(输入)以及如何影响外部世界(输出)。 逻辑控制: 程序控制着Arduino微控制器上的数字引脚和模拟引脚的状态(高电平/低电平、PWM值)。它决定何时读取传感器(输入),如何处理这些数据(逻辑运算、计算、决策),以及何时、如何驱动执行器(输出)。 时序管理: 程序精确控制着操作的顺序和时间(例如,delay(), millis(),定时器中断)。 通信: 程序实现与计算机(串口)、其他Arduino、传感器模块(I2C, SPI)或网络(以太网/WiFi扩展板)的通信协议。 电路是程序的“身体”和“感官/执行器”: 物理接口: 电路将Arduino微控制器的逻辑电平(0-5V)连接到真实世界的物理设备。没有电路,程序无法感知或影响任何物理实体。 输入(感知世界): 电路将物理量(光、温度、压力、距离、开关状态等)转换成Arduino引脚可以理解的电压信号(数字高/低,或模拟电压值)。例如: 光敏电阻 + 分压电路 -> 模拟电压 -> analogRead() 按钮 + 上拉/下拉电阻 -> 数字高/低 -> digitalRead() 输出(影响世界): 电路将Arduino引脚输出的低功率逻辑电平信号(0-5V, 最大约40mA)转换成足以驱动执行器(如LED、电机、继电器、扬声器、显示屏)的信号。例如: LED + 限流电阻 -> digitalWrite(HIGH/LOW) 或 analogWrite() (PWM) 晶体管/MOSFET + 电机 -> digitalWrite(HIGH/LOW) 或 analogWrite() (PWM) 继电器模块 -> digitalWrite(HIGH) 控制大功率设备开关 信号调理: 电路保护Arduino(例如,缓冲、电平转换、隔离)并确保信号质量(例如,滤波、去抖动)。 电源管理: 电路为Arduino本身以及所有外部组件提供稳定、合适的电源。不正确的电源设计可能导致程序运行不稳定或硬件损坏。 它们之间的交互是“感知-思考-行动”的循环: 电路感知: 传感器电路将物理世界的变化转化为电信号。 程序读取: Arduino程序通过digitalRead()或analogRead()函数获取这些电信号值。 程序处理/决策: 程序根据代码逻辑(条件判断、计算、算法)处理读取到的数据。 程序输出: 程序根据处理结果,通过digitalWrite()、analogWrite()(PWM)或通信函数(Serial.write(), Wire.write()等)发出控制指令。 电路执行: 输出电路(执行器驱动电路)接收这些指令,将其转换成物理动作(点亮灯、转动电机、发出声音、打开继电器等)。 循环往复: 整个过程持续不断地循环运行(在loop()函数中)。 关键依赖关系: 程序依赖于电路设计: 代码必须与连接的硬件电路精确匹配。这包括: 正确的引脚分配(代码中的引脚号必须与实际接线一致)。 理解输入信号的类型(数字/模拟)和范围。 理解输出设备的驱动需求(电压、电流、是否需要中间驱动电路如晶体管/继电器)。 遵守电气规范(避免短路、过压、过流)。 电路设计服务于程序功能: 搭建的电路是为了实现程序想要达到的功能。你需要根据程序的需求来选择传感器、执行器并设计连接方式(是否需要分压、上拉、驱动电路等)。 总结比喻: 可以把Arduino编程(软件) 看作系统的“大脑”和“思想”。它包含所有的逻辑、决策和意图。 可以把电路(硬件) 看作系统的“身体”、“感官”(眼耳鼻舌身)和“四肢”。它感知环境并执行大脑发出的动作指令。 它们之间通过引脚(Pin) 这个“神经系统”进行连接和通信。 一个完整的Arduino项目,就像一个有思想、能感知、会行动的机器人,软件和硬件缺一不可。没有软件的硬件是“植物人”,没有硬件的软件是“幽灵”。 因此,学习Arduino不仅仅是学习编程,也不仅仅是学习电路,更重要的是学习如何让程序(软件)与电路(硬件)协同工作,通过代码控制物理世界,或者通过物理世界的变化来触发程序行为。 理解这种关系是创造交互式电子项目的核心。在开发过程中,往往需要在调试代码(逻辑错误、引脚配置错误)和调试电路(接线错误、元件损坏、设计缺陷)之间来回切换。 举个简单例子(点亮LED): 电路: 将LED的长脚(阳极)通过一个220欧姆的限流电阻连接到Arduino的数字引脚13。将LED的短脚(阴极)连接到GND。 编程: arduino void setup() { pinMode(13, OUTPUT); // 配置引脚13为输出模式(驱动电路)}void loop() { digitalWrite(13, HIGH); // 设置引脚13输出高电平(5V)-> 电流流过LED使其发光 delay(1000); // 等待1000毫秒(1秒) digitalWrite(13, LOW); // 设置引脚13输出低电平(0V)-> LED熄灭 delay(1000); // 等待1000毫秒(1秒)} 关系体现: 程序 (digitalWrite(13, HIGH)) 命令引脚13输出高电平 -> 电路(引脚13 -> 电阻 -> LED -> GND)形成通路 -> 电流流过 -> LED发光。程序通过控制引脚电平的持续时间 (delay(1000)) 来控制LED亮灭的时长。电路是实现程序控制意图(让LED闪烁)的物理路径和执行者。
Arduino的由来。 Arduino创始团队中的Massimo Banzi之前是意大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到既便宜又好用的微控制器。DavidCuartielles是一个西班牙籍芯片工程师,当时在这所学校做访问学者。2005年冬天,Massimo Banzi跟 David Cuartielles讨论了这个问题。两人决定设计自己的电路板,并吸收了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程序代码。又过了三天,电路板就完工了。Arduino创始团队据说Massimo Banzi喜欢去一家名叫di Re Arduino的酒吧,该酒吧是以1000年前意大利国王Arduin的名字命名的。为了纪念这个地方,他将这块电路板命名为Arduino。几乎任何人,即使不懂电脑编程也能用Arduino做出很酷的东西,比如对传感器作出回应,闪烁灯光,还能控制马达。随后Banzi、Cuartielles和Mellis把设计图放到了网上。版权法可以监管开源软件,却很难用在硬件上,为了保持设计的开放源码理念,他们决定采用Creative Commons(CC)的授权方式公开硬件设计图。在这样的授权下,任何人都可以生产电路板的复制品,甚至还能重新设计和销售原设计的复制品。人们不需要支付任何费用,甚至不用取得Arduino团队的许可。然而,如果重新发布了引用设计,就必须声明原始Arduino团队的贡献。如果修改了电路板,则最新设计必须使用相同或类似的Creative Commons(CC)的授权方式,以保证新版本的Arduino电路板也会一样是自由和开放的。唯一被保留的只有Arduino这个名字,它被注册成了商标,在没有官方授权的情况下不能使用它。短短几年时间,Arduino4第1章初识Arduino 在全球积累了大量用户,推动了开源硬件、创客运动,甚至是硬件创业领域的发展。越来越多的芯片厂商和开发公司宣布自己的硬件支持Arduino。在Arduino的推动下诞生了许多优秀的开源硬件项目,有趣的是,Arduino本身也是多个开源项目融合的成果。Arduino 编译器使用的是GCC,这是GNU开GCC/G++undefined Arduino 语言衍生自Wiring语言,是一个开源的Wiring 单片机编程架构,同时Arduino语言又是基于JAVA AVR-Libc这个AVR单片机扩展库编写的,AVR-Libc也是一个优秀的开源项目。ArduinoProcessing 集成开发环境是基于Processing的,ProcessingAVR-DUDE 是一个为设计师设计的新型语言,当然这也是一个开源项目。Processing开发环境是用JAVA编写图1-7组成Arduino的开源项目的,JAVA是众所周知的开源项目。要想将编译好的Arduino程序下载到Arduino控制器中,还需要用到AVR-DUDE,这也是一个开源项目的成果。可以说,没有这些开源项目,就没有今天的Arduino。
1 下一页