Помогите новичку с кодом для лестницы
- Войдите на сайт для отправки комментариев
Чт, 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)
и т.д.
Видимо ни кто не знает ...
странная реакция у ТС на попытку ему помочь. От себя скажу, уберите вообще зависимость от света. На движение нормально работает? Если да, то напишите простую программу вывода значений с датчика освещённости в сериал монитор и поймёте как он себя ведёт при тени и т.д.