Arduino 学习笔记一

Eg1 LED闪烁:

  • pinMode()函数

    pinMode()函数用于将特定引脚配置为输入或输出。可以使用INPUT_PULLUP模式启用内部上拉电阻。此外,INPUT模式显式禁止内部上拉。

    pinMode()函数语法

Void setup () {
   pinMode (pin , mode);
}

pin - 你希望设置模式的引脚的编号

mode - INPUT,OUTPUT或INPUT_PULLUP。

digitalWrite()函数

digitalWrite()函数用于向数字引脚写入HIGH或LOW值。如果该引脚已通过pinMode()配置为OUTPUT,则其电压将被设置为相应的值:HIGH为5V(或3.3V在3.3V板上),LOW为0V(接地)。如果引脚配置为INPUT,则digitalWrite()将启用(HIGH)或禁止(LOW)输入引脚的内部上拉。建议将pinMode()设置为INPUT_PULLUP,以启用 内部上拉电阻。

如果不将pinMode()设置为OUTPUT,而将LED连接到引脚,则在调用digitalWrite(HIGH)时,LED可能会变暗。在没有明确设置pinMode()时,digitalWrite()将启用内部上拉电阻,这就像一个大的限流电阻。

digitalWrite()函数语法

Void loop() {
   digitalWrite (pin ,value);
}

 pin - 你希望设置模式的引脚的编号

value - HIGH或LOW。

代码:

#define LED 2
#define DET 50
void setup(){
  pinMode(LED,OUTPUT);
}
void loop(){
  digitalWrite(LED,HIGH);
  delay(DET);
  digitalWrite(LED,LOW);
  delay(DET);  
}

Eg2渐变LED:

  • analogWrite()函数

    analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。大多数引脚上的PWM信号频率约为490 Hz。在Uno和类似的板上,引脚5和6的频率约为980Hz。Leonardo上的引脚3和11也以980Hz运行。

    在大多数Arduino板上(ATmega168或ATmega328),此功能在引脚3,5,6,9,10和11上工作。在Arduino Mega上,它在引脚2-13和44-46上工作。旧的Arduino ATmega8板仅支持引脚9,10和11上的 analogWrite()

    Arduino Due支持引脚2至13以及引脚DAC0和DAC1上的 analogWrite()。与PWM引脚不同,DAC0和DAC1是数模转换器,用作真正的模拟输出。

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

    analogWrite()函数语法

analogWrite ( pin , value ) ;
value − the duty cycle: between 0 (always off) and 255 (always on).

value - 占空比:0(始终光断)到255(始终导通)之间。

  • 代码:

  • #define PLED 2  //PWM&LED口
    
    int brightness = 0;
    int fadStep = 5;
    
    void setup(){
      pinMode(PLED,OUTPUT);
    }
    
    void loop(){
        analogWrite(PLED,brightness);
        brightness = brightness + fadStep;
        if(brightness == 0|| brightness == 255){
            fadStep = -fadStep; //变暗
        }
        delay(30);
    }

    Eg3读取模拟电压

    注意读取电压的范围位0-5v

  • Serial.print()

    描述

    将数据作为人类可读的ASCII文本打印到串行端口。此命令可以采用多种形式。每个数字使用ASCII字符打印数字。浮点数类似地打印为ASCII数字,默认为两位小数。字节作为单个字符发送。字符和字符串按原样发送。例如-

    • Serial.print(78) gives "78"

    • Serial.print(1.23456) gives "1.23"

    • Serial.print('N') gives "N"

    • Serial.print("Hello world.") gives "Hello world."

    可选的第二个参数指定要使用的基数(格式); 允许值是BIN(binary, or base 2)OCT(octal, or base 8)DEC(decimal, or base 10)HEX(hexadecimal, or base 16)。对于浮点数,此参数指定要使用的小数位数。例如-

    • Serial.print(78, BIN) gives "1001110"

    • Serial.print(78, OCT) gives "116"

    • Serial.print(78, DEC) gives "78"

    • Serial.print(78, HEX) gives "4E"

    • Serial.print(1.23456, 0) gives "1"

    • Serial.print(1.23456, 2) gives "1.23"

    • Serial.print(1.23456, 4) gives "1.2346"

    您可以通过使用F()包装它们来将基于闪存的字符串传递给Serial.print ()。例如:

    Serial.print(F(“Hello World”))

    要在不转换为字符表示的情况下发送数据,请使用Serial.write()

    句法

    Serial.print(val)Serial.print(val, format)

    参数

    val:要打印的值 - 任何数据类型

    返回

    size_tprint()返回写入的字节数,但读取该数字是可选的。

  • Serial.begin()

    描述: 设置串行数据传输的数据速率,以每秒位数(波特)为单位。要与计算机通信,请使用以下速率之一:300,600,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200.但是,您可以指定其他速率 - 例如,通过引脚0和1与需要特定波特率的组件进行通信。

    可选的第二个参数配置数据,奇偶校验和停止位。默认值为8个数据位,无奇偶校验,一个停止位。

    句法

    Serial.begin(speed) Serial.begin(speed, config)

    *仅限Arduino Mega:*
    `Serial1.begin(speed)`

    Serial2.begin(speed)Serial3.begin(speed)Serial1.begin(speed, config)Serial2.begin(speed, config)Serial3.begin(speed, config)

  • analogRead()

    [模拟I / O]

    描述:

    从指定的模拟引脚读取值。Arduino板包含一个6通道(Mini和Nano上有8个通道,Mega上有16个通道),10位模数转换器。这意味着它会将0到5伏之间的输入电压映射到介于0和1023之间的整数值。这样可以得到读数:5伏/ 1024单位或每单位0.0049伏(4.9 mV)。可以使用analogReference()更改输入范围和分辨率。

    读取模拟输入大约需要100微秒(0.0001 s),因此最大读取速率约为每秒10,000次。

    句法

    analogRead(pin)

  • 参数   ​ pin:要读取的模拟输入引脚的编号(大多数板上为0到5,Mini和Nano上为0到7,Mega上为0到15) ​返回 ​ int(0到1023)

  • 代码:

  • #define GET A7
    
    void setup(){
        Serial.begin(9600);     //设置波特率为9600
    }
    
    void loop(){
        int SenorValue = analogRead(A7);    //获取analogIn A7的数值
        float voltage = SenorValue*5.0/1023.0;   //将读取的A7值转换为电压
        Serial.println(voltage);	//较print多一个换行符
    }

猜你喜欢

转载自blog.csdn.net/weixin_38709708/article/details/81287405