Сенсорный датчик и потенциометр - Нужна помощь
Я использую Arduino Nano с емкостным сенсорным датчиком и потенциометром. Я пытаюсь заставить свой код различать три разных состояния программы.
- Один из них-это когда мой сенсорный датчик НЕ трогают.
- Два-это когда к моему сенсорному датчику прикасаются.
- А три - это когда прикасаются к моему сенсорному датчику И одновременно перемещают потенциометр.
У меня возникают проблемы со вторым состоянием программы, когда я просто касаюсь фейдера, но не двигаю потенциометр. Состояние программы 1 отлично работает, но состояние программы 3 активируется даже тогда, когда данные с потенциометра не поступают.
Вот код. А идеи?
#include <CapacitiveSensor.h>
#define rxPin 4
#define txPin 1
const byte touchSend = 2;
const byte touchReceive = 7;
byte minimumCp = 200; // Поднять, если фейдер слишком чувствителен (0-16383)
bool touched = false; //Трогается ли фейдер в данный момент?
CapacitiveSensor touchSensor = CapacitiveSensor(touchReceive, touchSend);
void setup() {
touchSensor.set_CS_AutocaL_Millis(0xFFFFFFFF);
pinMode(rxPin, INPUT );
pinMode(txPin, OUTPUT);
Serial.begin(57600);
}
void loop() {
int faderPos = analogRead(A7);
int lastfaderValue;
int totalCp = touchSensor.capacitiveSensor(30);
if (totalCp <= minimumCp) { // Не трогать фейдер
touched = false;
Serial.println("Not Touching Fader");
delay(15);}
if ((faderPos == lastfaderValue) && (totalCp > minimumCp)) { // Касание фейдера
touched = true;
Serial.println("Touching Fader, NOT Moving");
delay(15);}
if ((faderPos != lastfaderValue) && (totalCp > minimumCp)) { //Касание фейдера и перемещение
touched = true;
Serial.println("Touching Fader, Moving");
delay(15);}
lastfaderValue = faderPos; }
@zRockafellow, 👍2
Обсуждение1 ответ
▲ 2
Я все понял.
У меня было целое число lastfaderValue не в том месте. Он работает, когда я помещаю его в начало кода (перед настройкой).
Я также добавил допуск, так что потенциометр все еще может слегка колебаться, когда я к нему не прикасаюсь.
Теперь работает хорошо.
,
@zRockafellow
Смотрите также:
- Считывание значений с емкостного сенсорного датчика TTP229 на arduino
- MAX30100 не работает
- Уменьшить яркость светодиода с помощью NPN-транзистора
- Использование библиотеки емкостных датчиков с мультиплексором 74HC4067
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Проблема с сигналом датчика пульса
- Как вы справляетесь с дрейфом датчиков?
- Подключение двух Arduino через I2C, когда контакты I2C A4/A5 уже используются.
Ваше
lastfaderValue
всегда равноfaderPos
., @hcheungКаждый раз, когда вы вводите "loop", вы сравниваете входные данные банка с произвольным значением, которое вы считаете последним значением банка, но поскольку оно локально для " loop`, это не так. Возможно, вы не предполагали, что это будет локальная переменная. Я бы добавил, что вам, вероятно, также понадобится минимальная дельта банка, так как одновременное чтение может не сообщать одно и то же значение, даже если оно не перемещается., @Dave Newton