Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Nextion HMI a legegyszerűbb megoldás. Arra viszont figyelj, hogy a 7" változat enyhén torzított képet ad, a pixelek nem négyzet alakú területet foglalnak el. Legalábbis az ilyen volt, amelyikkel találkoztam személyesen. Aztán ki tudja, lehet azóta javították de nem biztos.
Üdvözlet!
Szeretnék egy kis segítséget kérni, arduino programozas terén. Most próbálkozok elsajátitani az alapokat, de meg akadtam. Nem tudom hogy tudom megoldani a vezérlés átadását, mint Bascom-ban a gosub utasítás. Próbáltam már a void akármi() opciót a while; do-while opcióval, de nem tudom kiszürni hogy addig ne menjen vissza a void loop()-ba ameddig a feltétel nincs meg. Az átadás megy, de ahogy egyszer lefut vissza tér. Segítséget előre is köszönöm! "Guglit" meg ha lehet hadjuk ki, mert ott sokat kutakodtam eredménytelenül!
Egy függvény meghívásával nem fog megállni benne a program, hanem végrehajtja és megy tovább.
Ha azt akarod, hogy megálljon benne, valamit be kell iktatni, amire várni kell. Viszont ha megállítod a program futását pl késleltetéssel, akkor nem megy tovább. Esetleg még ciklust lehet bele tenni, amíg nem igaz a feltétel addig folyamatosan ellenőrzi, aztán ha igazzá válik mehet tovább. Másold be a programodat, a koponyák majd elmondják mit lehet, vagy javasolt tenni... A hozzászólás módosítva: Jún 3, 2022
Lehet, hogy rossz a programmenet. Az ilyen gosub ( nem is erem a Bascomot) dolgokat az arduinio nyelvben egyszerübb egy statmachine eljárással használni.
A loopban csak a kondiciokat kell folyton vizsgálni, és ha teljesülnek akkor ugrik a program a megfelelö void-ra. Igy akármennyi állapotot irhatsz, és mindegyikre egy alprogramot, ami az adott állapothoz elvégzi a kivánt feladatot, majd visszamegy a loopba.
Valóban ugrik a kért void-ra, de mondjuk én pl. if( akarmi ) x++ opcónál a feltétel teljesül, de visszaugrik a loop-ba és kezdi előről. Bascomba ha átugrik és ameddig nem határozom meg a return opciot, addig számol, annélkül, hogy a fő programba vissza térne. Vissza térés a return utasiás után. Na ezt hiányolom a programból eggyenlőre. De ha mondjuk egy goto utasítás lenne, az se lenne baj.
Na pont ezt kezelné másképp ha állapotokkal dolgoznál.
A loop csakis a feltételeket vizsgálja és irányitja a programot a megfelelö alprogramba, ami elvégzi a feladatot, a loop közben meg vizsgálja mi változott a változok közül.
Ha jól értem, te a while utasítást akarod használni. Pl. itt
void loop()
gomb_aa = digitalRead(gomb_a); if (gomb_aa == LOW) { lcd.setCursor(10,1); lcd.print(a_ho); delay(1000); lcd.clear(); gomb_aa = digitalRead(gomb_a); while(gomb_aa == HIGH) return; also(); /*********************************************************/ void also() { gomb_aa = digitalRead(gomb_a); while (gomb_aa == HIGH); { lcd.setCursor(0,1);lcd.print("Als");lcd.write(2); lcd.print(" h"); lcd.write(4);lcd.print(": "); lcd.setCursor(10,1); lcd.print(a_ho); a_ho++; if (a_ho > 10 ) {a_ho=0; lcd.setCursor(10,1); lcd.print(" ");} return;
Bővebben: Link
300. oldaltól vannak a vezérlés át adó utasítások leírása. De a többi részletek is hasznos olvasni valók.
Nem figyelsz elégé a zárójelezésre "kezdet>{utasítások tömbje}>vége" zárójelezésekre, párban kel szerepelni ük!
Ebben a formában értelmezhetetlen a programod.
Láthatod, hogy hól hiányoztak a } jelek! A hozzászólás módosítva: Jún 3, 2022
Közben még találtam hibát a 13. sortól:
Sziasztok! Lenne egy olyan kérdésem, hogy arduino mega boardon az I\O-k közül melyik alkalmas belső felhúzó ellenállásos bemenetként működni? Keresgéltem pintérképeket és pár leírást de nem találtam egyértelmű listázást. Előre is köszi!
Elvben mindegyik.
Köszönöm szépen mindkettőtöknek!
Köszönöm a segítséget, de az alap próblémám még mindig áll!
kapu48 ha te vagy a Tavir Oldalon is, akkor tudod hogy miről beszélek. Ha jól emlékszem te ismered a Bascom-ot is. Az ottani gosub utasítás megfelelőjét keresem az arduino programozásában. Hogy addig ne térjen vissza a főprogramba, ameddig nem kapja meg a megfelelő feltételeket.
Kérlek, írd le ide BASCOM nyelven, amit szeretnél.
C/C++ esetén nincs GOSUB.
A függvényhívás viszont nagyon hasonló ahhoz, ami a BASCOM CALL utasítása.
Be linkeltem csak olvasni kellet volna.
Van ez a két utasítás:
// pálda
A hozzászólás módosítva: Jún 4, 2022
Ez csak egy példa volt, de mindenki máskép csinálhatja.
És sok minden függhet az aktuális feladattól is.
Köszi akkor leírom bascom-ba:
main: do if gomb1 = 1 then gosub also loop also: do locate 1,1 lcd "felso); a_ho incr a_ho if gomb=0 then return loop
void also(void);
void main(void) //main: do { if (gomb1 == 1) // then { also(); //gosub also } }while(1); //loop }; void also(void) //also: { do { ??? locate 1,1 ???? lcd "felso); a_ho ??? incr a_ho if (gomb==0) { break; //then return } }while(1); //loop }; kb A hozzászólás módosítva: Jún 4, 2022
Mit nem értesz? Csinálsz egy infinite loop-ot, a gosub pedig függvényhívás. De ha vizet akarsz gereblyézni implementálhatod.
Bővebben: Link
Szerintem nem kell szubrutin hívás.
De ha nagyon szeretnéd.
Idézet: „
Ezzel csak az a gond, hogy csak addig fut amig nyomja a gombot! A hozzászólás módosítva: Jún 5, 2022
Köszönöm! Lenne még egy kérdésem! Hogyan tudom a mért értékben a (ds1820) csak egy tizedesig kiíratni az eredményt? Alapból 2 tizedesig mutat.
|
Bejelentkezés
Hirdetés |