电控学习 第一周

目录

程序代码:

1、定义变量

2、void setup( )

3、void loop( )

函数:

1、pinMode( )

2、digitalWrite( )

3、delay( )

4、tone( )

5、noTone( )

6、analogWrite( )

7、analogRead( )

8、attachInterrupt( ) 

9、detachInterrupt( )

10、interrupts( )

11、noInterrupts( )

 PWM脉冲宽度调制:

1、PWM作用:

2、产生PWM:

1)analogWrite(pin,val)

2)手动代码实现

3)使用PWM寄存器

3、基本原理:

4、周期(通导时间):

5、占空比:


程序代码:

1、定义变量

2、void setup( )

{ } 只跑一遍程序

3、void loop( )

{ } 主函数 是循环运行的

Serial.begin(9600) 设置波特率 要使与软件设置的波特率保持一致才能实现通信

Serial.real( ) 读取PC机发送给Arduino的指令或字符 一般用一个变量来接受值

Serial.println( ) 打印返回电脑的信息 末尾会输出回车

Serial.print( ) 打印返回电脑的信息 不输出回车换行

函数:

1、pinMode( )

将指定引脚配置为输入或输出模式 无返回值

pinMode(pin,mode)

pin:要设置的引脚编号

mode:设置模式

INPUT(输入模式)

OUTPUT(输出模式)

INPUT_PULLUP(上拉输入模式)

2、digitalWrite( )

将数字HIGH或LOW值写入数字引脚 无返回值

digitalWrite(pin,value)

pin:要设置的引脚编号

value:设置高低电平

HIGH(1) -> 5V

LOW(0) ->0V

3、delay( )

将程序暂停给定参数的时间量(以毫秒为单位) 无返回值

delay(ms)

ms:暂停的毫秒数

闪烁的LED灯:

1、先通过pinMode( )设置引脚为13为输出模式(OUTPUT) 在setup( )函数内

2、再通过digitalWrite( )改变引脚13的电平(HIGH/LOW) 在loop( )函数内

3、用delay( )来暂停使我们可以清晰看到闪烁状态

int pin = 13;
void setup()
{
	pinMode(pin, OUTPUT);//设置13号引脚为输出状态
}
void loop()
{
	digitWrite(pin, HIGH);//设置13号引脚为高电平
	delay(1000);//延迟1秒,使能看到清晰的闪烁状态
	digitWrite(pin, LOW);//设置13号引脚为低电平
	delay(1000);//延迟1秒,使能看到清晰的闪烁状态
}

4、tone( )

在指定引脚产生指定频率的方波,可用于蜂鸣器或扬声器播放音效 无返回值

tone(pin,frequency)

pin:要设置的引脚编号

frequency:音调频率

tone(pin,frequency,duration)

pin:要设置的引脚编号

frequency:音调频率

duration:音调持续时间

5、noTone( )

停止产生方波 无返回值

noTone(pin)

pin:要设置的引脚编号

6、analogWrite( )

将模拟值(PWM波)写入引脚 在指定引脚输出指定占空比的PWM方波 无返回值

analogWrite(pin,value)

pin:要设置的引脚编号

value:占空比,介于0-255之间 用于计算一段时间的通导时间

7、analogRead( )

读取模拟器接口的值,即读取施加到其中一个引脚的电压

此函数返回0-1023之间的数字,表示0-5v的电压

val=analogRead(pin)

pin:要设置的引脚编号 Mega上为0-15

val:接受模拟接口值的变量

例如:

施加到0号引脚的电压为2.5v,则analogRead(0)的返回值为512

1023 / 5 = 204.6  204.6 * 25 = 512

int analogPin = 3;//3号引脚
int val = 0;
void setup()
{
	Serial.begin(9600);//设置串口的波特率
}
void loop()
{
	val = analogRead(analogPin);//把analogPin号引脚的电压的值赋给val
	Serial.println(val);//输出analogPin号的电压并输出回车
}

8、attachInterrupt( ) 

中断函数

attchInterrupt(interrupt,function,mode)

interrupt:中断源,可选值为0或1(0为关,1为开)一般对应2号和3号数字 I/O 口

function:需要中断的函数名

mode:

LOW 低电平触发 

CHANGE 在引脚电平变化时触发

RISING 低电平变为高电平时触发

FALLING 高电平变为低电平时触发

9、detachInterrupt( )

中断开关函数

detachInterrupt(interrupt)

interrupt = 1 开

interrupt = 0 关

10、interrupts( )

中断使能函数 使能中断

11、noInterrupts( )

中断使能函数 禁止中断

 PWM脉冲宽度调制:

1、PWM作用:

1)通过简单的滤波电路,就可以生成真正的模拟输出量

2)控制灯光亮度,调节电机转速(限制电机和LED功率)

3)控制舵机角度

4)输出信号(接入喇叭可以发声)

5)速度控制器

2、产生PWM:

1)analogWrite(pin,val)

将模拟值(PWM波)写入引脚

在指定引脚输出指定占空比的PWM方波(方波),直到下一次调用analogWrite( )或在相同引脚上调用digitalRead( )digitalWrite( )

pin:引脚(2-13,44-46号引脚)

value:占空比,介于0(始终通导)-255(始终关断)之间,对应电压0-5v 用于计算一段时间的通导时间 

在调用analogWrite( )函数之前,不需要调用pinMode( )将引脚设置为输出

int pin = 8;
void setup()
{
	pinMode(pin, OUTPUT);
}
void loop()
{
	analogWrite(pin, 128);
	delay(500);
}
int ledPin = 13;
int analogPin = 3;
int val = 0;
void setup()
{
	pinMode(ledPin, OUTPUT);//将LED灯的引脚置为输出状态
}
void loop()
{
	val = analogRead(analogPin);//读取施加到3号引脚的电压,读取的值在 0到1023之间
	analogWrite(ledPin, (val / 4));//将模拟值写入LED灯13号引脚,输入的值在0到255之间
}

 优点:不需要占用额外的CPU命令时间

2)手动代码实现

int pin = 38;
void setup()
{
	pinMode(pin, OUTPUT);
}
void loop()
{
	digitWrite(pin, HIGH);
	delayMicrosecond(100);//延迟100微秒
	digitWrite(pin, LOW);
	delayMicrosecond(1000-100);
}

优点:

1)PWM比例可以更准确

2)周期和频率可控制

3)所有的引脚都可以输出

缺点:

CPU无法进行其他的任务了(周期较大的PWM)

3)使用PWM寄存器

3、基本原理:

PWM是随着时间而变化的方波

On-Time(通导时间) 时间信号持续时间较长

Off-Time(关断时间) 时间信号持续时间较短

Period(周期) PWM信号的通导时间和关断时间的总和

Duty Cyde(占空比) 在PWM信号周期内保持通导的时间信号的百分比

4、周期(通导时间):

Ton 通导时间

Toff 信号的关断时间

Ttotal 周期

Ttotal = Ton + Toff

5、占空比:

用于计算一段时间的通导时间

D = Ton / (Ton+Toff) = Ton / Ttotal 

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值