玩转Arduino-编程2 第三方组件

在Arduino中,我们一般会经常使用第三方库,下面使用小车的湿度传感器作为一个演示。

首先,与C++一样,先调用这个库

#include<.....>但需要注意的是此处的库需要导入!!!且名字需要一样

#include

其次,我们输入的数据数据类型可以不是一般的数据类型。

如这个程序:dht11 DHT11;

在获取数据中,经常性的输出验证是很关键的,比如

Serial.println(DHT11LIB_VERSION);

  Serial.println();

最终,我们得到了一个数据,通过结构体的调用为DHT11.humdity,然后转化为(float)即可


完整代码如下

#include

dht11 DHT11;

int ledp = 3;

int led = 4;

int DHT11PIN= 6;

int Left_motor_go=11;    //左电机前进(IN1)

int Left_motor_back=10;    //左电机后退(IN2)

int Right_motor_back=9;    // 右电机前进(IN3)

int Right_motor_go=8;    // 右电机后退(IN4)

const int SensorRight = 3;    //右循迹红外传感器(P3.2 OUT1)

const int SensorLeft = 4;      //左循迹红外传感器(P3.3 OUT2)

int SL;    //左循迹红外传感器状态

int SR;    //右循迹红外传感器状态

//setup方法在程序一开始执行,且只执行一次

void setup()

{

  //初始化电机驱动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方法在程序中循环执行多次

void loop()

{

  //有信号为LOW  没有信号为HIGH  检测到黑线  输出高  检测到白色区域输出低

  Serial.println("\n");

  int chk = DHT11.read(DHT11PIN);

  // 测试 DHT 是否正确连接

  Serial.print("Read sensor: ");

  SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L1亮;没信号表明压在黑线上,车子底板上L1灭


  SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭

  digitalWrite(ledp,LOW);

  digitalWrite(led,HIGH);

  if (SL == LOW&&SR==LOW&&(float)DHT11.humidity>80){

    digitalWrite(ledp,HIGH);

      digitalWrite(led,HIGH);

    run();  //调用前进函数

  }

  else if (SL == HIGH & SR == LOW){// 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转

    left();

  }

  else if (SR == HIGH & SL == LOW){ // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转 

    right() ;

  }

  else{ // 都是黑色, 停止

    brake();

  }


}

void run()

{

  digitalWrite(Right_motor_go,HIGH);  // 右电机前进

  digitalWrite(Right_motor_back,LOW);   


  digitalWrite(Left_motor_go,HIGH);  // 左电机前进

  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);//执行时间,可以调整 

}

//void left(int time)        //左转(左轮不动,右轮前进)

void left()

{

  digitalWrite(Left_motor_go,LOW);  //左轮不动

  digitalWrite(Left_motor_back,LOW);


  digitalWrite(Right_motor_go,HIGH);  // 右电机前进

  digitalWrite(Right_motor_back,LOW);

}

void spin_left()        //左转(左轮后退,右轮前进)

{

  digitalWrite(Right_motor_go,HIGH); // 右电机前进

  digitalWrite(Right_motor_back,LOW);

  digitalWrite(Left_motor_go,LOW);  //左轮后退

  digitalWrite(Left_motor_back,HIGH);

}

//void right(int time)        //右转(右轮不动,左轮前进)

void right()

{

  digitalWrite(Left_motor_go,HIGH);  //左轮前进

  digitalWrite(Left_motor_back,LOW);


  digitalWrite(Right_motor_go,LOW);  // 右轮不动

  digitalWrite(Right_motor_back,LOW);

}

void spin_right()        //右转(右轮后退,左轮前进)

{

  digitalWrite(Left_motor_go,HIGH);//左电机前进

  digitalWrite(Left_motor_back,LOW);


  digitalWrite(Right_motor_go,LOW);  //右电机后退

  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);

}

希望大家可以举一反三,使用其他的库创造自己的智能小车!

你可能感兴趣的:(玩转Arduino-编程2 第三方组件)