Stopper optokapuval
Re: Stopper optokapuval
Bocsánat, a kép nem látszott:http://kepfeltoltes.hu/151030/infrasoro ... es.hu_.jpg
Re: Stopper optokapuval
INT - Interrupt / megszakítás
A kapcsolás alkalmatlan a feladatra. A TSOP vevők nagyon érzékenyek. TV távirányító jelét mandínerből 2 falon pattanva is veszik....
A kapcsolás alkalmatlan a feladatra. A TSOP vevők nagyon érzékenyek. TV távirányító jelét mandínerből 2 falon pattanva is veszik....
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: Stopper optokapuval
A kapcsolással nincs probléma, kipróbáltam megfelelően érzékeli az elhaladást. A programmal van valami baj. Ahhoz van valami ötletetek a megvalósításra. Opto1 jel óra indít, Opto 2 jel óra leáll és sorosan kiírja. Valamelyik előző hozzászólásomban leírtam a programot amivel próbálkoztam, meg tudnátok mondani mi benne a hiba?
Re: Stopper optokapuval
Csak figyelgeted a jelet - ha épp ott vagy rajta.
Az INT generál azonnali értéket.
Azaz
Azaz a végeérzékelés csak a magasérzékeléssel együtt megy!
Javaslat:
Rajzolj egy folyamatábrát.
NE programozz!
Majd ha a folyamatábra kész (azaz a részlépések végig vannak gondolva) -> akkor szabad programozni.
Az INT generál azonnali értéket.
Kód: Egész kijelölése
if (digitalRead(start) == HIGH)
{
starttime = millis();
if (digitalRead(stopp) == HIGH)
{
endtime = millis();
}
}
Kód: Egész kijelölése
Ha a startod magas, akkor
starttime elment
ha a érkezésed magas, akkor 1-> Értsd: ha a startod magas _és_ az érkezésed is magas
vége ment
Javaslat:
Rajzolj egy folyamatábrát.
NE programozz!
Majd ha a folyamatábra kész (azaz a részlépések végig vannak gondolva) -> akkor szabad programozni.
Re: Stopper optokapuval
Most már majdnem megy, csak akkor csinál valamit, ha a második jel is megérkezett. Mi lehet a hiba? Csak számokat ír ki folyamatosan értelmetlenül.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Re: Stopper optokapuval
Folyamatábrát rajzolj. Abból megérted.
Előző hozzászólás, 2. mintakód.
Valamint a TSOP-k keresztérzékenysége.
Előző hozzászólás, 2. mintakód.
Valamint a TSOP-k keresztérzékenysége.
Re: Stopper optokapuval
Van 1 kis gubanc a programodban!
Mivel a endTimet méred később, tehát ez a nagyobbik érték!
A mérésednek úgy lenne értelme, ha a nagyobb idő értékből vonnád ki a kisebbet!
Mivel a endTimet méred később, tehát ez a nagyobbik érték!
A mérésednek úgy lenne értelme, ha a nagyobb idő értékből vonnád ki a kisebbet!
Re: Stopper optokapuval
A másik hiba, hogy nem várja meg a programod a bemenetek változását!
Ezt az utasítást kellene megtanulnod, használni:
https://www.arduino.cc/en/Reference/While
Ezt az utasítást kellene megtanulnod, használni:
https://www.arduino.cc/en/Reference/While
Re: Stopper optokapuval
Hát, próbálkoztam, de még mindig nem azt csinálja amit kéne.
Kód: Egész kijelölése
int start = 10;
int stopp = 11;
void setup() {
pinMode(start, INPUT);
pinMode(stopp, INPUT);
Serial.begin(9600);
Serial.println("Ready to run");
}
void loop()
{
int time;
int starttime;
int endtime;
while (digitalRead(start) == LOW)
{
if (digitalRead(start) == LOW)
{
starttime = millis();
while (digitalRead(stopp) == LOW)
{
if (digitalRead(stopp) == HIGH)
{
endtime = millis();
time = endtime - starttime;
}
}
Serial.print("Ido:");
Serial.println(time);
}
}
}
Re: Stopper optokapuval
Egy folyamatábra sokat segítene. NEKED is.
Re: Stopper optokapuval
Készítettem egy folyamatábrát. Mi a véleményetek róla?
Kód: Egész kijelölése
RESET(újraindításhoz)--------------->------millis()belső számláló számol
l
l
l
első kapu -------------------->-----------------starttime=millis() azaz elmenti a jelenlegi időt
várakozás a második kapun való áthaladásig
l
l
l
második kapu ---------------->-----------------------endtime=millis() azaz újra elmenti a jelenlegi időt
l
l
l
endtime - starttime = time
l
l
l
time kiírása serialra
Re: Stopper optokapuval
Meg nyirbáltam neked:
Kód: Egész kijelölése
int start = 10;
int stopp = 11;
void setup() {
pinMode(start, INPUT);
pinMode(stopp, INPUT);
Serial.begin(9600);
Serial.println("Ready to run");
}
void loop()
{
int time;
int starttime;
int endtime;
//while hurok ismétlödik folyamatosan, és végtelenül,
//amíg a kifejezés a zárójelekben () hamissá válnak.
while (digitalRead(start) == HIGH) {}
starttime = millis();
while (digitalRead(stopp) == HIGH) {}
endtime = millis();
time = endtime - starttime;
Serial.print("Ido:");
Serial.println(time);
}
Re: Stopper optokapuval
Valami nem stimmel. Az arduino indítása óta eltelt időt írja ki így.
Re: Stopper optokapuval
Indulási tranziensek?
Re: Stopper optokapuval
Elég kezdő vagyok, el tudnád nekem magyarázni mire szeretnél rávezetni?