Arduino编程基础与常用函数(详细)解析

article/2025/9/22 22:47:51

Arduino编程基础

  • 关键字:
    if、if…else、for、switch、case、while、do…while、break、continue、return、goto。
    语法符号:每条语句以“;”结尾每段程序以“{}”括起来。

  • 数据类型:
    boolean、 char、 int、 unsigned int、 long、 unsigned long、 float、 double、 string、 array、 void。

  • 常量:
    HIGH 或者 LOW,表示数字I/O引脚的电平,
    HIGH 表示高电平(1),
    LOW 表示低电平(0);
    INPUT 或者 OUTPUT,表示数字I/O引脚的方向,
    INPUT 表示输入(高阻态),
    OUTPUT 表示输出(AVR能提供5V电压,40mA电流);
    TRUE 或者 FALSE,TRUE表示真(1),FALSE表示假(0)。

  • 程序结构:
    主要包括两部分,即void setup()和void loop()。
    其中,前者是声明变量及引脚名称(如int val;int ledPin=13),在程序开始时使用,初始化变量和引脚模式,调用库函数如pinMode(ledPin,OUTPUT)等,
    setup()函数全程只执行一次,只在你初始设置时执行一次。
    而void loop()用在setup()函数之后,不断地循环执行,是Arduino的主体。

数字I/O引脚的操作函数

  1. pinMode(pin, mode)
    pinMode函数用于配置引脚以及设置输出或输入模式,是一个无返回值函数。该函数有两个参数: pin和mode。pin参数表示要配置的引脚;
    mode 参数表示设置该引脚的模式为INPUT(输入)或OUTPUT(输出)。
    INPUT 用于读取信号,OUTPUT用于输出控制信号。
    pin的范围是数字引脚0到13,也可以把模拟引脚(A0~A5)作为数字引脚使用,此时编号为14的引脚对应模拟引脚0,编号为19的引脚对应模拟引脚5。

    该函数一般会放在setup()里,先设置再使用。

  2. digitalWrite(pin, value)
    该函数的作用是设置引脚的输出电压为高电平或低电平,也是一个无返回值的函数。pin 参数表示所要设置的引脚;
    value参数表示输出的电压为HIGH(高电平)或LOW(低电平)。

    注意:使用前必须先用pinMode设置。
    
  3. digitalRead(pin)
    该函数在引脚设置为输入的情况下,可以获取引脚的电压情况:HIGH(高电平)或者LOW(低电平)。

数字I/O引脚操作函数使用例程如下:

int button= 9;//设置引脚9为按钮输人引脚int LED= 13;//设置引脚13为LED输出引脚,内部连接开发板上的LEDvoid setup( )
{ 	pinMode( button, INPUT);//设置为输人pinMode( LED, OUTPUT) ;//设置为输出void loop()
{if(digitalRead( button) == LOW) //如果读取高电平digitalWrite(LED, HIGH); //引脚 13输出高电平else :digitalWrite(LED, LOW); // 否则输出低电平
}

模拟I/O引脚的操作函数

1.analogReference(type)
该函数用于配置模拟引脚的参考电压。它有三种类型:DEFAULT是默认模式,参考电压是5V;INTERNAL是低电压模式,使用片内基准电压源2.56V;EXTERNAL是扩展模式,通过AREF引脚获取参考电压。

注意:若不使用本函数,默认是参考电压5V。若使用AREF作为参考电压,需接一个5kΩ的上拉电阻。

2.analogRead(pin)
用于读取引脚的模拟量电压值,每读取一次需要花100μs的时间。参数pin表示所要获取模拟量电压值的引脚,返回为int型。它的精度为10位,返回值为0~1023。

注意:函数参数pin的取值范围是0~5,对应开发板上的模拟引脚A0~A5。

3.analogWrite(pin, value)
该函数是通过PWM(Pulse-WidthModulation,脉冲宽度调制)的方式在引脚上输出一个模拟量。图1-23所示为PWM输出的一般形式,也就是在一个脉冲的周期内高电平所占的比例。它主要应用于LED亮度控制、直流电机转速控制等方面。

  • 占空比的定义

在这里插入图片描述

注:

PWM波形的特点是波形频率恒定,占空比D可以改变。Arduino中的PWM的频率大约为490Hz,Arduino UNO开发板支持以下数字引脚(不是模拟输入引脚)作为PWM模拟输出:3、5、6、9、10、11。开发板带PWM输出的都有一个波浪线形的符号。

注意:PWM输出位数为8位,即0~255。

模拟I/O引脚的操作函数使用例程如下:

int sensor = A0;//A0 5IJAI it EXEt fi 5iint LED= 11;//引脚11输出LEDvoid setup( )
{ 	Serial. begin(9600);
}
void loop()
{	int v;v = analogRead( sensor);Serial. pr intln(v, DEC);//可以观察读取的模拟量analogWrite(LED, v/4);//读回的值范围是0~1023,结果除以4才能得到0~ 255的区间值
}

时间函数

  • delay()
    该函数是延时函数,参数是延时的时长,单位是ms(毫秒)。应用延时函数的典型例程是跑马灯的应用,使用Arduino开发板控制4个LED依次点亮。
    程序如下:
void setup( )
{
pinMode( 6, OUTPUT) ;//定义为输出
pinMode( 7, OUTPUT) ;
pinMode( 8, OUTPUT) ;
pinMode(9, OUTPUT);]
}
void loop()
{
int i;
for(i= 6;i<= 9;i++ )//依次循环4盏灯
{
digitalWrite( i, HIGH);//点亮LED
delay( 1000);//持续1s
digitalWrite( i, LOW);//熄灭LED
delay(1000) ;//持续1s
}
}

