60 nap alatt Arduino #20

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 14:58

Ez 10 szer megismétli, és már van benne for ciklus:

Kód: Egész kijelölése

 //impulzusok kozti ido a jelvaltasnal
    unsigned int var=2000;
      //mennyi ideig szoljon (usec)
    unsigned long tartam=200000;
      //segedvaltozo
    unsigned long temp1long;
      //melyik labon a csipogo
    #define Speaker 10
 
 
void setup() {
      //hangszoro kimeneti labon
    pinMode(Speaker, OUTPUT);
      //ennyi darab impulzust kell kiadni
    temp1long=tartam/(var*2);
  }
 
void loop() {
  temp1long=tartam/(var*2);
  for( unsigned int i=0; i < 10; i++)
  {
  temp1long=temp1long-1;
  if (temp1long==0) {
      //10 sec szunet
    delay(10000);
      //utana kezdjuk ujra
    temp1long=tartam/(var*2);
  }
    //hangszoro alacsonyra
  digitalWrite(Speaker,LOW);
    //varakozas valtas kozt
  delayMicroseconds(var);
    //hangszoro magasra
  digitalWrite(Speaker,HIGH);
    //varakozas valtas kozt
  delayMicroseconds(var);
  }
}

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 15:12

Vagy tegyünk a ciklus végére kevés várakozást, hogy halljuk (lássuk) mikor van vége a loop-onbelül:

Kód: Egész kijelölése

//impulzusok kozti ido a jelvaltasnal
    unsigned int var=2000;
      //mennyi ideig szoljon (usec)
    unsigned long tartam=200000;
      //segedvaltozo
    unsigned long temp1long;
      //melyik labon a csipogo
    #define Speaker 10
 
 
void setup() {
      //hangszoro kimeneti labon
    pinMode(Speaker, OUTPUT);
      //ennyi darab impulzust kell kiadni
    temp1long=tartam/(var*2);
  }
 
void loop() {
  temp1long=tartam/(var*2);
  for( unsigned int i=0; i < 10; i++)
  {
  temp1long=temp1long-1;
  if (temp1long==0) {
      //10 sec szunet
    delay(10000);
      //utana kezdjuk ujra
    temp1long=tartam/(var*2);
  }
    //hangszoro alacsonyra
  digitalWrite(Speaker,LOW);
    //varakozas valtas kozt
  delayMicroseconds(var);
    //hangszoro magasra
  digitalWrite(Speaker,HIGH);
    //varakozas valtas kozt
  delayMicroseconds(var);
  }
  delay(100);
}


Ezek már müködnek nálad?

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 15:20

Igy természetesen megy.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 15:29

