Кодирование резистора, чувствительного к силе, для выдачи выходного сигнала на основе использованного времени?

У меня есть базовая установка с использованием резистора, чувствительного к силе, для питания светодиода, как показано ниже. Мне интересно, как я могу закодировать это так, чтобы светодиод загорался после того, как на FSR было оказано давление в течение определенного времени. Исходя из этого, я хотел бы использовать светодиод RBG и сделать так, чтобы после определенных интервалов при непрерывном давлении светодиод менял цвет. Любые советы будут высоко оценены.

//Константы:
const int ledPin = 3;     //контакт 3 имеет функцию ШИМ
const int sensorPin = A0; //контакт A0 для считывания аналогового входа

//Переменные:
int value; //сохранить аналоговое значение


void setup(){

  pinMode(ledPin, OUTPUT);  //Установить вывод 3 как «выход»
  Serial.begin(9600);       //Начать последовательную связь

}

void loop(){

  value = analogRead(sensorPin);       //Считать и сохранить аналоговое значение с потенциометра
  Serial.println(value);               //Вывести значение
  value = map(value, 0, 1023, 0, 255); //Отобразить значение 0-1023 в 0-255 (ШИМ)
  analogWrite(ledPin, value);          //Отправить значение ШИМ на светодиод
  delay(100);                          //Небольшая задержка

}

, 👍0


1 ответ


1

Вам нужно будет объявить переменную для хранения начального времени (millis()), когда сила превысит пороговое значение.

Вам нужно будет объявить константу для хранения порогового значения (при аналоговых данных вы, скорее всего, не захотите, чтобы пороговое значение давления было «больше 0», поскольку шум и другие факторы, такие как небольшие вибрации, будут срабатывать).

Также объявите константу для хранения «времени задержки» в миллисекундах.

В вашем loop(), когда у вас есть аналоговое значение, которое превышает порог давления, сохраните значение millis(). Также в вашем loop(), когда текущее millis() минус начальное значение больше, чем "время удержания", активируйте ваш светодиод.

Для RGB настройка та же, но вы можете задать цвет на основе того, насколько разница во времени больше времени задержки.

,