Digitális kimenet megszólítása

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Zotya
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2018. január 20. szombat, 9:59

Digitális kimenet megszólítása

HozzászólásSzerző: Zotya » 2018. október 27. szombat, 20:44

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....

Zotya
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2018. január 20. szombat, 9:59

Re: Digitális kimenet megszólítása

HozzászólásSzerző: Zotya » 2018. október 29. hétfő, 17:08

...Hát, úgy látom , nem sok ötlet érkezett... :lol:
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...

vargham
Pákabűvész
Hozzászólások: 243
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Digitális kimenet megszólítása

HozzászólásSzerző: vargham » 2018. október 29. hétfő, 18:00

De miért String?

Zotya
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2018. január 20. szombat, 9:59

Re: Digitális kimenet megszólítása

HozzászólásSzerző: Zotya » 2018. november 1. csütörtök, 13:53

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...

vargham
Pákabűvész
Hozzászólások: 243
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Digitális kimenet megszólítása

HozzászólásSzerző: vargham » 2018. november 1. csütörtök, 17:06

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.

Zotya
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2018. január 20. szombat, 9:59

Re: Digitális kimenet megszólítása

HozzászólásSzerző: Zotya » 2018. november 2. péntek, 17:09

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) :D


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

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