当然还有其他的时间函数,例如:delayMicroseconds()、millis()、micros() ,这里就不过多介绍了,感兴趣的小伙伴可以自行查询学习。毕竟度娘是我们最好的老师。

串口通信函数

串行通信接口(serial interface)使数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信的接口。

由于串行通信接口(COM)不支持热插拔及传输速率较低,因此目前部分新主板和大部分便携计算机已开始取消该接口,串口多用于工控和测量设备以及部分通信设备中,包括各种传感器采集装置、GPS信号采集装置、多个单片机通信系统、门禁刷卡系统的数据传输、机械手控制和操纵面板控制直流电机等,特别是广泛应用于低速数据传输的工程应用。

主要函数如下:

1.Serial.begin()该函数用于设置串口的波特率,即数据的传输速率,指每秒钟传输的符号个数。一般的波特率有9600、19200、57600、115200等。例如:Serial.begin(57600)

2.Serial.available()该函数用来判断串口是否收到数据,函数的返回值为int型,不带参数。

3.Serial.read()该函数不带参数,只将串口数据读入。返回值为串口数据,int型。

4.Serial.print()该函数向串口发送数据。可以发送变量,也可以发送字符串。

Serial.print("today is beautiful");
Serial.print(x,DEC);//以十进制发送变量x
Serial.print(X,HEC);//以十六进制发送变量x

5.Serial.println()
该函数与Serial.print()类似,只是多了换行功能

串口通信函数使用例程:

