Prof Creative Commons License 2023.10.22 0 0 4354

Szia,

Jó a megközelítés. Első menetben külön-külön próbáld ki két kóddal az érzékelőket. Ha mindkettő úgy fut, ahogy futnia kell, akkor:

  1. praktikusan a hosszabb / nagyobb / bonyolultabb kódot mentsd el egy újabb projektként.
  2. a másik érzékelő működő kódját másold be a létrehozott újabb projekt végére, egyértelműen jelezve, hogy hol van a kettő határa.
  3. A két kódrészlet összehasonlításával szedd ki a bemásolt második szakaszból azt, ami az első szakaszban egyébként már benne van. Ilyenek pl. az #include direktívák, de ebből viszonylag kevés lesz.
  4. Szakaszonként (lásd alább) fűzd össze a két kódot úgy, hogy a bemásolt részt a felső kvázi "eredeti" rész megfelelő helyeire másolod be.

Ehhez az alábbi irányelvek fontosak:

  • Sorrendiség: #include-ok, utána #define-ok, utána a változó deklarációk (int, const int, float, unsigned long, stb.) ezek mind a void setup() szakasz fölé kerüljenek. Ezeken belül a sorrend mindegy.
  • ezek után jön a void setup() szakasz, amibe a bemásolt (alsó) void setup() elemeit kell átrakosgatni. A sorrend itt már nem teljesen mindegy: pinMode-ok előre, utána az összes többi.
  • Itt is, és a void loop()-ban is nagyon fontos, hogy a legkülső kapcsos zárójeleken belüli kapcsos zárójeleket csak egyben szabad mozgatni, rendszerint a nyitó kapcsos zárójelet megelőző paranccsal együtt. Ebben az IDE is segít, ha megfelelő a formázás, akkor nagyjából az a szabály érvényesület, hogy ami beljebbezve van, azt az előző kóddal együtt kell mozgatni. Példa:

    Itt a while (true) utáni { és } közötti szakaszt együtt kell mozgatni.
  • A void setup()-ot és a void loop()-ot szintaktikailag és logikailag ugyanazokkal a szabályokkal kell felépíteni, a kettő között az a különbség, hogy a setup csak egyszer fut le, a loop pedig folyamatosan megy körbe-körbe. Mindkettőre igaz, hogy a végrehajtás sorrendje a kódsorok sorrendjével egyezik (kivételek persze vannak, de nem jellemzőek). Ennek megfelelően nem lehet össze-vissza egymás után rakosgatni az egyes kódsorokat és/vagy a két működtető kódot, mert elképzelhető, hogy a két kódban vannak teljesen azonos funkciót ellátó részek (pl. Serial.println()), illetve előfordulhat az is, hogy a két érzékelőt más logikával/parancsokkal kell kiolvasni és más módszerrel kell a kiolvasott adatokat feldolgozni. Más megközelítéssel nagyon nem mindegy a sorrend. Szóval ezen a ponton (a void setup() és a void loop() szintjén) már elengedhetetlen, hogy legalább nagyjából tudd, hogy mi az, amit a kód csinál, mire valók az utasítások és azokat milyen szintaktikával kell használni. Ebben nagy segítsége az Arduino honlap referencia szakasza: https://www.arduino.cc/reference/en/ 

Alapvetően nem lehetetlen megcsinálni azt, amit szeretnél. Ha az angol megy és nem vagy 100%-ig tehetségtelen, akkor a mai és a holnapi nap (ha picit segítünk) elég lehet arra, hogy az egészet végigcsináld. Arra készülj, hogy szinte biztosan nem fog elsőre lefordulni a kód, és nagyjából kizárt, hogy az első sikeres fordítás után a kód úgy működjön, ahogy azt szeretnéd. Ez tök természetes, a lényeg, hogy ne add fel! Én a mai napot a helyedben a két alap kód megértésére szánnám, holnap délelőtt az összefűzés és első tesztelés, délután pedig a már működő kód finomhangolása lehet.

Nagyjából leszek ma, ha van kérdésed, nyugodtan írd meg!

Előzmény: garab (4353)