Помогите новичку с кодом для лестницы

yasenkov
Offline
Зарегистрирован: 09.07.2016

С ардуино практически не знаком как и с программированием тоже =((( Сделал простую летницу с подсветкой ступеней , мудрил мудрил но так и не чего не получается.. Врубается вроде врубается при пересечении соноров, а вот как работать с датчиком освещённости так и не понял.. мигает вечером как припадошная. Понимаю что код написан скорее всего  самым идиотским способом (как разобрался =))))) ,прошу помочь , может его можно как то упростить ? и как заставить работать датчик света, чтобы грубо не на одно значение а допустим на диапазон какой то , а то если подойти к датчику при падении тени от человека он врубается а как отходишь он вырубает всё =(((((

 

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);
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А Вы языком (любым) владеете?

 Если "да", то напишите алгоритм действий для полного идиота. Например:

1)Если на аналоговом входе значение более 1200, то замыкаем контакт 3 и записываем текущее значение миллис()

2) Если на аналоговом входе значение менее 1200 и миллис не переполнился :), то замыкаем контакт 3 иначе - запускаем подпрограмму boolean armageddon(int satana)

 и т.д.

yasenkov
Offline
Зарегистрирован: 09.07.2016

Видимо ни кто не знает ...

MaksVV
Offline
Зарегистрирован: 06.08.2015

странная реакция у ТС на попытку ему помочь. От себя скажу, уберите вообще зависимость от света. На движение нормально работает? Если да, то напишите простую программу вывода значений с датчика освещённости в сериал монитор и поймёте как он себя ведёт при тени и т.д.