www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

SENZOR NE ZAZNAVA ZMERAJ, pomoč v kodi a

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
electo.vihar
Neznanec
Neznanec



Pridružen-a: Ned 24 Nov 2013 19:36
Prispevkov: 2
Aktiv.: 0.02
Kraj: Ptuj

PrispevekObjavljeno: Pon Jan 11, 2016 9:27 pm    Naslov sporočila:  SENZOR NE ZAZNAVA ZMERAJ, pomoč v kodi a Odgovori s citatom

Torej, izdelujem krmilnik za prižiganje LED trakov pod stopnicami. Pod vsako stopnico imam en LED trak, dva senzorja (Ultrasonic sensor) enega na najvišji stopnici in enega na najnižji. Kodo imam napisano vendar imam problem da senzorja ne zaznavata cel čas, kot bi zaznavala samo na 5sekund. Mislim da je kriva koda.
Prosim za pomoč pri tem.
Koda:



#define trigPin 2
#define echoPin 3

#define trigPin2 5
#define echoPin2 6


int LED1 = 22; //LED pomeni enako pin13
int LED2 = 24;
int LED3 = 26;
int LED4 = 28; 
int LED5 = 30;
int LED6 = 31;
int LED7 = 32;
int LED8 = 33;
int LED9 = 34;
int LED10 = 35;
int LED11 = 36;
int LED12 = 37;
int LED13 = 38;
int LED14 = 39;
int LED15 = 40;
int LED16 = 41;


int cas1 = 250;         //čas prižiganja od LED1 do LED2
int cas = 150;          //čas ugašanja od LED1 do LED2
int pauza = 5000;       //čas hoje po stopnicah od LED1 do LED16

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT); // Izberemo, da je pin vhod  ()
  pinMode(LED1, OUTPUT);   // Izberemo, da je pin izhod  (OUTPUT)
  pinMode(LED2, OUTPUT);   
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
  pinMode(LED11, OUTPUT);
  pinMode(LED12, OUTPUT);
  pinMode(LED13, OUTPUT);
  pinMode(LED14, OUTPUT);
  pinMode(LED15, OUTPUT);
  pinMode(LED16, OUTPUT);
}

void loop() {
  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);     
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 50)   // This is where the LED On/Off happens
 
