Arduino I/O函数

Arduino板上的引脚可以配置为输入或输出。我们将在这些模式下解释引脚的功能。重要的是要注意,大多数Arduino模拟引脚可以按照与数字引脚完全相同的方式进行配置和使用。

引脚配置为INPUT

Arduino引脚默认配置为输入,因此在使用它们作为输入时,不需要使用 

pinMode()显式声明为输入。以这种方式配置的引脚被称为处于高阻抗状态。输入引脚对采样电路的要求非常小,相当于引脚前面的100兆欧的串联电阻。

这意味着将输入引脚从一个状态切换到另一个状态所需的电流非常小。这使得引脚可用于诸如实现电容式触摸传感器或读取LED作为光电二极管的任务。

被配置为pinMode(pin,INPUT)的引脚(没有任何东西连接到它们,或者有连接到它们而未连接到其他电路的导线),报告引脚状态看似随机的变化,从环境中拾取电子噪音或电容耦合附近引脚的状态。

上拉电阻

如果没有输入,上拉电阻通常用于将输入引脚引导到已知状态。这可以通过在输入端添加上拉电阻(到5V)或下拉电阻(接地电阻)来实现。10K电阻对于上拉或下拉电阻来说是一个很好的值。

使用内置上拉电阻,引脚配置为输入

Atmega芯片内置了2万个上拉电阻,可通过软件访问。通过将pinMode()设置为INPUT_PULLUP可访问这些内置上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,LOW表示传感器开启。此上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ和50kΩ之间。在Arduino Due上,它介于50kΩ和150kΩ之间。有关确切的值,请参考板上微控制器的数据表。

当将传感器连接到配置为INPUT_PULLUP的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关打开时引脚变为高电平,当按下开关时引脚为低电平。上拉电阻提供足够的电流来点亮连接到被配置为输入的引脚的LED。如果项目中的LED似乎在工作,但很昏暗,这可能是发生了什么。

控制引脚是高电平还是低电平的相同寄存器(内部芯片存储器单元)控制上拉电阻。因此,当引脚处于INPUT模式时,配置为有上拉电阻导通的引脚将被开启;如果引脚通过pinMode()切换到OUTPUT模式,引脚将配置为高电平。这也适用于另一个方向,如果通过pinMode()切换到输入,则处于高电平状态的输出引脚将设置上拉电阻。

示例

pinMode(3,INPUT) ;

// set pin to input without using built in pull up resistor pinMode(5,INPUT_PULLUP) ;

// set pin to input using built in pull up resistor

引脚配置为OUTPUT

通过pinMode()配置为OUTPUT的引脚被认为处于低阻抗状态。这意味着它们可以向其他电路提供大量的电流。Atmega引脚可以向其他器件/电路提供(提供正电流)或吸收(提供负电流)高达40mA(毫安)的电流。这是足以点亮LED或者运行许多传感器的电流(不要忘记串联电阻),但不足以运行继电器,螺线管或电机。

试图从输出引脚运行高电流器件,可能损坏或破坏引脚中的输出晶体管,或损坏整个Atmega芯片。通常,这会导致微控制器中出现“死”引脚,但是剩余的芯片仍然可以正常工作。因此,最好通过470Ω或1k电阻将OUTPUT引脚连接到其他器件,除非特定应用需要从引脚吸取最大电流。

pinMode()函数

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

pinMode()函数语法

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


  } 
  • pin – 你希望设置模式的引脚的编号

  • mode 

    – INPUT,OUTPUT或INPUT_PULLUP。

示例

int button = 5 ;

// button connected to pin 5
int LED = 6;

// LED connected to pin 6
 
void setup ()
{
 
  pinMode(button , INPUT_PULLUP);

    // set the digital pin as input with pull-up resistor
  
  pinMode(button , OUTPUT);

// set the digital pin as output
  }
 
void setup ()
{
   If (digitalRead(button ) == LOW) // if button pressed{
      
   digitalWrite(LED,HIGH);

// turn on led
      
  delay(500);

// delay for 500 ms
       
   digitalWrite(LED,LOW);

// turn off led
      
  delay(500);

// delay for 500 ms
     
   }
  }


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。

示例

