Per default la porta 13 è settata in high, e non andrebbe usata se si montano degli shield, come da manuale:
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
La conversione da decimale a binario ti basta scrivere questo
Renzoduino:
come è possibile che il pin 13 rimanga alto se non c'è nessuna voce nel codice che lo menziona?
come soluzione ho dovuto metterepiù di una riga nel codice per metterlo a " 0 "(low),sprecando spazio in memoria
"Più di una riga"? Cioè, tu nel codice sei stato costretto a scrivere più di una volta un digitalWrite(13, LOW)?
E come hai notato che il pin 13 era su HIGH?
Hai qualche shield collegato o usi l'Arduino "nudo e crudo"?
seconda:
come posso trasformare un decimale da 0 a 10 e mandarlo su 4 uscite in binario?
Potresti fare un semplice controllo bit per bit usando le funzioni di manipolazione dei bit:
for (byte i=0; i<4; i++) {
digitalWrite(Pin_di_partenza+i, bitRead(Numero, i));
}
bitRead legge il valore del bit indicato da "i" nel numero "Numero". 0 è il bit meno significativo. Restituisce 0 se il bit non è settato, 1 se è settato. Basta spedire alle porte la lettura ed hai subito la conversione del numero in segnali sulle porte.
Avendo la gestione con un ciclo for, devi mettere i pin in sequenza. Nulla ti cambia di usare anche porte a caso, solo che a questo punto devi fare 4 operazioni distinte.
void setup()
{
Serial.begin(9600);
short ii;
int pinValue;
for (ii = 0; ii < 54; ii++)
{
pinValue=digitalRead(ii);
Serial.println("pin#"+ (String)ii + " valore D " + pinValue);
}
}
void loop() {}
risposta
pin#0 valore D 1
pin#1 valore D 0
pin#2 valore D 0
pin#3 valore D 0
pin#4 valore D 1
pin#5 valore D 0
pin#6 valore D 0
pin#7 valore D 0
pin#8 valore D 0
pin#9 valore D 0
pin#10 valore D 1
pin#11 valore D 0
pin#12 valore D 0
pin#13 valore D 1
pin#14 valore D 0
pin#15 valore D 0
pin#16 valore D 0
pin#17 valore D 0
pin#18 valore D 0
pin#19 valore D 0
pin#20 valore D 1
pin#21 valore D 1
pin#22 valore D 0
pin#23 valore D 0
pin#24 valore D 0
pin#25 valore D 0
pin#26 valore D 0
pin#27 valore D 0
pin#28 valore D 0
pin#29 valore D 0
pin#30 valore D 0
pin#31 valore D 0
pin#32 valore D 0
pin#33 valore D 0
pin#34 valore D 0
pin#35 valore D 0
pin#36 valore D 0
pin#37 valore D 0
pin#38 valore D 0
pin#39 valore D 0
pin#40 valore D 0
pin#41 valore D 0
pin#42 valore D 0
pin#43 valore D 0
pin#44 valore D 0
pin#45 valore D 0
pin#46 valore D 0
pin#47 valore D 0
pin#48 valore D 0
pin#49 valore D 0
pin#50 valore D 0
pin#51 valore D 1
pin#52 valore D 0
pin#53 valore D 1
ho provato ancora un altro test e adesso mi da il pin 0 e 13 su High
non dovrebbe essere un problema per i progetti che ho intenzione di costruire,però sarebbe curioso sapere il perchè perlomeno,di un settaggio cosi impostato
Guarda, secondo me stiamo discutendo di un falso problema dato che:
E' buona norma impostare sempre i pin che si intende usare su output o input a seconda delle necessità e di evitare di usare il pin senza usare un pinMode, proprio per toglierlo dallo stato di alta impedenza in cui versa dopo il reset.
Non vorrei che le letture che vengono date con lo sketch di pablos siano in realtà delle letture casuali, dato che lo stato ad alta impendenza è indefinito per cui potrebbe venir letto qualsiasi interferenza indifferentemente come 0 o come 1.
leo72:
Non vorrei che le letture che vengono date con lo sketch di pablos siano in realtà delle letture casuali, dato che lo stato ad alta impendenza è indefinito per cui potrebbe venir letto qualsiasi interferenza indifferentemente come 0 o come 1.
Esatto, gli input digitali del ATmega sono ad altissima impedenza e se lasciati flottanti basta respirargli vicino per vederli cambiare di stato in modo random.
Il test di Pablos non ha alcun senso se eseguito con gli ingressi lasciati flottanti.
Dovunque capiti, principalmente da RS, poi da Robot-Italy e da qualche altro shop minore. Anche se eBay. Dipende da cosa mi serve, se devo fare un ordine grande, se ho urgenza, se ci sono sconti/promozioni ecc.
puo' darsi che il test non abbia valore, ma in un mese queste porte non hanno mai cambiato di stato spontaneamente, nel log viene scritto tutto cio' che fa arduino autonomamente e da client ... mistero della fede