【Arduino】常用函数记录

 

由于有时候过段时间不写Arduino,就会把部分函数给遗忘。虽然知道有这么个函数,但是函数却比较模糊。而临时查找又觉得麻烦,因此在此开新帖记录一些开发过程中经常用到的函数,便于日后查找。

  • 数字操作函数:
pinMode()
digitalWrite()
digitalRead()
  • 模拟操作函数:
analogRead()
analogWrite()
analogReference()
  • 映射函数:
/* 一对一个映射 */
map(value,fromLow,fromHigh,toLow,toHigh)
/* 仅处理min-max之间是数据,其余舍弃 */
constrain(value,min,max)
  • 时间函数:
delay()/* 单位ms */
delayMicroseconds()/* 单位us */

利用时间函数实现PWM示例:
digitalWrite(13,HIGH);
delayMicroseconds(100);
digitalWrite(13,LOW);
delayMicroseconds(900);
/* 相当于10%的占空比 */

millis();
/* 开发板启动或重启后的硬件定时器  使用:unsigned long startTime = millis(); */
mircos()
/* us为单位,约10分钟重置 */
  • 随机函数:
random(min(可选,缺失为0),max)
randomSeed()

示例:
randomSeed(analogRead(A0));
/* A0应该为浮空的引脚 */
  • 硬件中断:
attachInterrupt(interrupt,function,mode)
/*
    interrupt:中断号,只有0和1对应着数字引脚2和3
    function:中断执行函数
    mode:触发状态,有LOW(低电平),CHANGE(点平变化),RISING(上升沿),FALLING(下降沿)
*/
detachInterrupt(interrupt);
/* 停止该中断 */
  • 硬件串口库:
Serial.begin(rate);
/* 300、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 */
Serial.available();
/* 返回串口缓冲区中的可用的字节数,最大128字节 */
Serial.read();
/* 从串口缓冲区中读取一字节 */
Serial.print(data);
Serial.println(data);
Serial.write(data);
/* 
    print/println:可以根据发送的数据类型来确定data的数据类型
    write:效率高,统统转化成ascii码处理,单字节发送数据BYTE
*/
  • 软件串口库:
/* 在Arduino数字引脚上生成一个软件串口,可以拓展通过串口连接的元件数量 */
#include <SoftwareSerial.h>
/* 生成实例 */
SoftwareSerial name(rxPin,txPin);
name.begin(rate);
name.flush();/* 清空串口缓冲区数据 */
  • wire库
/* address用于设置Arduino是主元件还是从元件 */
Wire.begin(address);
/* 可以用于多个元件连接到一个数据总线上的情况 */
Wire.beginTransmisssion(address);
Wire.endTransminssion();
/* 给元件发送数据 */
Wire.write(value);
Wire.write(value,quantity);
/* 从元件中读取数据 */
/* requestFrom从总线获取数据,再由read函数每次读出一字节数据 */
Wire.requestFrom(address,quantity);
Wire.read();
  • 未完待续……
### Arduino 完整函数列表及说明 #### 标准 Arduino 提供了一系列的标准来简化开发过程,使开发者能够更方便地实现各种功能。 - **EEPROM**: 支持对 EEPROM 存储器的读写操作。这允许保存持久性的数据,在断电后仍能保持不变[^2]。 - **Ethernet**: 通过 Arduino Ethernet Shield 实现与网络的通信能力,适用于需要联网的应用场景。 - **Firmata**: 遵循 Firmata 协议,使得可以通过计算机上的软件经由串行接口控制 Arduino 板子的工作状态和外设连接情况。 - **LiquidCrystal**: 控制液晶显示器(LCD),可用于显示文字或简单图形界面,广泛应用于各类交互式项目中。 - **SD**: 对 SD 卡的支持让存储大量数据成为可能,比如日志记录或是多媒体文件管理等用途。 - **Servo**: 方便地驱动伺服电机完成角度定位任务;对于机器人手臂关节运动控制非常有用。 - **SPI**: SPI 总线协议实现了快速的数据传输速率,适合于高速外围设备之间的通讯需求。 - **SoftwareSerial**: 当硬件 UART 接口不足时,此可以在任意两个未被占用的 GPIO 上创建额外的异步串行端口,特别针对 Nano 和 UNO 这样的型号设计。 - **Stepper**: 步进电机是一种精确位置控制系统的核心部件之一,该提供了对其初始化以及运转速度设定等功能的方法调用。 - **WiFi**: 增强版无线局域网接入方案,相比传统的有线方式更加灵活便捷,满足物联网应用中的远程监控和服务部署要求。 - **Wire (TWI/I2C)**: I²C 是一种多主机总线结构下的双向二线制同步串行通信机制,常用来连接低速周边装置如温度传感器、加速度计等等。 - **Matrix & Sprite**: 主要面向 LED 矩阵显示屏领域,前者负责基础像素级的操作而后者则侧重于图像绘制效果优化方面的工作。 除了上述提到的基础类之外,还有更多第三方贡献者所编写的扩展型可供选用,它们覆盖了从信号处理到机器学习等多个前沿技术方向,极大地拓宽了 Arduino 的应用场景范围。 ```cpp // 示例:使用 LiquidCrystal 打印消息至 LCD 屏幕上 #include <LiquidCrystal.h> // 初始化引脚配置并指定 RS, E, D4, D5, D6, D7 所对应的数字管脚编号 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // 设置两行十六列大小的屏幕布局形式 lcd.begin(16, 2); } void loop() { // 清除当前屏幕上已有的任何字符内容 lcd.clear(); // 将光标移动到第零行首位置处准备书写新信息 lcd.setCursor(0, 0); // 向第一行列输出字符串 "Hello" lcd.print("Hello"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值