int LED = 6;

// LED connected to pin 6
 
void setup ()
{
 
  pinMode(LED, OUTPUT);

// set the digital pin as output
  }
 
void setup ()
{
    
   digitalWrite(LED,HIGH);

// turn on led
   
  delay(500);

// delay for 500 ms
    
   digitalWrite(LED,LOW);

// turn off led
   
  delay(500);

// delay for 500 ms
  }

analogRead()函数

Arduino能够检测是否有一个电压施加到其引脚,并通过digitalRead()函数报告。开/关传感器(检测物体的存在)和模拟传感器之间存在一个差异,模拟传感器的值连续变化。为了读取这种类型的传感器,我们需要一个不同类型的引脚。

在Arduino板的右下角,你会看到6个标记为“Analog In”的引脚。这些特殊引脚不仅可以告知是否有电压施加给它们,还可以告知它们的值。通过使用analogRead()函数,我们可以读取施加到其中一个引脚的电压。

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

analogRead()函数语法

analogRead(pin);

  • pin – 要读取的模拟输入引脚的编号(大多数电路板上为0至5,Mini和Nano上为0至7,Mega上为0至15)

示例

int analogPin = 3;

//potentiometer wiper (middle terminal)
 //connected to analog pin 3 
int val = 0;

// variable to store the value read
 

void setup()
{
 
  Serial.begin(9600);

// setup serial

  }
 
void loop()
{
   val = analogRead(analogPin);

// read the input pin
  
  
  Serial.println(val);

// debug value

  } 

Arduino 读取模拟电压

此示例将向你展示如何读取模拟引脚0上的模拟输入。输入从analogRead()转换为电压,并打印输出到Arduino软件(IDE)的串口监视器。

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × 5K可变电阻(电位器)
  • 2 × 跳线

程序

按照电路图连接面包板上的组件,如下图所示。

Arduino 读取模拟电压

电位器

电位器是一种简单的机电传感器。它将来自输入操作器的旋转或线性运动转换为电阻的变化。这种变化是(或可以)用于控制任何东西,从高保真音响系统到巨大的集装箱船的方向。

我们知道电位器最初被称为变阻器(本质上是一个可变的绕线电阻)。现在可用的电阻器的种类现在相当惊人的,而初学者(特别是)可能很难确定哪种类型适合于给定的任务。一些不同的电阻器类型,都可以用于相同的任务,使得确定工作更难。

Arduino 读取模拟电压

左边的图像显示电阻器的标准原理图符号。右边的图像是电位器。

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 读取模拟电压

Arduino代码

/*
    ReadAnalogVoltage
    Reads an analog input on pin 0, converts it to voltage,
     and prints the result to the serial monitor.
    Graphical representation is available using serial plotter (Tools >Serial Plotter menu)
    Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. */  
// the setup routine runs once when you press reset:
 

void setup()
{
   // initialize serial communication at 9600 bits per second:
  
  Serial.begin(9600);


  }  // the loop routine runs over and over again forever:
 
void loop()
{
   // read the input on analog pin 0:
   
int sensorValue = analogRead(A0);

   // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
   float voltage = sensorValue * (5.0 / 1023.0);

   // print out the value you read:
  
  
  Serial.println(voltage);


  }

代码说明

在下面给出的程序或草图中,你在设置功能中做的第一件事是在你的电路板和你的电脑之间以9600比特每秒开始串行通信,使用以下代码:

Serial.begin(9600);

在代码的主循环中,你需要建立一个变量来存储来自电位器的电阻值(其范围在0到1023之间,非常适合int数据类型):

int sensorValue = analogRead(A0);

要将值从0-1023更改为与引脚正在读取的电压相对应的范围,你需要创建另一个变量,一个浮点数并进行一些计算。要缩小0.0和5.0之间的数字,将5.0除以1023.0,再乘以sensorValue:

float voltage= sensorValue * (5.0 / 1023.0);

最后,你需要将此信息打印到串行窗口。你可以用最后一行代码中的
Serial.println()命令:

  Serial.println(voltage) 

现在,通过单击顶部绿色栏右侧的图标或按Ctrl+Shift+M打开Arduino IDE中的串口监视器。

