Arduino初级教程

1. Arduino概述

Arduino是一个基于易用硬件和软件的原型平台。由可编程电路板和Arduino IDE的软件组成,将计算机代码写入并上传到物理板。

特点:

  • 板卡读取来自传感器的模拟或者数字输入信号,转换为输出。
  • 通过IDE向板上的微控制器发送一组指令控制板功能。
  • 使用USB线将代码加载到电路板上。

2.Arduino板

板名称工作电压时钟速度数字I/O模拟输入PWMUART编程接口
Arduino UNO R35V16MHZ14661USB通过ATMega16U2

使用板如下:

组成部件

  • 电源USB:板卡使用PC机的USB线供电。
  • 电源(桶插座):板卡可以直接从交流电源供电。
  • 稳压器:控制提供给板卡的电压,稳定处理器和其他元件的直流电压。
  • 晶体振荡器:晶振协助处理时间问题,在晶体顶部打印的数字是FY16.0000,表明频率是16MHZ。
  • Arduino重置:通过板卡的复位按钮(红色)或者连接到RESET的Arduino引脚上,重置板卡。
  • 引脚(POWER):
  • 3.3V–提供3.3V输出电压
  • 5V–提供5V输出电压
  • GND–将电路接地
  • VVin–从外部电源为板卡供电
  • 模拟引脚
    六个模拟输入引脚,A0到A5。从传感器读取信号,转换为可由微控制器读取的数字值。
  • 微控制器
    是主板的大脑,在国产板卡上已经集成,与原型版略有不同。
  • ICSP引脚
    由MOSI,MISO,SCK,RESET,VCC,GND组成的Arduino的微型编程头。另称SPI(串行外设接口),是输出的扩展。
  • LED指示灯
    标记有“ON”的指示灯,仅仅当Arduino接入电源时亮起。
  • TX和RX LED
    TX(发送)和RX(接收),首先,在数字引脚0和1处,指示引脚负责串行通讯;当发送串行数据时,TX以不同速度闪烁,闪烁速度取决于板卡的波特率,RX在接收时闪烁。
  • 数字I/O
    该板卡有14个数字I/O引脚(6个标“~”的提供PWM(脉宽调制)输出),配置为数字输入引脚,读取逻辑值(0/1);或者作为数字输出引脚,驱动其他模块。
  • AREF
    代表模拟参考,作为设置外部参考电压为模拟输入引脚的上限。

3.Arduino安装

  • USB线
  • 下载Arduino IDE 软件,下载地址:Arduino软件(适用于window系统),其他版本参考官网。官网主界面
  • Arduino使用请参考官网教程。

4.Arduino程序结构

Arduino程序第一个命名为“Sketch”,软件结构包括两个函数:

  • setup()函数
 void setup(){

}

用来初始化变量,引脚模式,启用库。

  • Loop()函数
void loop(){

}

允许程序乱序循环的更改和响应。

5.Arduino数据类型

voidBooleancharUnsigned charbyteintUnsigned intword
longUnsigned longshortfloatdoublearrayString char arrayString object
  • void
    函数声明,无返回值。
  • Boolean
    保存二值之一(true/false),占一个字节内存。
  • Char
    存储一个字符值,占一个字节内存。可以对ASCII值字符进行算术运算。
  • Unsigned char
    无符号数据类型,占一个字节内存,编码数字为0~255。
  • byte
    存储一个8位无符号数,占一个字节内存,0~255。
  • int
    存储16位值,占两个字节内存,编码-32768-32767的范围。
  • Unsigned int
    存储2字节,编码0~65535的范围。
  • Word
    存储16位无符号数。
  • long
    存储4字节数据,从-2147483648~2147483647.
  • Unsigned long
    存储4字节数据,范围0~4294967295.
  • short
    存储2字节数据,产生-32768~32767的范围。
  • float
    用于近似模拟值和连续值,取值范围为-3.4028235E+38~3.4028235E+38.
  • double
    占4个字节。精度无增益。