Az utolso verzio is megy, gyorsabban szaggat mit a korábbi. Szerintem az eredeti [for] függvénnyel van valamilyen gond. Az ilyen meg hasonlo for funkciok mind müködtek, (még a bonyolultabbak is, csak az az egy nem.
Kösz
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 16:02

Most egy kicsit eljátszottam az utolso programverzioval (kapu48:16:12)

Ez pontosan egy olyan program, amit mindig igyekeztem kerülni, az egyes paraméterek sok minden jellemzöre kihatnak. Pl. a [var] változo nemcsak a hang magasságát változtatja, hanem ez ismétlési periodusokat is. Azaz ha magasabb a hang ( kisebb a [var] értéke akkor az ismétlödési frenkvencia is gyorsabb.
Ha a [for] funkcioban az i<10 értékét változtatom, akkor bizonyos állásnál konfliktusba [i<100] kerül valamelyik másik függvénnyel vagy funkcioval.
Az if (temp1long==0){ utáni delay-t ha ki is hagyom nem történik semmi, mintha az egész IF funkcionak semmi feladata nem lenne, ha kihagyom az egészet semmi nem változik.

Azaz ezt a progit nagyon át kellene dolgozni. Én mindig ugy igyekeztem a programokat irni, hogy pl meghatározom a hang magasságát (fixen egy jellemzövel). Egy másikkal az ismétlödési periodust meg a ki-, bekapcsolási idöket, s ha kell egy következö paraméterrel meg azt, hogy hány jel menjen ki. Pl ugyanennek a leckének az autimata SOS szakasz sokkal jobb ebböl a szempontbol. A program elején fel kellene vázolni mit is akarunk: pl. Kb 500 Hz-es beepjeleket. 1 sec bekapcsolva dupla annyi idöre kikapcsolva, és mindezt 10-szer ismételve.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 16:06

Igazad van! Itt az if-nek semmi hatása nincsen!

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 16:19

Akkor itt van frekvencia emeléssel kb.: 1.5KHz-ig

Kód: Egész kijelölése

//impulzusok kozti ido a jelvaltasnal
    unsigned int var=2000;
      //mennyi ideig szoljon (usec)
    unsigned long tartam=200000;
      //segedvaltozo
    unsigned long temp1long;
      //melyik labon a csipogo
    #define Speaker 10
 
 
void setup() {
      //hangszoro kimeneti labon
    pinMode(Speaker, OUTPUT);
      //ennyi darab impulzust kell kiadni
   // temp1long=tartam/(var*2);
  }
 
void loop() {
  for( unsigned int j=0; j < 100; j++)
  {
    for( unsigned int i=0; i < 1000; i++)
    {
      //hangszoro alacsonyra
      digitalWrite(Speaker,LOW);
      //varakozas valtas kozt
      delayMicroseconds(var);
      //hangszoro magasra
      digitalWrite(Speaker,HIGH);
      //varakozas valtas kozt
      delayMicroseconds(var);
    }

    var -= 100;
    if(var < 100) var = 4000;
  }
}


De még a frekvencia számolásig el sem jutottatok a leckékben!
Én is csak a Logic analizeren látom az értékeket.

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 16:28

Igy van, ahhoz sem jutottunk el a leckékben.. :-)
iIyen változo frekivel már irtam egy progit (Kojak sziréna a futofényhez).
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 17:05

Ha Te írtad, nyugodtan közzé teheted.

(Had boncoljuk szét.
És utána írjuk, hogy ezt már máshol jobban megoldották. :twisted:
Csak, hogy érezd milyen mikor fikázzák a munkádat!) :mrgreen:

És talán még tanulnál ís másoktól!

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 18:04

Elnézést én csak egy csoro kezdö vagyok itt az Arduino C nyelvezetében - ne tölem várjátok a remek programokat.
Ha majd vége lesz meglátom, mire jutottam. Egy kicsit más az érdeklödési köröm, igy azokkal foglalkozom, (motorvezérlések, folyamat vezérlések ( statemachines)) igy az itteni tanfolyam mellett azokat tanulgatom, mert arra van szükségem, és örülök, hogy azok müködnek.
Azonban eddig valamennyi leckét végigcsináltam söt a PC-vel is megoldottam a kommunikáciot és a displayre is sikerült azt kiirnom, amit akartam és oda ahova akartam - az lesz az egyik motorvezérlés kezelöpanelje.
( az igaz, hogy ezeket én már mind végigcsináltam az ASMben - pl ezen a panelen minden LEDhez egy motorállás tartozik és csak két vezeték megy a LEDekhez).

IMG_3145.JPG
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3321
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: kapu48 » 2019. október 21. hétfő, 18:36

Ezt már megcsinálták RGB LED-ekkel.
https://malnapc.hu/a1138-neopixel-rgb-l ... -60-led-1m

Avatar
etwg
Pákabűvész
Hozzászólások: 212
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 21. hétfő, 18:50

Csak az én megoldásomnak semmi köze az intelligens LEDekhez, mezei LEDek vannak a panelon, a hátulján meg egy speci meghajto (MM5451 ha érdekel) . És minden kod a sajátom.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
Verjoz
SzínkódFestő
Hozzászólások: 96
Csatlakozott: 2018. március 13. kedd, 7:18

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: Verjoz » 2019. október 22. kedd, 0:31

Bocsánat a félrevezető információért, ezt sajna nagyon benéztem!
Sajnálom!


Vissza: “60 nap alatt Arduino - Házi feladatok”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég