###基于Ardunio三轮循迹小车四路循迹模块。
##希望在第三次检测到1111时停止,试了多种判断,但总是调试不对。
#希望大佬可以指点指点。
#define LeftMotor1 6 //Arduino的3号引脚连接在IN3端口
#define LeftMotor2 9 //Arduino的5号引脚连接在IN4端口
#define RightMotor1 3 //Arduino的6号引脚连接在接IN5端口
#define RightMotor2 5 //Arduino的9号引脚连接在接IN6端口
#define track1 10 //Arduino的10号引脚连接在最左边的循迹模块
#define track2 11
#define track3 12
#define track4 13
int Sensor[4] = {0, 0, 0, 0}; //初始化循迹的值
int i=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //串口初始化
Track_Init(); //循迹模块初始化
Motor_Init(); //电机引脚初始化
}
void loop() {
// put your main code here, to run repeatedly:
Sensor_Read(); //不断地读取循迹模块的高低电平
xun_ji(); //循迹函数
count();//经过第某个1111停止
}
void Track_Init()
{
//循迹模块D0引脚初始化,设置为输入模式
pinMode(track1, INPUT);
pinMode(track2, INPUT);
pinMode(track3, INPUT);
pinMode(track4, INPUT);
}
void Motor_Init()
{
//电机引脚初始化,设置为输出模式
pinMode(LeftMotor1, OUTPUT);
pinMode(LeftMotor2, OUTPUT);
pinMode(RightMotor1, OUTPUT);
pinMode(RightMotor2, OUTPUT);
}
void Sensor_Read()
{
Sensor[0]=digitalRead(track1); //检测到黑线为高电平(1),白线为低电平(0)
Sensor[1]=digitalRead(track2);
Sensor[2]=digitalRead(track3);
Sensor[3]=digitalRead(track4);
}
void Motor_Speed(int Left1_Speed, int Left2_Speed, int Right1_Speed, int Right2_Speed)
{
analogWrite(LeftMotor1, Left1_Speed); //控制电机的速度
analogWrite(LeftMotor2, Left2_Speed);
analogWrite(RightMotor1, Right1_Speed);
analogWrite(RightMotor2, Right2_Speed);
}
void run()//直走
{
analogWrite(6,100);
analogWrite(9,0);
analogWrite(3,90);
analogWrite(5,0);
delay(10);
}
void left1()//小左转
{
analogWrite(6,50);
analogWrite(9,0);
analogWrite(3,70);
analogWrite(5,0);
delay(10);
}
void left2()//大左转
{
analogWrite(6,0);
analogWrite(9,70);
analogWrite(3,70);
analogWrite(5,0);
delay(10);
}
void leftrun()//左直角
{
analogWrite(6,0);
analogWrite(9,100);
analogWrite(3,110);
analogWrite(5,0);
delay(10);
}
void rightrun()//右直角
{
analogWrite(6,120);
analogWrite(9,0);
analogWrite(3,0);
analogWrite(5,100);
delay(10);
}
void right1()//小右转
{
analogWrite(6,80);
analogWrite(9,0);
analogWrite(3,50);
analogWrite(5,0);
delay(10);
}
void right2()//大右转
{
analogWrite(6,85);
analogWrite(9,0);
analogWrite(3,0);
analogWrite(5,70);
delay(10);
}
void stop()//停止
{
analogWrite(6,0);
analogWrite(9,0);
analogWrite(3,0);
analogWrite(5,0);
delay(10);
}
void count()
{
if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
{
i++;delay(200);
if(i>2)
{
stop();
}
}
}
void xun_ji()
{
if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==0)
run();
if(Sensor[0]==0&&Sensor[1]==1&&Sensor[2]==0&&Sensor[3]==0)
left1();
if(Sensor[0]==1&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==0)
left2();
if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==0&&Sensor[3]==0)
leftrun();
if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==1&&Sensor[3]==0)
right1();
if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==0&&Sensor[3]==1)
right2();
if(Sensor[0]==0&&Sensor[1]==0&&Sensor[2]==1&&Sensor[3]==1)
rightrun();
if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==0)
leftrun();
if(Sensor[0]==0&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
rightrun();
if(Sensor[0]==1&&Sensor[1]==1&&Sensor[2]==1&&Sensor[3]==1)
run();
}
##本来执着于写环岛代码来着,发现判断语句不是按照思路执行,进而进行简单的判断路口,依旧调试不成,难受好几天了.
1、相对湿度转换
相对湿度 RH 都可以根据 SDA 输出的相对湿度
信号 SRH 通过如下公式计算获得
(结果以 %RH 表示):
2、温度转换
温度 T 都可以通过将温度输出信号 ST 代入到
下面的公式计算得到
(结果以温度 ℃ 表示):