6.Arduino变量

  • 局部变量
    在函数或者代码块中声明的变量。只能由函数或者代码块中的语句使用。
  • 形式参数
    作为函数参数的定义。
  • 全局变量
    位于程序顶部,在程序的整个生命周期中保持使用价值,可以被任何函数使用。

7.Arduino运算符

  • 算术运算符
运算符名称简写描述
赋值运算符=将右值赋给左变量
加号+操作数相加
减号-第一操作数减去第二操作数
乘号*操作数相乘
除号/分母除分子
模数%求余数
  • 比较运算符
运算符名称等于不等于小于大于小于或等于大于或等于
运算符简写=!=<><=>=
  • 布尔运算符
运算符名称andornot
运算符简写&&||!
  • 位运算符
运算符名称andorxornotshift leftshift right
运算符简写&|^~<<>>
  • 复合运算符
运算符名称自增自减复合加复合减复合乘复合除复合模数复合按位或复合按位与
运算符简写++- -+=-=*=/=%=|=&=

8.Arduino控制语句

控制程序执行流程

12345
if 语句if…else 语句if…else if…else 语句switch case语句条件运算符?:

9.Arduino循环

12345
while循环do…while循环for循环嵌套循环无限循环

10.Arduino函数

定义函数语法:

Return type function name(argument1,...)
{
	staments;
}

11.Arduino字符串及字符串对象

字符串类型:

  • 字符数组,与C语言中的字符串相同。
  • 字符串,允许在草图中使用字符串对象。
    字符串字符数组示例:
void setup(){
	char my_str[]="Hello";
	Serial.begin(9600);
	Seral.println(my_str);
}
void loop(){

}

字符串对象:是一个包含数据和函数的构造,它可以和变量一样被创建并分配一个值或字符串。

  • 创建字符串对象,分配一个值。
String my_str="This is my string.";
Serial.begin(9600);
  • 打印字符串
Serial.println(my_str);
  • 字符串转换
my_str.toUpperCase();
  • 覆盖字符串
my_str = "My new string.";
  • 替换字符串
my_str.replace("string","sketch");
  • 获取字符串长度
Serial.println(my_str.length());

12.Arduino时间函数

1234
delay()函数,接收整数参数,是以毫秒为单位的时间delayMicroseconds()函数,接收单个整数参数(微秒)millis()函数,返回程序运行时的毫秒数micros()函数,返回运行时间的毫秒数,在70分钟后溢出

13.Arduino数组

数组是连续的相同类型的内存位置,若应用数组中的特定位置或元素,需指定数组名称和数组中特定元素的位置编号。

  • 声明数组
	type arrayName[arraySize];
  • 数组传递给函数
    这个过程中,会传递数组大小,函数可以处理数组中特定数量的元素;数组名称的值是数组第一个元素在内存的地址,被调函数知道数组存储在内存中的位置;整个数组引用传递,单个数组元素按照简单变量的值传递。
    自定义函数头:
void modifyArray(int b[],int arraySize)

函数原型
告诉编译器参数的数量以及参数预期出现的顺序中的每个参数的类型。

void modifyArray(int [], int );
  • 多维数组
    关键特性:指定两个下标,行列分明。其他详见C语言。

14.Arduino函数库

(1)Arduino I/O函数

  • 引脚配置为INPUT
    Arduino引脚默认为输入,不需显示声明为输入,此类引脚为高阻抗状态;输入引脚<=>引脚前面的100兆欧的串联电阻,切换到其他状态非常容易。
	pinMode(pin,INPUT);
  • 上拉电阻(INPUT_PULLUP)
    无输入状态,如果在输入端添加上拉电阻(到5V)或者下拉电阻(接地电阻),则会将输入引脚引导到已知状态。
    传感器连接到配置为INPUT_PULLUP的引脚,一端接地,HIGH表示传感器关闭,LOW表示传感器开启,引脚处于INPUT模式,配置为上拉电阻导通的引脚被开启,若引脚通过PinMode()切换到OUTPUT模式,引脚配置为高电平;若切换到输入,处于高电平的输出引脚将设置上拉电阻。
  • 引脚配置为OUTPUT
    通过PinMode()配置的引脚处于低阻抗状态,它们可以向其他电路提供大量电流。
  • pinMode()函数
