Доброго времени суток дорогие знатоки, написал небольшой код который считывает данные с датчика отправляет данные на транзистор , тот в свою очередь Шимом зажигает ленты. Вроде все обычно и понятно. Но проблема в том, что при попадании обьекта в pir, он срабатывает повторно и соответсвенно зажигает лед еще раз. Хотелось бы чтобы датчик постоянно опрашивал себя и зажигал ленту только во время действия обьекта и держал включенным ленту и выключал при отстутствии сигнала. Код (C++): unsigned long tim_e; byte transPin = 5; // инициализируем пин для транзистора byte PirPin = 8; // PIR инициализируем пин для получения сигнала от пироэлектрического датчика движения boolean pirState = LOW; // состояние датчика boolean val = 0; // переменная для чтения состояния пина int fadeValue = 0; // переменная для плавного вкл ленты //int ledstrip = 7; // LED connected to digital pin 5 void setup() { Serial.begin (9600); pinMode(transPin, OUTPUT); // объявляем светодиод в качестве OUTPUT pinMode(PirPin, INPUT); // объявляем датчик в качестве INPUT } void loop() { val = digitalRead(PirPin); // считываем значение с датчика if (millis() - tim_e > 5000) { // каждые 5 секунд смотрим tim_e = millis (); // приравниваем текущее с настоящим //pirState = HIGH; // включаем флаг значения датчика на HIGH switch (val){ // сравниваем значения переменной val case (HIGH) : Serial.println("efefefe"); for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 20) // цикл на плавное вкдючение { analogWrite(transPin, fadeValue); // выводим цикл на контакт транзистора delay(50);// задержка для плавного вывода } delay (5000); // ждем 15 сек // pirState = LOW; break; case (LOW): digitalWrite (transPin, LOW); break; } } if (millis() < tim_e) // если больше 50 дней то сбрасываем время в 0 tim_e = millis(); }
Не проверять пир? Или убрать управление лентой из пира. Или описать подробнее что у вас есть, как соединили и что хотите получить. Желательно, подсказать нам где, как вы думаете, у вас ошибка.
бери лист бумаги и рисуй алгоритм. За тебя этого никто делать не будет. Как нарисуешь - выкладывай сюда. А по алгоритму нарисовать код любая обезьяна сможет.