arduino 学习

Arduino编程基础(二)——C\C++语言基础(上)
https://www.arduino.cn/thread-45049-1-1.html
Arduino编程基础(二)——C\C++语言基础(下)
https://www.arduino.cn/thread-45050-1-1.html
Arduino编程基础(三)——常用电子元件和扩展模块
https://www.arduino.cn/thread-45117-1-1.html

编程基础链接学习:
https://blog.csdn.net/hello_wordmy/article/details/105816774

void setup() {
// 在这里加入setup代码,它只会运行一次:
}
void loop() {
// 在这里加入loop代码,它会不断重复运行:
}

1、

pinMode(pin,mode)

配置引脚

描述:将指定引脚设置为输入 或者 输出
语法: pinMode(pin,mode)

参数:pin 要设置的引脚,mode OUTPUT , INPUT

2、

digitialWrite(pin,value)

配置灯泡电平函数

给灯泡的引脚的电平配置高低才能使灯泡进行亮灭操作

语法:digitialWrite(pin,value)
pin 针脚编号 (如 1,5,10,A0,A3)
value, HIGH,LOW
模拟针脚也可以当数字使用

3、

获取 IO 口输出电压函数

digitalRead(pin, value)

4、
获得引脚模拟量电压值

analoRead(pin)

5、

delay(s)

延时函数

s 的单位为 毫秒,我们可以直接在 loop() 函数中,使用 delay() 函数,并且 配置灯泡的亮灭,就可以实现一些好玩的流水灯效果

delay(1)//延时1毫秒

delayMicroseconds(1);//是指延时1微秒

6、

初始化串口

Serial.begin()

波特率

7、

串口发送数据

Serial.println()
Serial.print()

8、

