Halihó!
Elakadtam a következővel:
WeMos D1 Mini Pro-n a digitális kimeneteket 1-8-ig sorban fel, majd sorban le szeretném kapcsolni.
Ismerve a lábkiosztást a D1, D2...D8 kimenetek sorszámát "össze-vissza" rendelték a digitális kimenetekhez, sorrendben: 5,4,0,2,14,12,13 és 15, ezért For ciklust szervezve sorban a D... kimenetekre szerettem volna hivatkozni, amit String-ekkel oldottam meg. A fordító viszont hibával leállt, mert a pinMode() ill. digitalWrite() utasítások argumentumaként nem fogad el string-et, csak int vagy uint8_t formátumot. Van arra mód, hogy pl. i string típusú változót, ami "D4" értékű, olyan formátumba konvertáljuk, hogy a fordító elfogadja a pinMode(i, OUTPUT) utasítást (vagyis D4-et kimenetre állítsa)?
Előre is köszönöm az ötleteket....
Digitális kimenet megszólítása
Re: Digitális kimenet megszólítása
...Hát, úgy látom , nem sok ötlet érkezett...
Időközben tovább kellett lépnem, így kitaláltam egy nem túl elegáns, de annál hatékonyabb módszert:
D int tömbben letároltam a a digitális kimenetek sorszámait (5,4,0,2,14,12,13 és 15), majd a hőn vágyott ciklussal hivatkoztam D[1]-től D[8]-ig.
De azért továbbra is érdekelne, hogy van-e megoldás az eredeti konverziós felvetésre, vagyis hogy a pinMode() ill. digitalWrite() utasításokban hogyan tudnék D1-től D8 digitális lábra hivatkozni sorban For ciklus segítségével úgy, hogy Dx-et stringként állítom elő, és valahogyan elfogadtatom az utasítás argumentumaként...
Időközben tovább kellett lépnem, így kitaláltam egy nem túl elegáns, de annál hatékonyabb módszert:
D int tömbben letároltam a a digitális kimenetek sorszámait (5,4,0,2,14,12,13 és 15), majd a hőn vágyott ciklussal hivatkoztam D[1]-től D[8]-ig.
De azért továbbra is érdekelne, hogy van-e megoldás az eredeti konverziós felvetésre, vagyis hogy a pinMode() ill. digitalWrite() utasításokban hogyan tudnék D1-től D8 digitális lábra hivatkozni sorban For ciklus segítségével úgy, hogy Dx-et stringként állítom elő, és valahogyan elfogadtatom az utasítás argumentumaként...
Re: Digitális kimenet megszólítása
De miért String?
Re: Digitális kimenet megszólítása
Mivel WeMos D1 Mini-nél az Arduino lábszámozás nem egyezik a digitális kimenetek számozásával (ld. az eredeti felvetést), ezért vagy a pinMode(5,OUTPUT) vagy a pinMode(D1, OUTPUT) formát kell használnom. Ha egy for ciklusban D1..D8-ig akarok futtatni egy változót, ami a pinMode() argumentuma lesz, akkor én úgy tudtam csak megoldani, hogy D karaktert és i=1..8 egészet tudom összehozni úgy, hogy i-t karakterré konvertálom, és összefűzöm D-vel. A probléma pont ez, hogy az összefűzött sztringet nem fogadja el a fordító argumentumként, én viszont nem látok más formátumra megoldást. Lehet, hogy fogalmi hiányosságaim vannak, ezért kellene egy kis segítség...
Re: Digitális kimenet megszólítása
A pinMode az egy egész számot vár paraméterként. a D1 az egy #define valahol a WeMos core-ban, az értéke pedig 5, ami egy szám. Készíts egy táblázatot, amit eltárolsz egy tömbben, és használd azt.
Re: Digitális kimenet megszólítása
Köszönöm a gyors választ és a javaslatot
Egyébként pont ezt tettem (ld. a második bejegyzést)...
Csak arra gondoltam, hogy hátha van valami konverziós megoldás, amivel el lehet fogadtatni a D1 stringet, de rájöttem, hogy eleve butaság a felvetés, mert egy többkarakteres stringet nem lehet értelmesen egésszé konvertálni annak ellenére, hogy a neten felleltem mindenféle angol nyelvű bejegyzést a megoldásról (ami persze nem működik)
Egyébként pont ezt tettem (ld. a második bejegyzést)...
Csak arra gondoltam, hogy hátha van valami konverziós megoldás, amivel el lehet fogadtatni a D1 stringet, de rájöttem, hogy eleve butaság a felvetés, mert egy többkarakteres stringet nem lehet értelmesen egésszé konvertálni annak ellenére, hogy a neten felleltem mindenféle angol nyelvű bejegyzést a megoldásról (ami persze nem működik)