int x=0;
void setu()
{
Serial.begin(9600);//波频率9600
}
void loop()
{	if (Serial.avaiable()){x=Serial.read();Serial.print("I have a girlfriend");Serial.println(x,DEC);//换行输出}
}

Arduino库函数

Arduino的库函数与C语言和C++一样,Arduino平台也有相关的库函数,提供给开发者使用。这些库函数的使用,与C语言的头文件使用类似,需要用#include语句,可将函数库加入Arduino的IDE编辑环境中

如#include“Arduino.h”语句。

在Arduino开发中主要库函数的类别为:
数学库主要包括数学计算;
SD库函数用于读写SD卡;
Servo库函数用于舵机的控制;
Stepper库函数用于步进电机控制;
Ethernet库函数用于以太网的通信;
WiFi库函数用于WiFi的控制和使用;
EEPROM库函数用于向EEPROM中读写数据;
LiquidCrystal库函数用于液晶屏幕的显示操作;
Firmata库函数实现Arduino平台与PC串口之间的编程协议等。

诸如此类的库函数非常多,还包括一些Arduino平台爱好者自己开发的库函数。关于库函数这里就不过多介绍了。以上就是本次的Arduino学习笔记,希望对你有帮助。文中如有不妥,草率之处,敬请批评指正一起学习!


http://chatgpt.dhexx.cn/article/8sMTqguR.shtml

相关文章

Arduino入门-Arduino编程语言入门教程

随着社会的发展&#xff0c;越来越多的中小学生、老师、创客们、设计师、艺术家等都在玩Arduino,那Arduino编程语言入门难吗&#xff1f;我们都知道Arduino使用C/C编写程序&#xff0c;虽然C兼容C语言&#xff0c;但这是两种语言&#xff0c;C语言是一种面向过程的编程语言&…

arduino c语言pdf,arduino编程从零开始

arduino编程从零开始是一款Arduino新手编程入门手册,由Simon Monk编著,刘椮楠翻译,全书揭示了arduino的软件特性,介绍了如何在arduino上用c语言编写能稳定运行的sketch。本书的重点是对Arduino编程,作者将介绍怎样简单并有趣地对Arduino编程,避免使用生涩难瞳的代码而让制…

小白入门Arduino,一步一图搭建开发环境

目录 1、Arduino 2、环境搭建 2.1 下载软件&#xff1a; 2.2 ide安装 2.3 软件试用 2.5 代码解读 3、总结 最近有机会接触到物联网的开发&#xff0c;所以自己学习一下&#xff0c;记录一下。 在查阅了各种资料&#xff0c;对比了下各种难度&#xff0c;资料的丰富程度…

arduino入门1

文章目录 编程并不是一间很难的事&#xff0c;你可这样理解&#xff1a; 在编程中&#xff0c;你就像是一个老板arduino就像是你的员工&#xff0c;你可指挥arduino去做你想让它做的事。当然&#xff0c;要做的事得在员工的工作范围之内。 arduino这位员工就是一块电路板&…

Arduino面向对象编程基础

面向对象编程基础 1.基础概论 面向对象三大特征&#xff1a;继承、封装、多态 2.简单的类和对象 案例&#xff1a;创建Led类 案例01&#xff1a;感受构造函数与析构函数的功能 class Led {public :Led(); //构造函数声明&#xff0c;初始化对象&#xff0c;在创建对象的…

Arduino入门教程

Arduino是一款简单易学的开源电子原型平台&#xff0c;包含硬件&#xff08;各种型号的Arduino板&#xff09;和软件&#xff08;Arduino IDE&#xff09;。它通过各种各样的传感器来感知环境&#xff0c;再通过控制灯光、电机和其他的装置来完成很多自动控制任务&#xff0c;在…

Arduino学习篇,基础入门

什么是arduino? 简单来讲arduino就是通过源代码控制开发板的信号输入输出从而实现对一些电子元件的控制&#xff0c;例如LED灯&#xff0c;蜂鸣器&#xff0c;按键 arduino程序 首先来讲arduino程序是基于C语言&#xff0c;而实现类似对于LED灯和蜂鸣器的简单控制只需简单C语…

TCP 四次挥手,可以变成三次挥手吗?

作者&#xff1a;小林coding 计算机八股文网站&#xff1a;https://xiaolincoding.com 大家好&#xff0c;我是小林。 虽然我们在学习 TCP 挥手时&#xff0c;学到的是需要四次来完成 TCP 挥手&#xff0c;但是在一些情况下&#xff0c; TCP 四次挥手是可以变成 TCP 三次挥手的…

TCP的三次握手、四次挥手--非常详细讲解

本篇文章转自 TCP的三次握手(建立连接&#xff09;和四次挥手(关闭连接&#xff09;不过进行了一些编辑。 TCP(Transmission Control Protocol) 传输控制协议 1&#xff64;TCP三次握手和四次挥手的过程图 tcp的6种标志位的分别代表&#xff1a; SYN(synchronous建立联机) ACK…

两张动图-彻底明白TCP的三次握手与四次挥手

背景描述 通过上一篇中网络模型中的IP层的介绍&#xff0c;我们知道网络层&#xff0c;可以实现两个主机之间的通信。但是这并不具体&#xff0c;因为&#xff0c;真正进行通信的实体是在主机中的进程&#xff0c;是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。…

http——三次握手四次挥手

http htttp:TCP三次握手四次挥手&#xff08;TCP连接的释放&#xff09; htttp: 超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消…

HTTP的三次握手和四次挥手

目录 1. HTTP的三次握手2. HTTP的四次挥手3. HTTPS的三次握手 1. HTTP的三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力…

我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

tcp四次挥手,为什么是四次?

上一篇博客说了三次握手为什么是是三次&#xff08;点这里&#xff09;&#xff0c;那么现在就介绍一下四次挥手。大家都知道TCP是全双工的&#xff0c;再建立连接时的三次握手中的SYN和ACK一起发送&#xff0c;这里就会有疑问&#xff0c;为什么在四次挥手的时候没有将SYN和AC…

TCP三次握手,四次挥手的全过程,为什么需要三次握手,四次挥手

文章目录 前言TCP协议的介绍三次握手四次挥手 前言 主要介绍为什么TCP协议需要三次握手和四次挥手 TCP协议的介绍 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议. 面向连接&…

TCP四次挥手

第一次挥手&#xff1a; 主动断开方&#xff08;客户端&#xff0c;服务的都可以&#xff09;向对方发送一个FIN结束请求报文&#xff0c;并设置序列号和确认号&#xff0c;随后主动断开方进入FIN_WAIT1状态&#xff0c;这表示主动断开方已经没有业务数据要发给对方了&#xff…

TCP的三次握手与四次挥手详解

文章目录 TCP 协议简述TCP包首部TCP 三次握手建立连接TCP 四次挥手关闭连接常见面试题&#xff1a; TCP 协议简述 TCP 提供面向有连接的通信传输&#xff0c;面向有连接是指在传送数据之前必须先建立连接&#xff0c;数据传送完成后要释放连接。TCP传输的是字节流 无论哪一方…

什么是“三次挥手”和“四次握手”

文章目录 一、为什么要进行三次握手二、握手为什么要三次三、挥手为什么需要三次四、挥手为什么三次不行总结 前言 首先&#xff0c;我们先说什么是”三次握手“和”四次挥手“ 1.我们先来简单介绍一下”三次握手“ &#xff08;1&#xff09;.先来介绍一下里面这些看起来比较…

简述TCP四次挥手

四次挥手主要用到了两个标志位(ACK&FIN): ACK 示意参考:TCP三次握手FIN: 终止数据传输标志位---->当FIN为1的时候代表此数据为终止断开连接的请求 四次挥手流程: 由于TCP连接是双向传输的对等的模式即双工 wiki百科定义: 全双工&#xff08;full-duplex&#xff09;的…

简述四次挥手

什么是四次挥手 由于TCP连接是全双工的,断开一个TCP连接,需要客户端与服务器发送四个包来确认连接的断开 简述四次挥手的过程: 因为TCP是全双工的,因此,每个方向都要单独关闭 当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着 一方向不会再…