串口接收数据
/*串行数据的输入相对要麻烦点,多了一步判断是否有数据收到的操作,
使用函数

Serial.available()>0//判断是否在窜口缓冲区中收到数据

,之后使用函数

Serial.read()//在窜口上输入数据,提取收到的Byte数据

Serial.available()
Serial.read()

9、

产生pwm

analogWrite(pin, val)

10、

val 是 0~255 的整数值,对应电压从 0 到+5V 直流电源插孔 -可以使用电源插孔为Arduino开发板供电。

11、

电源插孔通常连接到一个适配器。开发板的供电范围可以是5-20V,但制造商建议将其保持在7-12V之间。高于12V时,稳压芯片可能会过热,低于7V可能会供电不足。 VIN引脚 - 该引脚用于使用外部电源为Arduino Uno开发板供电。电压应控制在上述提到的范围内。

12、

USB电缆 - 连接到计算机时,提供500mA/5V电压。 在电源插孔的正极与VIN引脚之间链接有一个极性保护的二极管,额定电流为1安培 使用USB为电路供电时,电流最大限制在500mA。考虑到该电源也用于为MCU、外围设备、板载稳压器和与其连接的组件供电。当通过电源插座或VIN为电路供电时,可用的最大电流取决于Arduino开发板上的5V和3.3V稳压器*

13、

VIN --- 可以通过此引脚向UNO供电;VIN有电时将忽略从USB或者其他引脚接入的电源
5V --- 提供稳压的3.3V,为外部电子元件供电
3.3V --- 提供稳压的3.3V,为外部电子元件供电
GND --- GND引脚与设备外壳相接(接地),用于闭合电路回路,并在整个电路中提供一个公共逻辑参考电平。




ON:电源指示灯,灯亮时表示Arduino已经通电
TX:串口发送指示灯。当使用USB连接到计算机且Arduino向计算机传输数据时,TX灯会点亮。
RX:串口接收指示灯。当使用USB连接到计算机且Arduino接收到计算机传来的数据时,RX灯会点亮。
L:可编程控制指示灯。该LED通过特殊电路连接到Arduino的13 号引脚,当13号引脚为高电平或高阻态时,该LED 会点亮;当为低电平时,不会点亮。

因此可以通过程序或者外部输入信号来控制该LED的亮灭。可以用来测试板子是否正常:如果运行Blink程序时,L灯一闪一闪说明板子是好的。

14、

PWM 有多种用途:
调光 LED
提供模拟输出;如果数字输出经过滤波,它将提供 0% 到 100% 之间的模拟电压。
产生音频信号。
为电机提供变速控制。
生成调制信号,例如驱动用于遥控器的红外 LED
使用模拟写入的简单脉宽调制

Arduino 的编程语言使 PWM 易于使用;只需调用

analogWrite(pin, dutyCycle)

,其中dutyCycle 是0 到255 之间的值,pin 是PWM 引脚之一(3、5、6、9、10 或11)。
模拟写入函数为硬件 PWM 提供了一个简单的接口,但不提供对频率的任何控制。 (请注意,尽管有函数名称,但输出是数字信号,通常称为方波。)

点亮led代码:

int led = 13;

// 在板子启动或者复位重启后, setup部分的程序只会运行一次 void setup(){
// 将“led”引脚设置为输出状态
pinMode(led, OUTPUT);
}
// setup部分程序运行完后,loop部分的程序会不断重复运行
void loop()
{
digitalWrite(led, HIGH); // 给引脚高电平,点亮LED delay(1000); // 等待一秒钟
digitalWrite(led, LOW); // 通过将引脚电平拉低,关闭LED delay(1000); // 等待一秒钟
}

呼吸灯代码:

void setup ()
{ pinMode(13,OUTPUT);//引脚设置为输出状态 }
void loop() {
//循环语句,控制PWM亮度的增加
for (int a=0; a<=255;a++)
{
analogWrite(11,a);//输出PWM
delay(8);//当前亮度级别维持的时间,单位毫秒
}
//循环语句,控制PWM亮度减小
for (int a=255; a>=0;a–)
{
analogWrite(11,a);//输出PWM
delay(10);//当前亮度的维持的时间,单位毫秒
}
delay(800);//完成一个循环后等待的时间,单位毫秒
}

测试距离 = ( 高电平时间 x 声速 (340m/s) ) / 2

pulseIn函数知识要点: pulseIn() :用于检测引脚输出的高低电平的脉冲宽度。 pulseIn(pin, value)
pulseIn(pin, value, timeout) Pin— 需要读取脉冲的引脚 Value —需要读取的脉冲类型, HIGH
或 LOW Timeout —超时时间,单位微秒,数据类型为无符号长整型。

超声波测距代码:
采用IO触发测距,给至少10us的高电平信号;模块自动发送8个40KHz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间;

/* 日期:2016.04.06 编辑器:sublime text 3 (基于arduino-1.6.5)
功能:通过SR04超声波传感器进行测距,并通过串口监视器显示测出的距离
*/ const int Trig = 5; // 设定SR04连接的Arduino引脚 const int Echo = 6; double distance,time ; void
setup() {
Serial.begin(9600); // 初始化串口通信及连接SR04的引脚
pinMode(Trig, OUTPUT);

    pinMode(Echo, INPUT);                                  //要检测引脚上输入的脉冲宽度,需要先设置为输入状态
Serial.println("The distance is :"); }  void loop()  { 

    digitalWrite(Trig, LOW);                                 
    delayMicroseconds(2);                                   
    digitalWrite(Trig, HIGH);                               
    delayMicroseconds(10);   //产生一个10us的高脉冲去触发SR04
    digitalWrite(Trig, LOW);                                
    
    time = pulseIn(Echo, HIGH); // 检测脉冲宽度,注意返回值是微秒us
    distance = time /58 ; //计算出距离,输出的距离的单位是厘米cm

    Serial.print(distance); //把得到的距离值通过串口通信返回给电脑,通过串口监视器显示出来
    Serial.println("cm"); 
    delay(1000);

红外避障:

int PIN_SENSOR = 13;
void setup()
{
pinMode(PIN_SENSOR, INPUT);
Serial.begin(9600);
}
void loop()
{
int x =digitalRead(PIN_SENSOR);
Serial.println(x);
}

定时器代码:
CPU执行时原本是按照程序指令一条一条向下执行的.但如果此时发生了某一件事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来被中断的地方继续执行程序(中断返回),这一过程成为中断.

MsTimer2库链接:https://pan.baidu.com/s/1I-p7_Ibmu-Fbk1wxYNlHjw
提取码:qtzs

#include<MsTimer2.h> int tick = 0; //计数值 //中断服务程序 void onTimer()
{
Serial.print("timer ");
Serial.println(tick++);
}
void setup()
{
Serial.begin(9600); //初始化串口
MsTimer2::set(1000, onTimer); //设置中断,每1000ms进入一次中断服务程序
onTimer() MsTimer2::start(); //开始计时_开启定时器中断 //MsTimer2::stop(); //关闭定时器中断
}
void loop()
{
}

原文链接:http://blog.qmgua.com/?id=125

=========================================

http://blog.qmgua.com/ 为 “布尔博客” 唯一官方服务平台,请勿相信其他任何渠道。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

幸运的涛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值