From d88f02273e433542b77656bc85539cf4c7d65a5b Mon Sep 17 00:00:00 2001 From: "lxbpxylps@126.com" Date: Sat, 20 Mar 2021 18:09:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=81=B0=E5=BA=A6=E4=BC=A0?= =?UTF-8?q?=E6=84=9F=E5=99=A8=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E4=BC=A0=E6=84=9F=E5=99=A8=E4=B8=B4=E7=95=8C?= =?UTF-8?q?=E5=80=BC=E5=8F=AF=E4=BB=A5=E5=9C=A8=E8=BF=90=E8=A1=8C=E4=B8=AD?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TaiChi/sensorTaiChi.cpp | 58 +++++++++++++++++++++++++++++------------ TaiChi/sensorTaiChi.h | 27 ++++++++++++++----- 2 files changed, 61 insertions(+), 24 deletions(-) diff --git a/TaiChi/sensorTaiChi.cpp b/TaiChi/sensorTaiChi.cpp index 2476108..bd1ac78 100644 --- a/TaiChi/sensorTaiChi.cpp +++ b/TaiChi/sensorTaiChi.cpp @@ -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 diff --git a/TaiChi/sensorTaiChi.h b/TaiChi/sensorTaiChi.h index e2f3995..47b5034 100644 --- a/TaiChi/sensorTaiChi.h +++ b/TaiChi/sensorTaiChi.h @@ -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; };