在Arduino中械蹋,我們一般會經(jīng)常使用第三方庫降传,下面使用小車的濕度傳感器作為一個演示至非。
首先钠署,與C++一樣,先調(diào)用這個庫
#include<.....>但需要注意的是此處的庫需要導(dǎo)入;耐帧P扯Α!且名字需要一樣
#include <dht11.h>
其次趣惠,我們輸入的數(shù)據(jù)數(shù)據(jù)類型可以不是一般的數(shù)據(jù)類型狸棍。
如這個程序:dht11 DHT11;
在獲取數(shù)據(jù)中,經(jīng)常性的輸出驗(yàn)證是很關(guān)鍵的味悄,比如
Serial.println(DHT11LIB_VERSION);
? Serial.println();
最終草戈,我們得到了一個數(shù)據(jù),通過結(jié)構(gòu)體的調(diào)用為DHT11.humdity侍瑟,然后轉(zhuǎn)化為(float)即可
完整代碼如下
#include <dht11.h>
dht11 DHT11;
int ledp = 3;
int led = 4;
int DHT11PIN= 6;
int Left_motor_go=11;? ? //左電機(jī)前進(jìn)(IN1)
int Left_motor_back=10;? ? //左電機(jī)后退(IN2)
int Right_motor_back=9;? ? // 右電機(jī)前進(jìn)(IN3)
int Right_motor_go=8;? ? // 右電機(jī)后退(IN4)
const int SensorRight = 3;? ? //右循跡紅外傳感器(P3.2 OUT1)
const int SensorLeft = 4;? ? ? //左循跡紅外傳感器(P3.3 OUT2)
int SL;? ? //左循跡紅外傳感器狀態(tài)
int SR;? ? //右循跡紅外傳感器狀態(tài)
//setup方法在程序一開始執(zhí)行唐片,且只執(zhí)行一次
void setup()
{
? //初始化電機(jī)驅(qū)動IO為輸出方式
? Serial.begin(9600);
? Serial.println("DHT11 TEST PROGRAM");
? Serial.print("LIBRARY");
? // 輸出 DHT 庫的版本號
? Serial.println(DHT11LIB_VERSION);
? Serial.println();
? pinMode(ledp,OUTPUT);
? pinMode(led,OUTPUT);
? pinMode(Left_motor_go,OUTPUT); // PIN 8 (PWM)
? pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
? pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM)
? pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)
? pinMode(SensorRight, INPUT); //定義右循跡紅外傳感器為輸入
? pinMode(SensorLeft, INPUT); //定義左循跡紅外傳感器為輸入
}
//setup方法在程序中循環(huán)執(zhí)行多次
void loop()
{
? //有信號為LOW? 沒有信號為HIGH? 檢測到黑線? 輸出高? 檢測到白色區(qū)域輸出低
? Serial.println("\n");
? int chk = DHT11.read(DHT11PIN);
? // 測試 DHT 是否正確連接
? Serial.print("Read sensor: ");
? SR = digitalRead(SensorRight);//有信號表明在白色區(qū)域,車子底板上L1亮;沒信號表明壓在黑線上牵触,車子底板上L1滅
? SL = digitalRead(SensorLeft);//有信號表明在白色區(qū)域淮悼,車子底板上L2亮;沒信號表明壓在黑線上揽思,車子底板上L2滅
? digitalWrite(ledp,LOW);
? digitalWrite(led,HIGH);
? if (SL == LOW&&SR==LOW&&(float)DHT11.humidity>80){
? ? digitalWrite(ledp,HIGH);
? ? ? digitalWrite(led,HIGH);
? ? run();? //調(diào)用前進(jìn)函數(shù)
? }
? else if (SL == HIGH & SR == LOW){// 左循跡紅外傳感器,檢測到信號袜腥,車子向右偏離軌道,向左轉(zhuǎn)
? ? left();
? }
? else if (SR == HIGH & SL == LOW){ // 右循跡紅外傳感器,檢測到信號钉汗,車子向左偏離軌道羹令,向右轉(zhuǎn)?
? ? right() ;
? }
? else{ // 都是黑色, 停止
? ? brake();
? }
}
void run()
{
? digitalWrite(Right_motor_go,HIGH);? // 右電機(jī)前進(jìn)
? digitalWrite(Right_motor_back,LOW);? ?
? digitalWrite(Left_motor_go,HIGH);? // 左電機(jī)前進(jìn)
? digitalWrite(Left_motor_back,LOW);
}
//void brake(int time)? //剎車,停車
void brake()
{
? digitalWrite(Right_motor_go,LOW);
? digitalWrite(Right_motor_back,LOW);
? digitalWrite(Left_motor_go,LOW);
? digitalWrite(Left_motor_back,LOW);
? //delay(time * 100);//執(zhí)行時間损痰,可以調(diào)整?
}
//void left(int time)? ? ? ? //左轉(zhuǎn)(左輪不動福侈,右輪前進(jìn))
void left()
{
? digitalWrite(Left_motor_go,LOW);? //左輪不動
? digitalWrite(Left_motor_back,LOW);
? digitalWrite(Right_motor_go,HIGH);? // 右電機(jī)前進(jìn)
? digitalWrite(Right_motor_back,LOW);
}
void spin_left()? ? ? ? //左轉(zhuǎn)(左輪后退,右輪前進(jìn))
{
? digitalWrite(Right_motor_go,HIGH); // 右電機(jī)前進(jìn)
? digitalWrite(Right_motor_back,LOW);
? digitalWrite(Left_motor_go,LOW);? //左輪后退
? digitalWrite(Left_motor_back,HIGH);
}
//void right(int time)? ? ? ? //右轉(zhuǎn)(右輪不動卢未,左輪前進(jìn))
void right()
{
? digitalWrite(Left_motor_go,HIGH);? //左輪前進(jìn)
? digitalWrite(Left_motor_back,LOW);
? digitalWrite(Right_motor_go,LOW);? // 右輪不動
? digitalWrite(Right_motor_back,LOW);
}
void spin_right()? ? ? ? //右轉(zhuǎn)(右輪后退肪凛,左輪前進(jìn))
{
? digitalWrite(Left_motor_go,HIGH);//左電機(jī)前進(jìn)
? digitalWrite(Left_motor_back,LOW);
? digitalWrite(Right_motor_go,LOW);? //右電機(jī)后退
? digitalWrite(Right_motor_back,HIGH);
}
//void back(int time)? ? ? ? ? //后退
void back()
{
? digitalWrite(Right_motor_go,LOW);? //右輪后退
? digitalWrite(Right_motor_back,HIGH);
? digitalWrite(Left_motor_go,LOW);? //左輪后退
? digitalWrite(Left_motor_back,HIGH);
}
希望大家可以舉一反三,使用其他的庫創(chuàng)造自己的智能小車辽社!