Digital pin 13

Salve a Tutti

Premetto che ci sto giocando da una sola settimana .....avrei due domandine

prima:

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

seconda:

come posso trasformare un decimale da 0 a 10 e mandarlo su 4 uscite in binario?

grazie per la vostra collaborazione

Dimenticavo.....Arduino UNO R3

saluti

Renzo

ciao

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

String miastringa = String(15, BIN);
Serial.println(miastringa); //debug

scomponi i caratteri e prendi la posiz 0,1,2,3

meglio ancora usi questo esempio PORTD = B10101000; // sets digital pins 7,5,3 HIGH
manipolazione delle porte Arduino Playground - PortManipulation

ma se devi comandare un display a 7 segmenti BCD ti conviene usare uno Shift Register

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.

Grazie !!!
Adesso che lo leggo, mi sembra d'aver letto qualcosa
Sul pin 13...ops!!!
Stasera vedrò di usare i vostri consigli...:wink:

Per il momento uso arduino così come è,a giorni dovrebbe
Arrivarmi l ethernet shield....:slight_smile:

2 righe... Una per impostazione pin e l'altra per
Il digitalWrite Low

Al reset tutti i pin sono impostati su tri-state, mi suona strano che il pin di suo sia su HIGH.

il 13 è a 1 puoi verificare con questo

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

Tu forse perché hai una Mega, immagino.
Io ho una Luigino328 ed una UNO e su entrambe il 13 è a 0.

boo po esse!! :smiley:

provato il codice (prova pin);

mi da pin 0,12 e 13 alti.... :~

boohhh

basta che si sappia....

Che dipenda dal fatto che tu hai la R3 mentre io la R1?
Bisognerebbe che qualcun altro facesse il test.

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

anche se la 13 è a 1 io dormo sonni tranquilli ehehehehheeheh
ciao :slight_smile:

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.

aggiungo che il pin 13 e' connesso al led, tu hai il led sempre acceso ?

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.

ma solo se c'è una bella umidità... :slight_smile: :slight_smile: :slight_smile:

ancora un altra domandina...dove comprate voi ? :roll_eyes:

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 :slight_smile:

Complimenti per il log, di che si tratta ?