Помогите новичку с кодом для лестницы
- Войдите на сайт для отправки комментариев
Чт, 30/04/2020 - 20:19
С ардуино практически не знаком как и с программированием тоже =((( Сделал простую летницу с подсветкой ступеней , мудрил мудрил но так и не чего не получается.. Врубается вроде врубается при пересечении соноров, а вот как работать с датчиком освещённости так и не понял.. мигает вечером как припадошная. Понимаю что код написан скорее всего самым идиотским способом (как разобрался =))))) ,прошу помочь , может его можно как то упростить ? и как заставить работать датчик света, чтобы грубо не на одно значение а допустим на диапазон какой то , а то если подойти к датчику при падении тени от человека он врубается а как отходишь он вырубает всё =(((((
int echoPin = 3; int trigPin = 2; int echoPin2 = 6; int trigPin2 = 5; int ledind = 13; int led = 12; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT); pinMode(led, OUTPUT); } int x ; int t=200; //время горения int duration, cm, cm2, duration2; int svet; void Svet(){ svet = analogRead(0); } void OneSonar() { // 1 сонар digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); cm = duration / 58; } void TwoSonar() {// 2 сонар digitalWrite(trigPin2, LOW); delayMicroseconds(2); digitalWrite(trigPin2, HIGH); delayMicroseconds(10); digitalWrite(trigPin2, LOW); duration2 = pulseIn(echoPin2, HIGH); cm = duration2 / 58; } void loop() { Svet(); // проверяем освещённость if (svet > 930) { OneSonar(); //1 сонар if (cm < 75&&cm>0) { digitalWrite(led, LOW); x=t; } if (x>0) { x = x-1; } if (x<1) { digitalWrite(led, HIGH); x=0; } TwoSonar(); //2 сонар if (cm < 75&&cm>0) { digitalWrite(led, LOW); x=t; } if (x>0) { x = x-1; } if (x<1) { digitalWrite(led, HIGH); x=0; } } else { digitalWrite(led, HIGH); } delay(100); }
А Вы языком (любым) владеете?
Если "да", то напишите алгоритм действий для полного идиота. Например:
1)Если на аналоговом входе значение более 1200, то замыкаем контакт 3 и записываем текущее значение миллис()
2) Если на аналоговом входе значение менее 1200 и миллис не переполнился :), то замыкаем контакт 3 иначе - запускаем подпрограмму boolean armageddon(int satana)
и т.д.
Видимо ни кто не знает ...
странная реакция у ТС на попытку ему помочь. От себя скажу, уберите вообще зависимость от света. На движение нормально работает? Если да, то напишите простую программу вывода значений с датчика освещённости в сериал монитор и поймёте как он себя ведёт при тени и т.д.