电子开发 | 基础入门 | 电路原理图 | 梯形图实例 | PLC基础   《如果喜欢本站,请按 Ctrl+D 手动收藏!感谢您的支持》一起学习一起进步,电子开发王欢迎您!.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

★电路公式手册,最新版《电子电路公式计算器》,电路公式查询手册 电路公式计算器【电子从业人员必备手册】
☆十天学会单片机实例100 c语言 chm格式。资料内容详细,覆盖例子多,内容广【电子从业人员必备手册】
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> Arduino开发学习 >> 正文

Arduino学习记录 基础知识总结_arduino pullup

作者:佚名    文章来源:网络整理    点击数:19    更新时间:2025/3/14

一、INPUT和OUTPUT
1.当引脚设置为INPUT状态时,引脚为高阻抗状态(100兆欧)。此时引脚可以用于读取传感器信号或开关信号。
2.当引脚设置为OUTPUT状态时,引脚为低阻抗状态。这意味着Arduino可以向其它电路元器件提供电流。也就是说,Arduino引脚在输出(OUTPUT)模式下可以电亮LED或者驱动电机。
3.INPUT_PULLUP模式:Arduino微控制器自带内部上拉电阻。在该模式下可以使用该内部上拉电阻。

二、引脚的作用

 
1.数字引脚:
●引脚1-13用作数字输入/输出引脚。其中,引脚13连接到板载的LED指示灯;引脚 3、5、6、9、10、11具有PWM功能。
●数字引脚可以开启或者关闭。打开时,处于5V的高电平状态;关闭时,处于0V的低电平状态。
●当数字引脚配置为输出时,它们设置为0或5V。当配置为输入时,电压可以在0-5V之间变化, 并转换为数字表示(0或1)。
●脉宽调制(PWM)是一种调制技术,用于将消息编码为脉冲信号。pwm由两个关键部分组成:频率和占空比。频率决定完成单个周期所需要的时间以及信号从高到低的波动速度。占空比决定信号在总时间段内保持高电平的时间。
2.电源:
●VIN引脚:使用外部电源为UNO开发板供电
●5V和3.3V:向外部组件提供稳压的5V和3.3V
●RESET引脚:复位Arduino开发板
3.模拟输入:
●A0-A5作为ADC(模数转换器)。这些引脚用作模拟输入,但也可以用作数字输入或者输出。
●模数转换:ADC是用于将模拟信号转换为数字信号的电子电路。引脚A0-A5能够读取模拟电压。ADC可以通过1024个数字电平表示模拟电压,将电压转换为微处理器可以理解的位。e.g IP语音(将声波转换为模拟电压,通过设备的ADC,转换成数字数据,通过互联网传输到接收端。

三、PWM(方波控制信号)
1.工作原理:采用不同的占空比来模拟“模拟输出”。
2.作用:
●提供模拟输出;如果数字输出被过滤,则其模拟电压将介于0%-100%之间
●生成音频信号
●控制灯光亮度,为电机提供变速控制
●生成调制信号,例如驱动用于远程控制的红外LED
3.使用:
●analogWrite(pin,dutyCycle)
pin值选择(3,5,6,9,10,11),dutyCycle的值在0~255之间。这种方式pwm信号的频率是固定的默认值(490Hz)。

1
2
3
4
5
6
7
8
9
# define analogPin 3
void setup()
{
 pinMode(analogPin,OUTPUT);
}
void loop()
{
 analogWrite(analogPin,100);  // 输出PWM,占空比为 100/255
}

●delayMicroseconds()手动实现频率可调的PWM
(1)两次的digitalWrite输出状态必须相反;
(2)可以用delay()实现毫秒级延迟,用delayMicroseconds()实现微妙级延迟

(3)特点
1.pwm的比例可以更精确
2.周期和频率可控制
3.所有pin脚都可以输出,不仅局限于6个脚
4.缺点:CPU无法进行其他活动

1
2
3
4
5
6
7
8
9
10
11
void setup()
{
  pinMode(8, OUTPUT);    // 设置8号引脚为输出模式
}
void loop()
{
  digitalWrite(8, HIGH);
  delayMicroseconds(100);    // 输出PWM,占空比为100/1000=10%
  digitalWrite(8, LOW);
  delayMicroseconds(1000 - 100);  // 修改这里的1000可以调整频率,总周期为1000us,所以频率为1000Hz.
}

四、三段代码的区别

 

●第一段代码定义了一个布尔型变量pushButton,将2号引脚的电平状态赋给pushButton,并直接根据pushButton的真假赋予1/0进入条件判定,同时在判定时加入了逻辑运算符!,使得判定的值相反。所以该代码的运算结果为按下按钮时LED灯亮,松开按钮时LED灯不亮。
●第二段代码定义了一个整形变量sensorVal,将2号引脚的电平状态赋给sensorVal,在条件判定时,按钮的逻辑状态是反的,当按钮没有按下时,2号引脚为高电平状态,在if语句中要使13号引脚为低电平状态,LED灯不亮,当按钮按下时则相反。同时该段代码的第2行和第10行还启动了串口通讯,并把速率调到9600,则用户可以在串口中看到sensorVal的值。
●第三段代码运用了两个按钮操作,因此定义了两个boolean变量。但在if语句的判定中没有使用!运算,即运行结果为当两个按钮都没有按下时,13号引脚的状态为高电平,LED灯亮;当按下了其中一个按钮或者两个按钮时,13号引脚为低电平状态,LED灯不亮。

五、逻辑运算符

●&&逻辑与:只有在两个操作数都为真时才返回真。
●&:取地址的单目运算符;位运算符,表示“按位与”,是双目运算符。
●||逻辑或:任意一个为真时返回真。
●!逻辑非:当操作数为假时返回真。

六、串口通讯

1
2
3
4
5
6
7
void setup(){
    Serial.begin(9600);
}
void loop(){
    if (Serial.available()){
        int value=Serial.read();
}


1.Serial begin(9600)
设置串口通信波特比率为9600
2.if(Serial.avilable())
判断Arduino串口是否收到数据,函数Serial.available()返回值为int型,不带参数
3.int var=Serial.read()
将串口数据读入到变量var中,函数Serial.read()也不带参数,返回值为串口数据,int型

七、传感器
1.主要参数
vcc:5V电源
Trig:控制端(触发)
Echo:接收端(回声)
Gnd:接地端
探测距离:2cm-450cm
感应角度:<15度
探测精度:0.3cm

2.工作原理

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int TrigPin=8;       //设置发射脚位
const int EchoPin=9;      //设置接收脚位
float cm;                 //浮点型数据类型(加小数点,提高精准度)
void setup() {
Serial.begin(9600);
pinMode(TrigPin,OUTPUT);
pinMode(EchoPin,INPUT);
}
void loop() {
digitalWrite(TrigPin,LOW);        //用低高低电平发送脉冲给Trigpin引脚
delayMicroseconds(2);             //微秒级延时
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,LOW);
cm=pulseIn(EchoPin,HIGH)/58.0;    //读取脉冲宽度,换算成厘米
Serial.print(cm);                 //显示距离
Serial.print("cm");               //显示单位
Serial.println();                 //回车
delay(1000);
}

●const的作用是将定义的脚位存储在只读存储器,即存储在UNO板的硬盘当中,在运行过程中节约UNO板的资源。
在C语言中,关键字const用来定义常量,,如果一个变量被const修饰,那么它的值就不能再改变。
●pulseIn函数其实就是一个简单的测量脉冲宽度的函数,默认单位是us=10^-6s。也就是说pulseIn测出来的是超声波从发射到接收所经过的时间。对于除数58也很好理解,声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。即为:0.0343厘米/微秒,再换一个角度,1/(0.0343 厘米/微秒)即:29.15 微秒/厘米。这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。但是发送后到接收到回波,声音走过的是2倍的距离呀。所以实际距离就是1厘米,对应58.3微秒。实际上整个测距过程是测的发出声波到收到回波的时间,你的程序里的第一个distance实际上是时间us。所以换成距离cm,要除以58。当然除以58.3可能更精确。所以我们可以用 pulseIn(EchoPin, HIGH) / 58.00获取测得的距离。


Tags:Arduino开发板,Arduino,入门教程  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
电子开发网:汇集综合各类电子制作与电路图的网站,plc工控技术,模电数电知识,单片机EDA等等!荟萃电路图网站精华,为工程师创造价值。欢迎关注微信公众号:电子开发网!
最新文章

三菱PLC软件 GX Wor

西门子200smartPLC选

模拟量转换工程量转

简述555定时器工作原

KingView组态王使用

三菱FX3U PLC与组态
 简单三极管逆变器
 TL494制作50HZ逆变
 80W简单的功放电路
 555制作的简易电子
 850热风枪电路图原
 直流12v荧光灯电路
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询