void setup(){
	pinMode(pin,mode);
}

pin - 引脚编号
mode - INPUT / OUTPUT / INPUT_PULLUP

  • digitalWrite()函数
    用于向数字引脚写入HIGH/LOW值。未明确设置PinMode()时,将启用内部上拉电阻。
    如果引脚被设置为OUTPUT,则电压被设置为相应的值:HIGH为5V/3.3V,LOW为0V(接地).
    如果引脚被设置为INPUT,则函数启用(HIGH)或者禁用(LOW)内部上拉电阻。
void loop(){
	digitalWrite(pin,value);
}
  • analogRead()函数
    检测是否有一个电压施加到引脚,通过该函数报告。函数返回0~1023的数字,表示0-5伏特的电压。
	analogRead(pin);

pin - 模拟输入引脚编号,0~5.

  • analogReference()函数
    配置用于模拟输入的参考电压。
	analogReference(type);

type - 可选参数:

  • DEFAULT - 5/3.3V的模拟参考值。
  • INTERNAL - 内置参考
  • INTERNAL1V1 - 内置1.1V参考
  • INTERNAL2V56 - 内置2.56V参考
  • EXTERNAL - 施加到AREF的电压做参考(0~5V),使用前,将模拟参考设置为EXTERNAL.或者通过5K电阻将外部参考电压连接到AREF引脚,允许在外部和内部参考电压之间切换。

(2)Arduino字符函数

1234567891011
int isdigit(int c)是数字返回1int isalpha(int c)是字母返回1int isalnum(int c)是数字或字母返回1int isxdigit(int c)是十六进制数字字符,返回1int islower(int c)是小写字母,返回1int isupper(int c)是大写字母,返回1int isspace(int c)是空白字符,返回1int iscntrl(int c)是控制字符,返回1int ispunct(int c)是打印字符,返回1int isprint(int c)是包含空格的打印字符,返回1int isgraph(int c)是不包含空格的打印字符,返回1

(3)Arduino数学库

  • 库函数
