Problemino con il settaggio delle porte I/O

Ciao a tutti, chiedo gentilmente un aiuto, ho settato con il comando "pinMode" le porte digitali 0 e 1 , sono state settate come INPUT, ma cià non ostante su queste porte mi ci trovo una tensione di 5 V, so che queste porte possono esere usate per la trasmisione dati, ma mi sembrava di aver capito che volendo potevano esse usate anche come ingresso o uscita.
Qualcuo mi sa dire cosa eventualmente devo controllare o modificare ??
grazie :-/

mandaci il sketch.
Hai attivato la resistenza pullup?
Ciao Uwe

leggi qui:

Quando setti i pin come INPUT, attivi la resistenza di pullup interna, è così anche per tutti gli altri pin digitali.

Se invece hai riscontrato un problema anche facendo i collegamenti, allora prova a dirci cosa stai facendo e a postare il codice.

sto cercando di fare un programma che mi gestisca una tastiera a 16 tasti, sulle porte settate come INPUT ho messo una resistenza da 10K ( la resistenza è tra la porta e GND per avere lo stato LOW) ma la tensione rilevata sulle porte 0 e 1 è presente anche senza la presenza di tale resistenza.... vedo di postare il codice .. ma tenete presente che non sara finito in quanto è solo al inizio :stuck_out_tongue:
grazie per l'aiuto :slight_smile: :slight_smile:

di seguito trovare il programma , ma troverete che le porte 0 e 1 non sono usate, per il momento le ho tolte dal programma per vedere se il resto funzionava , con le altre porte digitale non ho problemi funzionano regolarmente :slight_smile:
/*

  • LCD RS pin to digital pin 13
  • LCD Enable pin to digital pin 12
  • LCD D4 pin to digital pin 11
  • LCD D5 pin to digital pin 10
  • LCD D6 pin to digital pin 9
  • LCD D7 pin to digital pin 8
  • 2,2K resistor for contrast of LCD (Pin 3)
  • 5 V for LCD (pin 1 GND, pin 2 +Vcc)
    */

#include <LiquidCrystal.h> // include the library code:

int Anal = LOW;
int Colonna = 5;
int Riga = 2;
char Numero = '0';

LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // inizializo LCD

void setup() {

// Serial.begin(9600);

lcd.begin(20, 2); // dichiaro le colonne elerighe del LCD

lcd.print("Ciao"); // Scrivi nel LCD e parte dal punto 0-0 del LCD.

lcd.setCursor(0,1);
lcd.print("Digita un codice");

//pinMode (0, INPUT);
//pinMode (1, INPUT);
pinMode (2, INPUT);
pinMode (3, INPUT);
pinMode (4, INPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);

}

void loop() {

for( int Ciclo=1 ; Ciclo < 4; Ciclo ++){

digitalWrite(Colonna, HIGH);

lcd.setCursor(6,0);
lcd.print(Ciclo);

for ( int Ciclo2=1 ; Ciclo2 < 4; Ciclo2 ++) {

lcd.setCursor(10,0);
lcd.print(Ciclo2);
lcd.setCursor(13,0);
lcd.print(Riga);

Anal = digitalRead(Riga);
delay(10);

if ( Anal == HIGH) {

if ( Colonna == 5 ){
if ( Riga == 2){ Numero = '1'; }
if ( Riga == 3){ Numero = '4'; }
if ( Riga == 4){ Numero = '7'; }

}
if ( Colonna == 6) {
if ( Riga == 2){ Numero = '2'; }
if ( Riga == 3){ Numero = '5'; }
if ( Riga == 4){ Numero = '8'; }

}
if ( Colonna == 7) {
if ( Riga == 2){ Numero = '3'; }
if ( Riga == 3){ Numero = '6'; }
if ( Riga == 4){ Numero = '9'; }

}

/* if ( Colonna == 7) {
if ( Riga == 0){ Numero = 'A'; }
if ( Riga == 1){ Numero = 'B'; }
if ( Riga == 2){ Numero = 'C'; }
if ( Riga == 3){ Numero = 'D'; }
delay (100);
} */

Anal=LOW;
}
Riga ++;
}

digitalWrite(Colonna, LOW);

Riga =2;
Colonna ++;
}
Colonna = 5;

//Serial.println(Anal);

lcd.setCursor(17,0);
lcd.print(Numero);

lcd.setCursor(17,1);
lcd.print(millis()/1000); // print the number of seconds since reset

ho provato anche ad attivare attivi la resistenza di pullup interna, con l'istruzione "digitalWrite(Pin, HIGH); ma non cambia nulla sulle porte 0 e 1 ho sempre una tensione.

ho provato a inizializare la scheda, facendo un UPload, in più ho caricato in arduino il programma dimostrativo "Blink", ma sulle porte 0 e 1 ho sempre tensione.

C'è qualcuno che mi sa dire come rendere utilizabili le porte digitali 0 e 1??

o quantomeno sapere se è un problema di software o se sono guaste le porte ??

trovato la soluzione, per poter usare le porte 0 e 1 di arduino 2009, bisogna fare una modifica hardware, bisogna rimuovere le resistenze R8 e R9 che collegano le porte 0 e 1 al integrato che gestisce la seriale .. per capire meglio suggerisco di guardare lo schema elettrico di arduono 2009 ... ciao ciao a tutti

ciao ginboni
Togliendo le resistenze R8 e R9 interrompi la conessione tra il ft232 e l' ATmega.
Questo significa che non puoi piú caricare uno sketch attraverso l'usb del Arduino ma devi o ripristinare il collegamento o attaccare un adattatore usb-seriale esterno sui pin del Arduino.
Ciao Uwe