Ovdje pročitajte kako se registrirati na forum.

Kako korstiti pinMode u specifičnoj situaciji

Zapeli ste s projektom? Ovdje je pravo mjesto za postaviti pitanje. Imajte na umu da ekipa e-radionice neće uvijek i/ili redovno odgovarati na pitanja postavljena u ovom podforumu.
Odgovorite
domagoj#5453
Ozbiljni hardveraš
Ozbiljni hardveraš
Postovi: 76
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Kako korstiti pinMode u specifičnoj situaciji

Post Postao/la domagoj#5453 » pet ruj 13, 2019 7:27 pm

Pozdrav ekipo!
Pitanje je vezano uz pinMode naredbu, odnosno treba li biti npr. pinMode(0,OUTPUT) ili pinMode(0,INPUT)
prilikom namjere da se invertira trenutno stanje pina 0 ovakvom naredbom:
digitalWrite(0,!digitalRead(0));
Dakle, na pin 0 i pišemo i čitamo, pa me zanima koja je ispravna definicja obzirom na pinMode.
Za ovakav slučaj, u svojim programima sam izbjegao pinMode i sve radi super, ali me zanima je li to korektno. Istina, ništa nisam skurio, ali ne bi trebao imati takav pristup problemu.
Pozdrav, Domagoj
Avatar
david.zovko#3956
e-radionica.com team
e-radionica.com team
Postovi: 239
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Osijek, Croatia
Kontakt:

Re: Kako korstiti pinMode u specifičnoj situaciji

Post Postao/la david.zovko#3956 » uto ruj 17, 2019 8:26 am

Hej Domagoj

ako radi i ako nije neka specijalna namjena (npr. napajanje s baterije), to je sve u redu. Ako nemaš nigdje pinMode, pinovi su ti po defaultu inputi. Inače, "usred" koda možeš raditi pinMode također, pa bi nekako logično bilo:

Kod: Označite sve

pinMode(pin, INPUT);
int stanjePina = digitalRead(pin);
pinMode(pin, OUTPUT);
digitalWrite(pin, stanjePina);
Nisam vidio ovakav primjer do sada. Možeš li nam reći što točno radiš s tim pinom pa želiš postaviti njegov izlaz na njegov ulaz?
domagoj#5453
Ozbiljni hardveraš
Ozbiljni hardveraš
Postovi: 76
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Re: Kako korstiti pinMode u specifičnoj situaciji

Post Postao/la domagoj#5453 » uto ruj 17, 2019 9:06 am

David, bok!
Pa nemam neku konkretnu namjeru, igrao sam se ledicom na Dambi da žmiga svake sekunde, a mjesta gdje bi se to moglo koristiti je puno. Npr. prema nekim kriterijima provjeravam sanje digitalnog izlaza i recimo da želim da mu promijenim stanje u odnosu na trenutno. Naravno, mogao bi imati neku varijablu koja prati zadnje stanje i onda provjeravati nju, pa bi tako samo imao digitalWrite. Ali znaš kako je, ovakva varijanta me baš zainteresirala, pa sam zato zapeo za nju.
Vidiš, nisam znao da pinMode možeš pozvati bilo kada, već samo u setupu. U tom slučaju kod koji si priložio je korektnije rješenje. Na tu ideju sam zapravo došao još prije kada sam se igrao s temp. senzorom. On po istoj žici i čita i piše, tako da je očito da se to može unutar programa, a ne samo da se u setupu definira je li pin za čitanje ili pisanje. I nisam znao da su izlazi po defaultu input. Eto, dobro je pitati. :D
Avatar
david.zovko#3956
e-radionica.com team
e-radionica.com team
Postovi: 239
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Osijek, Croatia
Kontakt:

Re: Kako korstiti pinMode u specifičnoj situaciji

Post Postao/la david.zovko#3956 » sri ruj 18, 2019 11:22 am

To si dobro rekao. Ne vidim prepreku u korištenju na ovaj način sve dok komponenta spojena na taj pin ne utječe na stanje pina, a to LEDica neće raditi.

Za komunikacije, ovdje je jedna slika kako može pisati i čitati sa iste žice: http://www.mosaic-industries.com/embedd ... 2c-bus.png
Dakle, za izlaz (pisanje) ima open-drain tranzistore, a za čitanje ima buffer koji je signal provoditi samo u jednom smjeru, prema mikrokontroleru.
Odgovorite