{
  digitalWrite(LED1, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj   
  digitalWrite(LED2, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED3, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED4, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED5, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED6, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED7, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED8, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED9, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED10, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED11, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED12, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED13, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED14, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);                // Počakaj 
  digitalWrite(LED15, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj
  digitalWrite(LED16, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

 
  delay (pauza);

 

 
}
  else {
  digitalWrite(LED16, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED15, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);              // Počakaj 

  digitalWrite(LED14, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);              // Počakaj 

  digitalWrite(LED13, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED12, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED11, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED10, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED9, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED8, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED7, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED6, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED5, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED4, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
   
  digitalWrite(LED3, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);                   // Počakaj 
 
  digitalWrite(LED2, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED1, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj
 

  }
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);


  long duration2, distance2;
  digitalWrite(trigPin2, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin2, HIGH);   //  delayMicroseconds(1000); - Removed this line
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = (duration2/2) / 29.1;
  if (distance2 < 50)   // Kdaj se LED prižge oz. ugasne
   
 {
  digitalWrite(LED16, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda) v mojem primeru prižig, saj sem na čip zvezal GND od LED
  delay(cas1);               // Počakaj
 
  digitalWrite(LED15, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED14, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED13, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED12, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED11, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED10, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED9, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED8, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED7, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED6, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED5, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED4, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);                // Počakaj
   
  digitalWrite(LED3, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED2, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

  digitalWrite(LED1, LOW);    // Ugasnemo LED diodo (Nizko stanje izhoda)
  delay(cas1);               // Počakaj

delay (pauza);

 

}


  else {

  digitalWrite(LED1, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj   
 
  digitalWrite(LED2, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);              // Počakaj 

  digitalWrite(LED3, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);              // Počakaj 

  digitalWrite(LED4, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED5, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED6, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED7, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED8, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED9, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED10, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 

  digitalWrite(LED11, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED12, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED13, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
   
  digitalWrite(LED14, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);                   // Počakaj 
 
  digitalWrite(LED15, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);               // Počakaj 
 
  digitalWrite(LED16, HIGH);   // Prižgemo LED diodo (Visoko stanje izhoda)
  delay(cas);
  }
  if (distance2 >= 200 || distance2 <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance2);
    Serial.println(" cm");
  }
  delay(500);

}




20160111200154.jpg
 Opis:
 Velikost datoteke:  184.88 KB
 Pogledana:  30 krat

20160111200154.jpg


Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Bizgec65
Član
Član



Pridružen-a: Sre 10 Mar 2010 11:46
Prispevkov: 2057
Aktiv.: 11.98
Kraj: Trebnje

PrispevekObjavljeno: Pon Jan 11, 2016 9:34 pm    Naslov sporočila:   Odgovori s citatom

Zmanjšaj sliko, da ne rabimo 3 monitorjev.

Edino kjer vidim 5 sec je:

int pauza = 5000; //čas hoje po stopnicah od LED1 do LED16

_________________
Če bi nekateri padli z višine svojega ega na višino svoje inteligence, bi se ubili. (Je pa res, da se meni ne smilijo!) Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ElGrigon
Član
Član



Pridružen-a: Pon 24 Jul 2006 22:38
Prispevkov: 3880
Aktiv.: 17.97
Kraj: okolica Lenarta

PrispevekObjavljeno: Pon Jan 11, 2016 10:20 pm    Naslov sporočila:   Odgovori s citatom

Ko ni nobenega v bližini ti koda leti v ugašanju LED in vedno imaš 5s delay. Če v tem času prideš do senzorja, te ne zazna, ker še ni poteklo 5s preden spet prične meritev.


Za začetek daj delay(pauza) ven iz if stavkov in bo ta pavza prisotna samo kadar se ti bodo prižgale LED, kar pomeni, da bo 5s svetilo. Lahko nastaviš čas na 30s in bo vse skupaj delovalo kot stopniščni avtomat.

_________________
lp, ElGrigon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5773
Aktiv.: 25.92
Kraj: Grosuplje

PrispevekObjavljeno: Pon Jan 11, 2016 10:30 pm    Naslov sporočila:   Odgovori s citatom

electo.vihar slike se pripenjajo na forum oz v sporočilo in ne na neke zunanje strežnike slik, kajti jutri jih ne bo več in seveda primerne velikosti, posebno v tem primeru, kjer slika niti ni pomembna za razumevanje zadeve.
Sliko sem ustrezno zmanjšal in jo prilepil v tvoj post.


Kar se pa kode tiče, senzorja delujeta stalno, toda Arduino jih enostavno ne prebere, ko se prižigajo in ugašajo LEDice.
Čas ugašanja trakov je 4 sekunde + 5 sekund pauze, čas prižiganja je 2.4 sekunde.
Na tak način definitivno ne moreš brati stalno UZ senzorja, kajti v tvoji kodi, ko je pauza, dela samo ta pauza (notranji časovniki v kontrolerju štejejo, dokler ni izpolnjen pogoj) in ničesar drugega.

Na kratko napiši, kako si si vse to zamislil, še lepše bi pa bilo, če bi imel diagram poteka.
In še nekaj, taka klobasa, ki si jo uspel napisat je nepregledna. Prižiganje led in ugašanje led sta lahko samostojni proceduri in vsaka je napisana samo enkrat, zunaj void loop(), tako kot je pri tebi pa sta napisani dvakrat in to v void loop().
Branje take kode je nadležno in odbijajoče, zato je tudi nisem bolj podrobno gledal.

Če se ne motim, je član foruma protonček naredil nekaj podobnega (ugašanje in prižiganje stopnic), mislim, da je vse skupaj napisano v Bascomu in če se ne motim je uporabil interupte. Za več se obrni na njega.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
electo.vihar
Neznanec
Neznanec



Pridružen-a: Ned 24 Nov 2013 19:36
Prispevkov: 2
Aktiv.: 0.02
Kraj: Ptuj

PrispevekObjavljeno: Pet Jan 15, 2016 6:59 pm    Naslov sporočila:   Odgovori s citatom

Sliko in še (.ino) datoteko sem hotel pripeti, ampak ker sem imel težave sem sliko vsavil drugače. Hvala za ureditev slike.

To naj bi delovalo tako, da ko sprožim spodnji senzor se lučke prižigajo navzgor ena za drugo po stopnicah, svetijo približno 5s potem se ugasnejo od spodaj navzgor ena za drugo. Ko pa me zazna zgornji senzor pa se ledice prižigajo od zgoraj navzdol ena za drugo, spet svetijo 5s in se tudi ugasnejo ena za drugo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
robert
Član
Član



Pridružen-a: Sob 29 Maj 2004 21:48
Prispevkov: 1871
Aktiv.: 8.40
Kraj: Tolmin

PrispevekObjavljeno: Pet Jan 15, 2016 7:15 pm    Naslov sporočila:   Odgovori s citatom

http://www.elektronik.si/phpBB2/viewtopic.php?t=23551&start=0 Wink
_________________
LP Robert
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 67 dni


Powered by phpBB © 2001, 2005 phpBB Group