库函数描述
double acos(double_x)acos()函数计算x的反余弦值,取值[0,pi]
double asin(double_ x)asin()函数计算x的反正弦值,取值[-Pi/2,pi/2]
double atan(double_ x)atan()函数计算x的反正切值,取值[-pi/2,pi/2]
double atan2(double_ y,double_ x)atan2()函数计算y/x的反正切值
double cbrt(double_ x)cbrt()函数返回x的立方根
double ceil(double _x)ceil函数返回大于等于x的最小整数值
static double copysign(double _x,double_y)copysign()函数返回x,带有y的符号。
double cos(double _x)cos()函数返回余弦值
double cosh(double _x)cosh()函数返回x的双曲余弦
double exp(double _x)exp()函数返回e的x次幂值
double fabs(double _x)fabs()函数计算浮点数绝对值
double fdim(double _x,double )fdim()函数返回max(x - y,0)
double floor(double _x)floor()函数返回小于或等于x的最大整数值
double fma(double _x,double _y,double _z)fma()函数执行浮点乘加,即(x*y)+z
double fmax(double _x,double_y)fmax()函数返回x和y的较大值
double fmin (double_x,double_y)fmin()函数返回x和y的较小值
double fmod(double _x),double_yfmod()函数返回x/y的余数
double frexp(double _x,int *_prexp)frexp()函数将浮点数分解为规格化分数和2的整次幂
double hypot(double _x,double_y)hypot(0函数返回sqrt(x × \times ×x+y × \times ×y)
int isinf(double _x)x若为正无穷大,返回1;若为负无穷大,返回-1;反之为0
static int isfinite(double_x)x有限,返回非零值。
int isnan(double _x)x为“非数字对象”,返回1
double ldexp(double_x,int_exp)返回x乘以2的exp次幂的值
double log(double _x )-
double log10(double_x)log10(x)
long lrint(double _x)-
long lround(double_x)返回四舍五入的长整数值
double modf(double_x,double*_iptr)-
double pow(double_x,double_y)-
double round(double_x)-
int signbit(double_x)x的值设置符号位后,返回一个非零值
double sin(double_x)-
double sinh(double _x)-
double sqrt(double _x)-
double square(double _x)-
double tan(double _x)-
double tanh(double _x)返回x的双曲正切
double trunc(double _x)将x四舍五入为最近的整数
  • 库中的宏
描述
M_E2.71828常数e
M_SQRT21.414sqrt(2)
M_PI3.1415926常数π
M_LN20.69314ln2

(4)Arduino三角函数

用于计算移动物体的距离或者角度

double sin(double x);
double cos(double y);
double tan(double x);
double acos(double x);
double asin(double x);
double atan(double x);
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《Arduino入门教程.pdf》是一本针对Arduino初学者编写的入门教程。本教程主要介绍了Arduino的基本知识和操作方法,帮助读者快速掌握Arduino的使用技巧。 教程首先介绍了Arduino的基本概念和硬件组成,包括Arduino板、数字和模拟输入输出,以及Arduino编程语言。通过图文并茂的说明,读者可以了解到Arduino的各个部分的作用和连接方式。 接着,教程详细介绍了Arduino的编程语言和编程环境,包括如何设置Arduino开发环境、如何编写基本的Arduino程序和如何上传程序到Arduino板。通过实际案例的分析和讲解,读者可以逐步理解和掌握Arduino的编程方法和技巧。 此外,教程还包括了若干实际项目的实践,比如LED灯控制、温度传感器的使用、舵机的控制等。每个项目都有详细的步骤和说明,读者可以跟随教程一步一步完成项目,深入理解Arduino的应用领域。 通过学习《Arduino入门教程.pdf》,读者可以初步了解到Arduino的基本原理和应用方法,打下坚实的基础。教程的内容简明易懂,图文并茂,适合Arduino的初学者。对于对电子技术和编程感兴趣的人来说,这本教程是个不错的选择。 ### 回答2: 《Arduino入门教程.pdf》是一本针对Arduino入门者编写的教程手册。该教程以简明扼要的方式介绍了关于Arduino的基本知识和操作方法。 该教程首先介绍了Arduino的起源和基本概念,让读者了解它的发展背景和作用。然后详细介绍了Arduino的硬件组成,包括主控板、输入输出端口、电源等。通过对Arduino硬件的介绍,读者可以了解到如何选择适合自己的Arduino主控板以及如何正确连接外围设备。 接着,教程重点解释了Arduino的编程语言和开发环境。它引导读者了解如何安装Arduino IDE、创建和编辑代码,并通过简单的例子演示了如何控制各类传感器和执行器,展示了Arduino的强大功能。 此外,教程还介绍了基本的电子元件和电路知识,如电阻、电容和LED等。这对于初学者来说非常重要,可以帮助他们更好地理解Arduino的工作原理以及如何进行电子电路设计。 最后,教程提供了一些实践项目的案例,如LED闪烁、温度传感器的使用等。这些实践项目既有趣又实用,可以帮助读者将所学知识应用到实际领域中,提升自己的能力。 总之,《Arduino入门教程.pdf》是一本非常实用的教材,适合对Arduino感兴趣的初学者阅读。通过学习该教程,读者可以对Arduino的原理和应用有一个全面的了解,为以后更深入的研究和项目开发打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Siri_only

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值