Analóg bemenetek digitális használata lehetséges?

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Sziasztok!
Arduino Uno R3 panelen fejlesztek. Elfogytak a digitális ki-bemeneteim. A BASCOM leírásban olvastam valahol, hogy lehetséges (esetleg) digitális bemenetnek beállítani az analog bemeneteket! Tudna valaki ebben segíteni? Természetesen tudom, hogy feszültségméréssel is működhet a dolog, de nem elegáns!
Köszönettel!
Bagi Zoltán
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: Robert »

A lábak címzése:
A0...A5

pinMode(A0,Input);
És ugyanúgy kezeled tovább, mint digit be/kimenetet.
Vagy hivatkozhatsz rá még: A0=D14; .....A5=D19
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Szia!
..ahh! Tehát simán lehetnek ezek a lábak is digitális ki és bemenetek? Annyira el vannak különítve a panelen, hogy azt hittem, ezek speciálisan csak analóg bemenetként használhatóak. Hát ez szuper! köszönöm!
ha a pinMode(A0,Input) egy digitális bemenetnek programozza, akkor hogyan lehet analóg bemenetre visszaállítani? Keresgettem az arduino.cc-én de erre nem találtam hivatkozást. Az derült ki számomra, hogy ha nem definiálom a bemenetet, akkor alapból analóg bemenet. Itt a mintapélda:

int analogPin = 3; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
void setup()
{
Serial.begin(9600); // setup serial
}
void loop()
{
val = analogRead(analogPin); // read the input pin
Serial.println(val); // debug value
}


Szóval azt írják óvatosan (várakozásokat közbeiktatva) szabad váltogatni futás közben akár kimenetről analóg bemenetre is, de arról nem írnak hogyan!


Bagi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: Robert »

Bekapcsoáskor minden láb a funkcionális megfelelőjeként működik.
A digit ki/be azért kapcsolandó óvatosan, mert logikai L szintet logikai H-val könnyen összenyithatsz ...
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Szia!
Sajnos nem működik, valamit elszúrok! A következő módon inicializáltam a programban:
pinMode(14,INPUT);
pinMode(15,INPUT);
pinMode(16,INPUT);
pinMode(17,INPUT);
pinMode(18,INPUT);
pinMode(19,INPUT);
Sajnos csak két bemenet működik bemenetként, a többire a program nem reagál!
Mi lehet a baj?
Bagi
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: Robert »

Teljes programkód lehetne? Kiírsz vele? LEDet kezelsz?
Mi van a bemeneten?
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Szia!
Maga a kód elég bonyolult, de csatoltam. A be és ki nevű tömbökben tárolom a kimenetek számát, és később a tömbök egyes index értékei szerinti tartalom alapján olvasom a bemeneteket, illetve előtte még a setup részben beállítom a bemeneteket és a kimeneteket!
Ebben a kódban a kimenet számával tudok hivatkozni! Egyébként a kód már csaknem teljesen működőképes, de a 0 és 1 indexű kapcsolók valamiért nem működnek egy ideje. Most pont azon dolgozok, hogy megfejtsem mi romlott el. Azt hiszem a sorosport használatakor kezdődött a probléma, pedig a D0,D1 (RX,TX) kivezetéseket már nem is használom. Nem értem mi történt!
Köszi!
Bagi
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: kapu48 »

52. sorban:

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

//if (digitalRead(13)==LOW) {
if (LOW) {  <<<<<<<<<<<<<<<<<<<<<<<<< De Mi a LOW?
...
102. sor
 if (sw_on[i]==0 and digitalRead(be[i])==LOW and sw_prell[i]==0){sw_prell[i]=1;sw_time[i]=millis();}  <<<<<< rossz
 if (sw_on[i]==0 && digitalRead(be[i])==LOW && sw_prell[i]==0){sw_prell[i]=1;sw_time[i]=millis();} <<<<<<< jó
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: kapu48 »

Átkozottul nehéz olvasni a programodat!
Ezt ilyen formában nem fogja végig silabizálni senki!
:?
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Szia!
Az "if(LOW)" azért van, mert fejlesztés közben ezzel szimulálom egy bemenet állapotát, ami nincs még bekötve. Itt éppen azt értem el, hogy az else ág legyen végrehajtva.
A kód valóban rendkívül bonyolult, lehet, hogy azért is mert nem igazán jó a formázás, de leginkább azért mert nem használhattam a delay-t, hiszen 6 kapcsoló állapotát kell folyamatosan felügyelni. Prellmentesítés, dupla kattintás, ledeken fényerő szabályozás stb. is a feladat része. Tulajdonképpen egy multitaszk programot írtam. Ez nem tud egyszerű lenni.
Magam is rájöttem, hogy ebben a kódban nem fog menni a hibakeresés, ezért csináltam külön kis tanuló programot, és abban keresem a megoldást!

Bagi
bagizoltan
Bitmanipulátor
Hozzászólások: 128
Csatlakozott: 2015. december 8. kedd, 19:52

Re: Analóg bemenetek digitális használata lehetséges?

Hozzászólás Szerző: bagizoltan »

Sziasztok!
Csak szeretnék visszajelezni, hogy működik. Nem tudom, hogy elsőre miért nem ment. Akár kivezetésszámmal, akár "A0.." módon is lehet hivatkozni a bemenetre. Valamit elbénáztam!
Bagi
Válasz küldése