Problema en la salida de señal de Josytick a traves de Arduino UNO

Hola, a ver si me podeis ayudar.

Estoy haciendo un proyecto con Arduino UNO en el cual hay que manejar un coche por radio control mediante un joystick de tres canales, el tema es que quiero ver la señal de entrada en el osciloscopio haciendo simplemente un paso de testigo, es decir, leer la señal del joystick con la funcion digitalRead() y automaticamente sacarla por otro pin con la funcion digitalWrite() y no consigo ver dicha señal a la salida pero si a la entrada. Pego aqui el codigo, es muy basico, pero nose porq no funciona, porq de hecho ya lo habia probado anteriormente y ahora no me funciona.

int entrada = 3;
int salida = 6;

boolean dato;

void setup() {

Serial.begin(9600);
pinMode(entrada,INPUT);
pinMode(salida,OUTPUT);

}

void loop() {

dato = digitalRead(entrada);
digitalWrite(salida,dato);

Serial.print(dato);
delay(1000);

}

La tension es de unos 3.3 V en el pin de entrada, suficiente para obtener un valor alto, pero en el pin de salida a penas hay tension aunque en el osciloscopio y en la consola puedo ver como la señal de salida oscila de bajo a alto aleatoriamente . Por que puede ser?.

Gracias de antemano.

Si vas a implementar un monitoreo entonces no uses delay.
Yo usaría millis() como en blink sin delay. Mira ese ejemplo para que me entiendas.

Que logro usando millis() que el arduino va a chequear muchas mas veces el estado y tambien lo reforzará en la salida.
Ahora veamos el tema de las tensiones.

Dices que lees 3.3V a la entrada. Eso es la salida del Joystick, porque no mejoras esa salida? ALgo que de reales 5V. Si es la salida del Joystick y nada puede hacerse con ese valor, entonces mejoralo.

PUedes usar un 2n7000 asi

Entonces luego de hacerlo vemos como se comparta
El programa yo lo modificaría asi.

#define INTERVALO 1000

int entrada = 3;
int salida = 6;
boolean dato;
unsigned long Start;

void setup() {
 
  Serial.begin(9600);
  pinMode(entrada,INPUT);
  pinMode(salida,OUTPUT);
  Start = millis();
}

void loop() {
 
  dato = digitalRead(entrada);
  digitalWrite(salida,dato);
 
  if (millis() - Start > INTERVALO) {
      Serial.print(dato);
      Start = millis();
  }

}

Hola, primero muchas gracias por contestar, y segundo problema resuelto, utilizando la funcion millis() se a solucionado todo. Aun que creo que la tension sigue siendo un poco baja en el pin de entrada aunq igual no es real porq veo que oscila de 3.3 a 4.5V mas menos supongo que sera cosa de osciloscopio , en el de salida tengo los 5V practicamente.

Muchas gracias compañero. :smiley:

Bien, una solución de dos, resultó la efectiva.