Controllo Pin senza hardware

Salve, mi servirebbe sapere se c’è un modo per controllare se un pin di arduino è acceso o spento, senza 'utilizzo di pulsanti o qualsiasi altro tipo di hardware, solo software. Spero di essermi spiegato bene.

Hm no, non si capisce cosa intendi con “controllare se un pin è acceso o spento” (un pin non è “acceso”, semmai puoi determinare se è nello stato logico HIGH ossia +5V o LOW ossia GND), e con “senza utilizzo di pulsanti” (lo stato di un pin si legge ovviamente via software, perché parli di pulsanti?).
Spiega meglio

Ok, faccio un esempio: dopo aver dichiarato come output il PIN 2, decido di portarlo a livello alto con digitalWrite (2,HIGH). Ora per vedere se effettivamente il PIN è a livello HIGH dovrei collegare il pin 2 ad un PIN dichiarato come Input e leggerne il segnale.
Io vorrei sapere se c’è una funzione, che ti permette di avere l’attuale stato del PIN (LOW/HIGH) senza dover utilizzare hardware.

Sì e no, con digitalRead(pin). Ma se si esegue questo tipo di lettura, restituisce lo stato del record interno del pin, non lo stato effettivo del pin, cioè come dovrebbe essere quel pin. Ad esempio, se l’output è stato precedentemente impostato su HIGH nel codice, ma a causa di errori hardware ad esso collegati, è LOW, questa lettura restituisce HIGH, che è il modo in cui viene definito il bit del Registro di sistema che controlla tale pin.
Se questo non funziona per te, dovrai usare il pulsante.
Migliori saluti.

No no
Legge fisicamente il pin

Due prove e si ha conferma

Ma è lo scopo che mi sfugge

Esatto, è come dice @Standardoil.
Se guardate lo schema di funzionamento dei GPIO sul datasheet risulta evidente.

Mi chiedo però il senso di tutto ciò… Se imposto un pin HIGH e questo si trova in modo forzato (dall’esterno) su LOW ho fatto un bel cortocircuito ed addio porta del micro (se sono fortunato)…

Sto costruendo un interfaccia per la porta seriale di Arduino con visual studio (c# Windows form). Questo programma comunica via seriale con Arduino e attraverso dei bottoni posso accendere o spegnere un PIN. Fino a qui nessun problema ma mi serve avere una verifica se effettivamente i pin sono accesi (non voglio verificare con tipo"pin1 acceso".) E la mia intenzione è quella di inviare una matrice di bit (che corrispondono allo stato logico del PIN).
Spero di essermi spiegato bene

Se fai un digitalWrite() di un’uscita, l’unica ragione per cui il livello del pin non dovrebbe andare sul livello high è che l’uscita stessa è guasta (o il circuito esterno sbagliato).
In questo caso poco importa leggere quel livello per conferma… Se è guasto, il micro andrebbe sostituito a prescindere.

Io faccio spesso il digitalRead() sulle uscite, non con lo scopo di verificare se è high o meno, ma per evitare di usare delle variabili in più dove memorizzare lo stato delle uscite.

La mia domanda è se, dichiarando un led in uscita, posso leggere il valore del PIN? A cosa mi serve non conta, io voglio capire se è possibile questa cosa.
Faccio un esempio di codice:
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
Byte a = digitalRead(2);
Grazie

La risposta alla tua domanda è stata data già diverse volte e da più utenti nel corso della discussione.
Si è possibile.

C’è voluto un topic, 2 giorni, 9 risposte quando avrebbe fatto prima a caricare il codice che ha scritto qui e provare… Mha!

Non avevo la disponibilità di un computer