Stopper optokapuval

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stopper optokapuval

Hozzászólás Szerző: Robert »

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....
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

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?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stopper optokapuval

Hozzászólás Szerző: Robert »

Csak figyelgeted a jelet - ha épp ott vagy rajta.
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();
    }
}
Azaz

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
 
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.
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stopper optokapuval

Hozzászólás Szerző: Robert »

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.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Stopper optokapuval

Hozzászólás Szerző: kapu48 »

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!
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Stopper optokapuval

Hozzászólás Szerző: kapu48 »

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
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

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

    }




  }
}

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stopper optokapuval

Hozzászólás Szerző: Robert »

Egy folyamatábra sokat segítene. NEKED is. :twisted: :evil: :roll: :cry: :oops:
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

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
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Stopper optokapuval

Hozzászólás Szerző: kapu48 »

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

}

fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

Valami nem stimmel. Az arduino indítása óta eltelt időt írja ki így.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Stopper optokapuval

Hozzászólás Szerző: Robert »

Indulási tranziensek?
fatzolaa
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2015. április 14. kedd, 13:20

Re: Stopper optokapuval

Hozzászólás Szerző: fatzolaa »

Elég kezdő vagyok, el tudnád nekem magyarázni mire szeretnél rávezetni?
Válasz küldése