From f3f374716a011d9cfa84d0e6cdbfe0ac5b53ebf0 Mon Sep 17 00:00:00 2001 From: "lxbpxylps@126.com" Date: Wed, 10 Mar 2021 23:35:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=81=B0=E5=BA=A6=E4=BC=A0?= =?UTF-8?q?=E6=84=9F=E5=99=A8=E7=81=B0=E5=BA=A6=E5=80=BC=E5=81=8F=E7=A6=BB?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TaiChi/sensorTaiChi.cpp | 51 +++++++++++++++++++++++++++++++++++++++++ TaiChi/sensorTaiChi.h | 17 ++++++++------ 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/TaiChi/sensorTaiChi.cpp b/TaiChi/sensorTaiChi.cpp index a14cf37..9baec7b 100644 --- a/TaiChi/sensorTaiChi.cpp +++ b/TaiChi/sensorTaiChi.cpp @@ -114,6 +114,57 @@ bool Sensor::IsWhite(uint8_t gray_sensor_num) } +//灰度传感器灰度值偏离比例,即 (gray_gate - gray_val) / gray_gate +float Sensor::GrayDeviationRate(uint8_t gray_sensor_num) +{ + uint8_t gray_out_pin; + int gray_val; + int gray_gate; + float deviarion_rate; + + 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; + } + + gray_val = analogRead(gray_out_pin); + + #ifdef SENSOR_DEBUG + //调试输出灰度值 + switch (gray_sensor_num) + { + case GRAY_1: Serial.print("#SENSOR: GRAY_1 and gate_val: "); break; + case GRAY_2: Serial.print("#SENSOR: GRAY_2 and gate_val: "); break; + case GRAY_3: Serial.print("#SENSOR: GRAY_3 and gate_val: "); break; + case GRAY_4: Serial.print("#SENSOR: GRAY_4 and gate_val: "); break; + case GRAY_5: Serial.print("#SENSOR: GRAY_5 and gate_val: "); break; + case GRAY_6: Serial.print("#SENSOR: GRAY_6 and gate_val: "); break; + case GRAY_7: Serial.print("#SENSOR: GRAY_7 and gate_val: "); + } + + Serial.print(gray_val); + Serial.print(" "); + Serial.print(gray_gate); + #endif + + //deviarion_rate = (float)(gray_gate - gray_val) / gray_gate; + deviarion_rate = (float)gray_val / gray_gate; + + #ifdef SENSOR_DEBUG + Serial.print(" deviarion_rate: "); + Serial.println(deviarion_rate); + #endif + + return deviarion_rate; +} + + //碰撞传感器(开关)判断是否闭合 bool Sensor::IsPushed(uint8_t button_num) { diff --git a/TaiChi/sensorTaiChi.h b/TaiChi/sensorTaiChi.h index a331080..6cadf67 100644 --- a/TaiChi/sensorTaiChi.h +++ b/TaiChi/sensorTaiChi.h @@ -25,13 +25,13 @@ #define GRAY_7_VCC 47 //灰度传感器临界值 -#define GRAY_1_GATE 740 -#define GRAY_2_GATE 740 -#define GRAY_3_GATE 740 -#define GRAY_4_GATE 740 -#define GRAY_5_GATE 740 -#define GRAY_6_GATE 740 -#define GRAY_7_GATE 790 +#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 802 //灰度传感器闪烁时间 #define GRAY_FLASH_TIME 200 @@ -69,6 +69,9 @@ public: //灰度传感器判断下方是否为白色 bool IsWhite(uint8_t gray_sensor_num); + //灰度传感器灰度值偏离比例,即 (gray_gate - gray_val) / gray_gate + float GrayDeviationRate(uint8_t gray_sensor_num); + //碰撞传感器(开关)判断是否闭合 bool IsPushed(uint8_t button_num); };