60 nap alatt Arduino #20

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

60 nap alatt Arduino #20

HozzászólásSzerző: etwg » 2019. október 20. vasárnap, 17:10

Hadd kérdezzek akkor valamit, ha eddigi megszolalásaimat sokan kritikának vették.

A 20. leckében a for bekezdést képtelen vagyon müködésre birni. A program nem jelez semmi hibát, de nem is csinál semmit.

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

/*  Beep parameterekkel
    For megközelítés
    60 nap alatt arduino tanfolyam
    (c) TavIR http://www.tavir.hu  */
 
      //varakozas a jelvaltasnal
    unsigned int var=2000;
      //ennyi ideig szoljon
    unsigned long tartam=200000;
      //segedvaltozo
    unsigned long temp1long;
      //melyik labon a csipogo
    #define Speaker 10
 
void setup() {
      //hangszoro kimeneti labon
    pinMode(Speaker, OUTPUT);
  }
 
void loop() {
        //ennyi darab impulzust kell kiadni
    temp1long=tartam/(var*2);
       //0..temp1long-ig szamolj, egyesevel
    for (long i = 0; i == temp1long; i++) {
        //hangszoro alacsonyra
      digitalWrite(Speaker,LOW);
        //varakozas valtas kozt
      delayMicroseconds(var);
        //hangszoro magasra
      digitalWrite(Speaker,HIGH);
        //varakozas valtas kozt
      delayMicroseconds(var);
      temp1long = temp1long-1;
    }
      //10 sec szunet
    delay(10000);
      //utana kezdjuk ujra
}


Közben megcsináltam 10-12 más programot amiben szintén van for funkcio. Mind müködik, de itt nem látom a hibát. Már több paramétert is probálgattam, de nem megy.
Ami a legérdekesebb ez a kod nem fogadja el a

Serial.begin(9600);
Serial.println(i);

sorokat sem. ( szerettem volna látni, hogy egyáltalán megy-e a for funkcioban az i változo). Ez az elsö lecke a tanfolyamon, amit nem tudtam müködésre birni ( a lecke korábbi kodjai mind müködnek). A kodot ki is egészitettem LED-ekkel amiknek mutatniuk kellene ha valami változik a loopban, de azokon sincs semmi változás.

Kösz, ha van ötlet.
Éljenek a vonatok!

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

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

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: Verjoz » 2019. október 20. vasárnap, 20:22

Ehhez a megoldáshoz nem jó a for ciklus!
Feltétele sohasem teljesül, végrehajtása sosem ér véget.
Ez teljesrn patt helyzet ezen formában.
Ezt elágazásban is (if-eles) meg lehet oldani, mert a léptetést időzítésel kihelyetesithető meg még pontosabb is talán. A végrehajtási blokkból a break; el legalább kiugrani.

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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 20. vasárnap, 21:02

Na jo akkor felejtem, a feladatot már vagy 5 féleként megoldottam de ez a publikált megoldás kifogitt rajtam.
Kösz!
Éljenek a vonatok!

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

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10064
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #20

HozzászólásSzerző: Robert » 2019. október 21. hétfő, 7:00

De ott a végfeltétel:

i == temp1long


Otthon meglesem.
Eredetileg Arduino 1.0.5 alatt tesztelve, meglesem újabbal mit művel.
http://www.tavir.hu - a gazda :)

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 8:35

Semmi gond, a for funkciot más prigramokban kiprobáltam, mindenütt ment.

Én kettön is probáltam egy UNOn meg egy NANOn is. Egyiken sem csinált semmit ( hibát sem jelez).
Ami inkább zaklat, hogy miért nem lehet aktiválni a monitort ( a Serial.begin, println stb). Ezekre a sorokra mindig hibát jelez. (A korábbi programokban nem). Jo lenne az ilyen kodokhoz is valmilyen szimulator, ahol soronként lehetne léptetni a programot látva, hogy miben is akad meg.

Más a #20. Lecke untán a #22. jött.

Kösz!
Éljenek a vonatok!

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

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
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ő, 12:31

Verjoz, Mért is nem lép ki szerinte?
Hiszen minden érték megvan adva.
unsigned int var=2000; //ennyi ideig szoljon
unsigned long tartam=200000; //segedvaltozo

temp1long=tartam/(var*2);
temp1long= 200000/(2000*2)= 200000/4000)=50
Tehát mikor i++ eléri az 50-et kilép a forból.
Az egész program a 10-es pin állapotát billegteti, amire a csipogót kel kötni.
Led-del ez már nem alkalmas, mivel a szem 50Hz feletti jeleket már nem érzékeli.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
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ő, 12:49

Ez egy rövid kis csippanás lesz amit csak csipogóval lehet érzékelni, LEDel nem!

Esetleg ha a: unsigned int var=2000; //microsec
Értékét növeled millisecre, hogy a LEDen már villogást észleljél.

Vagy a delayMicroseconds(var); cseréled delay(var); -ra.

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 13:15

Még oszvcloszkoppal sem. Már sok paramétert változtattam, hogy hosszabb legyen, de semmi.
Éljenek a vonatok!

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

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 13:30

Beraktam egy indikatort a
delay (10000); hoz
Oda már nem jut el azaz benn marad a for hurokban.
Éljenek a vonatok!

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

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 13:45

Söt, pontositok, a for soron marad a következöt már nem lépi meg ( ezért nincs a szkopon sem jel). Sem a 10, sem a 9-s kimeneten (LED) nincs semmi.
Éljenek a vonatok!

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

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
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ő, 13:47

Akkor változtasd meg a forciklus feltételét:
for (long i = 0; i > temp1long; i++)

A gondot ez a sor okozhatja:
temp1long = temp1long-1;

Belül a ciklusban már nem szabad a kilépés feltételt változtatni!
Mivel azt meg teszi az i++

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 14:27

Igy már kattog de nem sipol. Kösz
Éljenek a vonatok!

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

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 14:40

Bocs elirtam, ( egy zárojelt kihagytam ezért kattogott, de semmi változás az eredeti változatban)
Továbbra is eljut a delay(10000)-ig de nem csinál semmit. Semmi jel a 10 kimeneten
Éljenek a vonatok!

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

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3349
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:45

Az eredeti 20. leckében ez van:

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


Ez nálam 0.2S-ig ad ki 246Hz-et.

Avatar
etwg
Pákabűvész
Hozzászólások: 213
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ő, 14:53

Az is, de az ujban a [for] használatára is van egy kod ( amit beraktam). És csak azzal van a gond.
Éljenek a vonatok!

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


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