Arduino 读取模拟电压

结果

你会看到一个从0.0到5.0的稳定的数字流。当你转动电位器时,这些值会改变,对应于引脚A0上的电压。

Arduino 连接开关

按钮或开关连接电路中的两个开路端子。当按下连接到引脚8的按钮开关时,此示例打开引脚2上的LED。

Arduino 连接开关

下拉电阻

在电子逻辑电路中使用下拉电阻,以确保在外部器件断开连接或处于高阻抗状态时,Arduino的输入信号达到预期的逻辑电平。虽然没有任何东西连接到输入引脚,但这并不意味着它是一个逻辑0。下拉电阻连接在地面和器件上相应的引脚之间。

下图显示了数字电路中下拉电阻的示例。在电源电压和微控制器引脚之间连接了一个按钮开关。在这样的电路中,当开关闭合时,微控制器输入处于逻辑高值;但是当开关打开时,下拉电阻将输入电压下拉到接地(逻辑零值),防止输入处于未定义状态。

下拉电阻的电阻必须大于逻辑电路的阻抗,否则可能会使电压下降太多,而无论开关的位置如何,引脚处的输入电压将保持在恒定的逻辑低值。

Arduino 连接开关

必需的组件

你将需要以下组件:

  • 1 × Arduino UNO 板
  • 1 × 330欧姆电阻
  • 1 × 4.7K欧姆电阻(下拉)
  • 1 × LED

程序

按照电路图进行连接,如下图所示。

Arduino 连接开关

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 连接开关

Arduino代码

// constants won't change. They're used here to // set pin numbers: const
int buttonPin = 8;

// the number of the pushbutton pin const
int ledPin = 2;

// the number of the LED pin // variables will change:
int buttonState = 0;

// variable for reading the pushbutton status
 

void setup()
{
   // initialize the LED pin as an output:
  
  pinMode(ledPin, OUTPUT);

   // initialize the pushbutton pin as an input:
  
  pinMode(buttonPin, INPUT);


  }
 
void loop()
{
   // read the state of the pushbutton value:
    buttonState = digitalRead(buttonPin);

   // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH)
{
  //turn LED on:
       
   digitalWrite(ledPin, HIGH);

 
 } else{
  //turn LED off:
       
   digitalWrite(ledPin, LOW);

    
   }
  }

代码说明

当开关打开时(按钮未被按下),按钮的两个端子之间没有连接,因此引脚接地(通过下拉电阻),我们读取低电平。当开关闭合时(按钮被按下),它在其两个端子之间建立连接,将引脚连接到5伏,这样我们读出高电平。

结果

按下按钮时LED亮灯,松开按钮时LED熄灯。


Arduino 水位检测器/传感器

水位传感器砖设计用于水位检测,可广泛应用于检测降雨,水位,甚至液体泄漏。

Arduino 水位检测器/传感器

将水位传感器连接到Arduino是检测泄漏,溢出,洪水,雨水等的好方法。它可用于检测水的存在,水位,体积以及是否缺水。当这个用来提醒你给植物浇水时,有一个比较好的Grove传感器。传感器具有一系列暴露的迹线,当检测到水时读取LOW。

在本章中,我们将把水位传感器连接到Arduino上的数字引脚8,并将使用非常方便的LED来帮助识别水位传感器何时与水源接触。

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × 水位传感器
  • 1 × led
  • 1 × 

    330欧姆电阻

程序

按照电路图连接面包板上的组件,如下图所示。

Arduino 水位检测器/传感器

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 水位检测器/传感器

Arduino代码

#define Grove_Water_Sensor 8 // Attach Water sensor to Arduino Digital Pin 8
#define LED 9 // Attach an LED to Digital Pin 9 (or use onboard LED)
 

void setup()
{
 
  pinMode(Grove_Water_Sensor, INPUT);

// The Water Sensor is an Input
  
  pinMode(LED, OUTPUT);

// The LED is an Output
  }
 
void loop()
{
   /* The water sensor will switch LOW when water is detected.
    Get the Arduino to illuminate the LED and activate the buzzer
    when water is detected, and switch both off when no water is present */
    if( digitalRead(Grove_Water_Sensor) == LOW)
{
      
   digitalWrite(LED,HIGH);

  
  }else{
      
   digitalWrite(LED,LOW);

    
   }
  }

代码说明

水位传感器具有三个端子:S,Vout(+)和GND(-)。按如下所示连接传感器:

  • 将+Vs连接到Arduino板上的+5v。
  • 将S连接到Arduino板上的数字引脚8。
  • 将GND连接到Arduino上的GND。
  • 将LED连接到Arduino板上的数字引脚9。

当传感器检测到水时,Arduino上的引脚8变为LOW,然后Arduino上的LED亮起。

结果

当传感器检测到水时,你会看到指示LED灯亮起。


Arduino 温度传感器

温度传感器LM35系列是精密集成电路温度器件,输出电压与摄氏温度成线性比例。

LM35器件优于以开尔文校准的线性温度传感器,因为用户不需要从输出中减去大的恒定电压以获得便利的摄氏缩放。LM35器件不需要任何外部校准或调整,即可在室温下提供±1/4°C的典型精度,在-55°C至150°C的温度范围内提供±3°C的典型精度。

Arduino 温度传感器

技术规格

  • 直接以摄氏度校准
  • 线性 + 10-mV/°C比例因子
  • 0.5°C确保准确度(在25°C)
  • 额定温度范围为-55°C至150°C
  • 适用于远程应用

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × LM35 传感器

程序

按照电路图连接面包板上的组件,如下图所示。

Arduino 温度传感器

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 温度传感器

Arduino代码

float temp;

int tempPin = 0;



void setup()
{
 
  Serial.begin(9600);


  }
 
void loop()
{
  
 temp = analogRead(tempPin);

   // read analog volt from sensor and save to variable temp
   
 temp = temp * 0.48828125;

   // convert the analog volt to its temperature equivalent
  
  Serial.print("

TEMPERATURE = "

);

 
  Serial.print(temp);

// display temperature value
  
  Serial.print("

*C"

);

 
  
  Serial.println();

  
  delay(1000);

// update sensor reading each one second
  }

代码说明

LM35传感器有三个端子:Vs,Vout和GND。我们将按如下方式连接传感器:

  • 将+Vs连接到Arduino板上的+5v电压。
  • 将Vout连接到Arduino板上的模拟0或A0。
  • 将GND连接到Arduino上的GND。

模数转换器(ADC)基于公式ADC值将模拟值转换为数字近似值=样本*1024/参考电压(+5v)。将模拟值转换为数字逼近。 

那么用+5v做参考,数字近似值将等于输入电压*205。

结果

你将看到串口监视器上的温度显示,每秒更新一次。


Arduino 超声波传感器

HC-SR04超声波传感器使用声纳来确定物体的距离,就像蝙蝠一样。它提供了非常好的非接触范围检测,准确度高,读数稳定,易于使用,尺寸从2厘米到400厘米或1英寸到13英尺不等。

其操作不受阳光或黑色材料的影响,尽管在声学上,柔软的材料(如布料等)可能难以检测到。它配有超声波发射器和接收器模块。

Arduino 超声波传感器
Arduino 超声波传感器

技术规格

电源 – + 5V DC
静态电流 – <2mA
工作电流 – 15mA
有效角度 – <15°
测距距离 – 2厘米-400厘米/1英寸-13英尺
分辨率 – 0.3厘米
测量角度 – 30度

必需的组件

你将需要以下组件:

  • 1 × Breadboard面包板
  • 1 × Arduino Uno R3
  • 1 ×超声波传感器(HC-SR04)

程序

按照电路图进行连接,如下图所示。

Arduino 超声波传感器

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 超声波传感器

Arduino代码

const
int pingPin = 7;

// Trigger Pin of Ultrasonic Sensor const
int echoPin = 6;

// Echo Pin of Ultrasonic Sensor
 

void setup()
{
 
  Serial.begin(9600);

// Starting Serial Terminal
  }
 
void loop()
{
   long duration, inches, cm;

 
  pinMode(pingPin, OUTPUT);

   
   digitalWrite(pingPin, LOW);

   

  delayMicroseconds(2);

   
   digitalWrite(pingPin, HIGH);

   

  delayMicroseconds(10);

   
   digitalWrite(pingPin, LOW);

 
  pinMode(echoPin, INPUT);

   duration = pulseIn(echoPin, HIGH);

   inches = microsecondsToInches(duration);

   cm = microsecondsToCentimeters(duration);

 
  Serial.print(inches);

 
  Serial.print("in, "

);

 
  Serial.print(cm);

 
  Serial.print("cm"

);

 
  
  Serial.println();

  
  delay(100);


  }  long microsecondsToInches(long microseconds)
{
 

return microseconds / 74 / 2;


  }  long microsecondsToCentimeters(long microseconds)
{
 

return microseconds / 29 / 2;


  }

代码说明

超声波传感器有四个端子:+5V,Trigger,Echo和GND,连接如下:

  • 将+5V引脚连接到Arduino板上的+5v。
  • 将Trigger连接到Arduino板上的数字引脚7。
  • 将Echo连接到Arduino板上的数字引脚6。
  • 将GND连接到Arduino上的GND。

在我们的程序中,我们通过串口显示了传感器测量的距离,单位为英寸和厘米。

结果

你将在Arduino串口监视器上看到传感器测量的距离,单位为英寸和厘米。

 

Arduino PIR传感器

PIR传感器可以让你感知运动。它们用于检测人是否进入或离开传感器的范围。通常出现在家庭或企业使用的电器和小工具中。它们通常被称为PIR,“被动红外”,“热电”或“IR运动”传感器。

以下是PIR传感器的优点:

  • 体积小
  • 镜头范围广
  • 易于界面
  • 廉价
  • 低电量
  • 使用方便
  • 不会磨损

Arduino PIR传感器

PIR由热电传感器制成,圆形金属罐中央有一个矩形晶体,可以检测红外辐射的水平。所有东西都发射出低水平的辐射,而东西越热发射的辐射就越多。运动检测器中的传感器分成两半。这是为了检测运动(变化)而不是平均IR水平。两个半部分相互连接,以便彼此抵消。如果一半看到比另一半更多或更少的红外辐射,则输出将摆动高或低。

Arduino PIR传感器

PIR具有可调设置,并在3引脚ground/out/power板上安装了一个接头。

Arduino PIR传感器

对于许多需要在人们离开或进入该区域进行检测的基础项目或产品,PIR传感器是非常有用的。请注意,PIR不会告诉你周围的人数或与传感器的距离。镜头通常固定在有一定距离的扫描范围内,有时候它们会被房子里的宠物带走

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × PIR传感器(MQ3)

程序

按照电路图进行连接,如下图所示。

Arduino PIR传感器

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino PIR传感器

Arduino代码

#define pirPin 2
int calibrationTime = 30;

long unsigned
int lowIn;

long unsigned
int pause = 5000;

boolean lockLow = true;

boolean takeLowTime;

int PIRValue = 0;



void setup()
{
 
  Serial.begin(9600);

 
  pinMode(pirPin, INPUT);


  }
 
void loop()
{
   PIRSensor();


  }
 
void PIRSensor()
{
   if(digitalRead(pirPin) == HIGH)
{
      if(lockLow)
{

    PIRValue = 1;


    lockLow = false;


  
  
  Serial.println("

Motion detected."

);


   
  delay(50);

     
  }
       takeLowTime = true;

  
  }
    if(digitalRead(pirPin) == LOW)
{
      if(takeLowTime){

    lowIn = millis();

takeLowTime = false;

     
  }
       if(!lockLow &

&

millis() - lowIn >pause)
{

    PIRValue = 0;


    lockLow = true;


  
  
  Serial.println("

Motion ended."

);


   
  delay(50);

     
  }
     
   }
  }

代码说明

PIR传感器有三个端子:Vcc,OUT和GND。按如下所示连接传感器: 

  • 将+Vcc连接到Arduino板上的+5v。
  • 将OUT连接到Arduino板上的数字引脚2。
  • 将GND连接到Arduino上的GND。

您可以通过位于传感器板底部的两个可变电阻器来调节传感器灵敏度和延迟时间。

Arduino PIR传感器

