Arduino 入门学习笔记3 程序结构和常用函数

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/83691044

Arduino 的程序可以划分为三个主要部分:结构、变量(变量与常量)、函数。

函数

1、setup()

当Arduino开始的时候被调用。用它来初始化变量,设置引脚运行模式,启动库文件等。setup函数只运行一次,每次上电或者被重置时候调用。

int buttonPin = 3;

void setup()
{
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}

void loop()
{
  // ...
}

2、loop()

创建setup()时,该函数设置初始值等一些初始化操作。该函数是Arduino运行控制的函数,所有的实时控制逻辑都在该方法内执行。

const int buttonPin = 3;

// setup initializes serial and the button pin
void setup()
{
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}

// loop checks the button pin each time,
// and will send serial if it is pressed
void loop()
{
  if (digitalRead(buttonPin) == HIGH)
    Serial.write('H');
  else
    Serial.write('L');

  delay(1000);
}

3、pinMode()

配置指定的引脚的输入或输出模式。

模式类型: INPUT, OUTPUT, or INPUT_PULLUP.
输入为INPUT,因为是默认值所以可以不显示定义;可以使用INPUT_PULLUP模式启用内部上拉电阻。此外,INPUT模式显式禁止内部上拉。输出为OUTPUT,注意INPUT和OUTPUT都要全部大写

int ledPin = 13;                 // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}

4、digitalWrite()

向指定引脚输出控制信号HIGH或者LOW。

int ledPin = 13;                 // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}

5、digitalRead()

读取指定引脚的值HIGH或者LOW。

int ledPin = 13; // LED connected to digital pin 13
int inPin = 7;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value
                                        
void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
  pinMode(inPin, INPUT);      // sets the digital pin 7 as input
}
         
void loop()
{
  val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, val);    // sets the LED to the button's value
}

6. analogRead(pin);

读取施加到其中一个引脚的电压(比如模拟传感器值连续变化)

此函数返回0到1023之间的数字,表示0到5伏特之间的电压。例如,如果施加到编号0的引脚的电压为2.5V,则analogRead(0)返回512

int val = 0; // 用于接受针脚回传的数值
 
void setup() {
   Serial.begin(9600); 
}
 
void loop() {
 
   val = analogRead(3); //读取针脚输入的数值
   Serial.println(val); //在串口调试界面打印输出数值
}

7. analogReference()

配置用于模拟输入的参考电压(即用作输入范围顶部的值)选项是:

  • DEFAULT - 5伏(5V Arduino板)或3.3伏(3.3V Arduino板)的默认模拟参考值
  • INTERNAL - 内置参考,在ATmega168或ATmega328上等于1.1伏特,在ATmega8上等于2.56伏特(不适用于Arduino Mega)
  • INTERNAL1V1 - 内置1.1V参考(仅限Arduino Mega)
  • INTERNAL2V56 - 内置2.56V参考(仅限Arduino Mega)
  • EXTERNAL - 施加到AREF引脚的电压(仅限0到5V)用作参考

注意事项
对AREF引脚的外部参考电压,请勿使用小于0V或大于5V的任何值。如果在AREF引脚上使用外部参考,则必须在调用 analogRead()函数之前将模拟参考设置为EXTERNAL

实例

int val = 0;
 
void setup() {
   Serial.begin(9600);
   analogReference(EXTERNAL);
 
 }
 
void loop() {
   val = analogRead(3);
   Serial.println(val);
}

8. analogWrite()函数

analogWrite ( pin , value ) ;
value :0 (always off) 至 255 (always on)
analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。
注意事项
ATmega168或ATmega328板上,在针脚3,5,6,9,10和11上工作;
大多数引脚上的PWM信号频率约为490 Hz。;
实例

int ledPin = 9;  
 
void setup() {
   pinMode(ledPin, OUTPUT);
}
 
void loop() {
   analogWrite(ledPin, 200);     
}

9. random()

用法:
random函数生成伪随机数
long random(max) ;
long random(min, max) ;
注意事项
random()返回的数字的分布本质上是随机的,但是顺序是可预测的。使用randomSeed(seed)函数可以重置Arduino的伪随机数生成器。
实例

long randNumber;
 
void setup() {
   Serial.begin(9600);
   randomSeed(analogRead(0));
}
 
void loop() {
   Serial.print("random1=");
   randNumber = random(300);
   Serial.println(randNumber);
   Serial.print("random2=");
   randNumber = random(10, 20);
   Serial.println (randNumber);
   delay(50);
}

引用:
https://blog.csdn.net/u013667895/article/details/78672525
https://blog.csdn.net/eesc55/article/details/70050001

猜你喜欢

转载自blog.csdn.net/xundh/article/details/83691044