重构灰度传感器相关代码,现在传感器临界值可以在运行中设置

This commit is contained in:
lxbpxylps@126.com 2021-03-20 18:09:46 +08:00
parent 2994c59329
commit d88f02273e
2 changed files with 61 additions and 24 deletions

View File

@ -6,8 +6,8 @@
Sensor::Sensor()
{
pinMode(BUTTON_1_OUT, INPUT);
pinMode(BUTTON_2_OUT, INPUT);
pinMode(BUTTON_1_OUT, INPUT_PULLUP);
pinMode(BUTTON_2_OUT, INPUT_PULLUP);
pinMode(GRAY_1_VCC, OUTPUT);
digitalWrite(GRAY_1_VCC, HIGH);
@ -35,6 +35,31 @@ Sensor::Sensor()
pinMode(BUTTON_2_VCC, OUTPUT);
digitalWrite(BUTTON_2_VCC, HIGH);
//设置灰度值为默认值
SetGrayGate(GRAY_1, DEFAULT_GRAY_1_GATE);
SetGrayGate(GRAY_2, DEFAULT_GRAY_2_GATE);
SetGrayGate(GRAY_3, DEFAULT_GRAY_3_GATE);
SetGrayGate(GRAY_4, DEFAULT_GRAY_4_GATE);
SetGrayGate(GRAY_5, DEFAULT_GRAY_5_GATE);
SetGrayGate(GRAY_6, DEFAULT_GRAY_6_GATE);
SetGrayGate(GRAY_7, DEFAULT_GRAY_7_GATE);
}
//设置灰度传感器临界值
void Sensor::SetGrayGate(uint8_t gray_sensor_num, int gate)
{
switch (gray_sensor_num)
{
case GRAY_1: gray_1_gate = gate; break;
case GRAY_2: gray_2_gate = gate; break;
case GRAY_3: gray_3_gate = gate; break;
case GRAY_4: gray_4_gate = gate; break;
case GRAY_5: gray_5_gate = gate; break;
case GRAY_6: gray_6_gate = gate; break;
case GRAY_7: gray_7_gate = gate;
}
}
@ -80,13 +105,13 @@ bool Sensor::IsWhite(uint8_t gray_sensor_num)
switch (gray_sensor_num)
{
case GRAY_1: gray_out_pin = GRAY_1_OUT; gray_gate = GRAY_1_GATE; break;
case GRAY_2: gray_out_pin = GRAY_2_OUT; gray_gate = GRAY_2_GATE; break;
case GRAY_3: gray_out_pin = GRAY_3_OUT; gray_gate = GRAY_3_GATE; break;
case GRAY_4: gray_out_pin = GRAY_4_OUT; gray_gate = GRAY_4_GATE; break;
case GRAY_5: gray_out_pin = GRAY_5_OUT; gray_gate = GRAY_5_GATE; break;
case GRAY_6: gray_out_pin = GRAY_6_OUT; gray_gate = GRAY_6_GATE; break;
case GRAY_7: gray_out_pin = GRAY_7_OUT; gray_gate = GRAY_7_GATE;
case GRAY_1: gray_out_pin = GRAY_1_OUT; gray_gate = gray_1_gate; break;
case GRAY_2: gray_out_pin = GRAY_2_OUT; gray_gate = gray_2_gate; break;
case GRAY_3: gray_out_pin = GRAY_3_OUT; gray_gate = gray_3_gate; break;
case GRAY_4: gray_out_pin = GRAY_4_OUT; gray_gate = gray_4_gate; break;
case GRAY_5: gray_out_pin = GRAY_5_OUT; gray_gate = gray_5_gate; break;
case GRAY_6: gray_out_pin = GRAY_6_OUT; gray_gate = gray_6_gate; break;
case GRAY_7: gray_out_pin = GRAY_7_OUT; gray_gate = gray_7_gate;
}
gray_val = analogRead(gray_out_pin);
@ -125,13 +150,13 @@ float Sensor::GrayDeviationRate(uint8_t gray_sensor_num)
switch (gray_sensor_num)
{
case GRAY_1: gray_out_pin = GRAY_1_OUT; gray_gate = GRAY_1_GATE; break;
case GRAY_2: gray_out_pin = GRAY_2_OUT; gray_gate = GRAY_2_GATE; break;
case GRAY_3: gray_out_pin = GRAY_3_OUT; gray_gate = GRAY_3_GATE; break;
case GRAY_4: gray_out_pin = GRAY_4_OUT; gray_gate = GRAY_4_GATE; break;
case GRAY_5: gray_out_pin = GRAY_5_OUT; gray_gate = GRAY_5_GATE; break;
case GRAY_6: gray_out_pin = GRAY_6_OUT; gray_gate = GRAY_6_GATE; break;
case GRAY_7: gray_out_pin = GRAY_7_OUT; gray_gate = GRAY_7_GATE;
case GRAY_1: gray_out_pin = GRAY_1_OUT; gray_gate = gray_1_gate; break;
case GRAY_2: gray_out_pin = GRAY_2_OUT; gray_gate = gray_2_gate; break;
case GRAY_3: gray_out_pin = GRAY_3_OUT; gray_gate = gray_3_gate; break;
case GRAY_4: gray_out_pin = GRAY_4_OUT; gray_gate = gray_4_gate; break;
case GRAY_5: gray_out_pin = GRAY_5_OUT; gray_gate = gray_5_gate; break;
case GRAY_6: gray_out_pin = GRAY_6_OUT; gray_gate = gray_6_gate; break;
case GRAY_7: gray_out_pin = GRAY_7_OUT; gray_gate = gray_7_gate;
}
gray_val = analogRead(gray_out_pin);
@ -154,7 +179,6 @@ float Sensor::GrayDeviationRate(uint8_t gray_sensor_num)
Serial.print(gray_gate);
#endif
//deviarion_rate = (float)(gray_gate - gray_val) / gray_gate;
deviarion_rate = (float)gray_val / gray_gate;
#ifdef SENSOR_DEBUG

View File

@ -25,13 +25,13 @@
#define GRAY_7_VCC 47
//灰度传感器临界值
#define GRAY_1_GATE 900
#define GRAY_2_GATE 900
#define GRAY_3_GATE 850
#define GRAY_4_GATE 850
#define GRAY_5_GATE 900
#define GRAY_6_GATE 880
#define GRAY_7_GATE 690
#define DEFAULT_GRAY_1_GATE 900
#define DEFAULT_GRAY_2_GATE 900
#define DEFAULT_GRAY_3_GATE 850
#define DEFAULT_GRAY_4_GATE 850
#define DEFAULT_GRAY_5_GATE 900
#define DEFAULT_GRAY_6_GATE 880
#define DEFAULT_GRAY_7_GATE 690
//灰度传感器闪烁时间
#define GRAY_FLASH_TIME 200
@ -66,6 +66,9 @@ class Sensor
public:
Sensor();
//设置灰度传感器临界值
void SetGrayGate(uint8_t gray_sensor_num, int gate);
//使灰度传感器闪烁
void FlashGraySensor(uint8_t gray_sensor_num);
@ -83,6 +86,16 @@ public:
//返回朝向角
float GetAngle(void);
private:
//灰度传感器临界值
int gray_1_gate;
int gray_2_gate;
int gray_3_gate;
int gray_4_gate;
int gray_5_gate;
int gray_6_gate;
int gray_7_gate;
};