一旦传感器检测到任何运动,Arduino将通过串口发送一条消息,表示检测到运动。PIR感测运动将延迟一定时间以检查是否存有新的运动。如果没有检测到运动,Arduino将发送一条新消息,说明运动已经结束。

结果

如果检测到运动,你将在串口上看到一条消息,并在运动停止时看到另一条消息。

Arduino 湿度传感器

在本节中,我们将学习如何使用不同的传感器连接我们的Arduino板。我们将讨论以下传感器:

  • 湿度传感器(DHT22)
  • 温度传感器(LM35)
  • 水位检测传感器(简单水触发器)
  • PIR传感器
  • 超声波传感器
  • GPS

湿度传感器(DHT22)

DHT-22(也称为AM2302)是一个数字输出,相对湿度和温度传感器。它使用电容式湿度传感器和热敏电阻来测量周围空气,并在数据引脚上发送数字信号。

在本例中,你将学习如何将此传感器与Arduino UNO一起使用。室温和湿度将打印到串口监视器上。

DHT-22传感器

Arduino 湿度传感器

连接很简单。左边的第一个引脚为3-5V电源,第二个引脚连接到数据输入引脚,最右边的引脚接地。

技术细节

  • 电源 – 3-5V

  • 最大电流 – 2.5mA

  • 湿度 – 0-100%,精确度为2-5%

  • 温度 – 40至80°C,精确度为±0.5°C

必需的组件

你将需要以下组件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × DHT22
  • 1 × 10K欧姆电阻

程序

按照电路图连接面包板上的组件,如下图所示。

Arduino 湿度传感器

Arduino 湿度传感器

草图

在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Arduino 湿度传感器

Arduino代码

// Example testing sketch for various DHT humidity/temperature sensors 
#include "

DHT.h"

#define DHTPIN 2 // what digital pin we're connected to // Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 // to 3.3V instead of 5V! // Connect pin 2 of the sensor to whatever your DHTPIN is // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor // Initialize DHT sensor. // Note that older versions of this library took an optional third parameter to // tweak the timings for faster processors. This parameter is no longer needed // as the current DHT reading algorithm adjusts itself to work on faster procs. DHT dht(DHTPIN, DHTTYPE);



void setup()
{
 
  Serial.begin(9600);

 
  
  Serial.println("

DHTxx test!"

);

   dht.begin();


  }
 
void loop()
{
  
  delay(2000);

// Wait a few seconds between measurements
   float h = dht.readHumidity();

   // Reading temperature or humidity takes about 250 milliseconds!
   float t = dht.readTemperature();

   // Read temperature as Celsius (the default)
   float f = dht.readTemperature(true);

   // Read temperature as Fahrenheit (isFahrenheit = true)
    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f))
{
    
  
  Serial.println("

Failed to read from DHT sensor!"

);

      return;

  
  }
 
  // Compute heat index in Fahrenheit (the default)
   float hif = dht.computeHeatIndex(f, h);

   // Compute heat index in Celsius (isFahreheit = false)
   float hic = dht.computeHeatIndex(t, h, false);

 
  Serial.
print ("

Humidity: "

);

 
  Serial.
print (h);

 
  Serial.
print ("

%t"

);

 
  Serial.
print ("

Temperature: "

);

 
  Serial.
print (t);

 
  Serial.
print ("

*C "

);

 
  Serial.
print (f);

 
  Serial.
print ("

*Ft"

);

 
  Serial.
print ("

Heat index: "

);

 
  Serial.
print (hic);

 
  Serial.
print ("

*C "

);

 
  Serial.
print (hif);

 
  
  Serial.println ("

*F"

);


  }

代码说明

DHT22传感器具有四个端子连接到电路板的端子(Vcc,DATA,NC,GND),如下:

  • DATA引脚连接到Arduino的2号引脚号
  • Vcc引脚连接到Arduino板的5伏电压
  • GND引脚连接到Arduino板的接地
  • 我们需要在DATA和Vcc引脚之间连接10k欧姆电阻(上拉电阻)

一旦硬件连接完成,你需要添加DHT22库到你的Arduino库文件,如前所述。

结果

你将看到串口监视器上的温度和湿度显示,每2秒更新一次。