Поэтому решил переделать на датчиках Sharp 2Y0A21
однако этот датчик аналоговый.
Нашел для него скетч
const int IRpin = A2; // аналоговый пин для подключения выхода Vo сенсора
void setup() {
Serial.begin(9600); // Запуск последовательного порта
}
void loop() {
// получаем сглаженное значение и переводим в напряжение
float volts = analogRead(IRpin)*0.0048828125;
// и в расстояние в см
float distance=32*pow(volts,-1.10);
Serial.println(distance, DEC); // выдаем в порт значение
delay(10);
}
Данный скетч выдает расстояние до объекта в см
И вот в чем вопрос. Так как я не разбираюсь от слова совсем в программировании на ардуино нужно помощь в доливании оригинального скетча с цифровыми датчиками на аналоговые.
то есть нужно прописать при значении <=100 датчик считался вкл
при значении >=101 датчик считался выкл
Вот начальный кусок кода (нашел все куски где записан PirSensor (то есть цифровой датчик)
#define SENSOR_START A1 // пин датчика движения
#define SENSOR_END A2 // пин датчика движения
struct PirSensor {
int8_t effectDirection;
int8_t pin;
bool lastState;
};
PirSensor startPirSensor = { 1, SENSOR_START, false};
PirSensor endPirSensor = { -1, SENSOR_END, false};
void handlePirSensor(PirSensor *sensor) {
if (systemOffState) return;
int newState = digitalRead(sensor->pin);
if (newState && !sensor->lastState) {
Serial.print("PIR sensor ");
Serial.println(sensor->pin);
timeoutCounter = millis(); // при срабатывании датчика устанавливаем заново timeout
if (systemIdleState) {
effectDirection = sensor->effectDirection;
if (ROTATE_EFFECTS) {
curEffect = ++effectCounter % EFFECTS_AMOUNT;
}
stepFader(effectDirection == 1 ? 0 : 1, 0);
systemIdleState = false;
}
}
sensor->lastState = newState;
}
Вот ссылка на исходник https://github.com/degterjow/LEDstairs
версия 1.2