Lee el pin de Arduino de otro Arduino [duplicado]

0

Estoy buscando leer pines digitales y analógicos en un arduino de otro arduino. Creo que mientras compartan una conexión a tierra común, esto debería funcionar bien. Soy consciente de I2C y lo he usado para otros proyectos, pero para esto estoy más interesado solo en hacer las conexiones.

Me preguntaba

  1. ¿Alguien ha tenido experiencia con esto?
  2. ¿Dañaré algo si hago esto?
pregunta Gunther

3 respuestas

3

Definitivamente tienes razón sobre el terreno.

  1. no específicamente, pero son solo dos fichas que se comunican entre sí, por lo que no debería ser muy complicado. He logrado que un par de micros se comuniquen entre sí a través de I2C, SPI y RS232 en diferentes ocasiones, pero nunca solo para leer los pines IO.
  2. no si tienes cuidado

Una pregunta, sin embargo: ¿por qué quieres hacer esto? Hay dispositivos disponibles llamados expansores de puerto. La idea básica es que hable con ellos a través de I2C o SPI y que proporcionen acceso a varios pines IO (generalmente 8 o 16) y posiblemente alguna funcionalidad adicional de interrupción en el cambio.

    
respondido por el alex.forencich
1

Esto debería ser IMO relativamente simple.

Si desea utilizar analógico, el código para Arduino 1 (Writer) sería el siguiente:

byte myByte=0;
void setup(){
pinMode(3,OUTPUT);
}

void loop(){
if(somethingHappens){
myByte++;
}
analogWrite(3,myByte); 
}

Y Aruino 2 (lector) lo leería de la siguiente manera:

byte readByte;
void setup(){
Serial.begin(9600);
}

void loop(){
readByte=analogRead(0);
Serial.println(readByte);
}
    
respondido por el Anomaly
1

Normalmente, esto debería funcionar exactamente como pensarías, y nada se dañará. Sin embargo, algunas personas optan por colocar una resistencia entre los pines, en caso de que un error de programación accidentalmente establezca ambos pines para que sean salidas. No es necesario, pero si hace algo donde se usa un cable bidireccional y los dispositivos cambian los roles de entrada / salida, es una buena idea. De lo contrario, deberías estar bien.

Además, la respuesta de Stuyvenstein podría dar resultados un tanto extraños, porque AFAIK la función analogWrite () en casi todas las variaciones de la placa arduino se implementa con hardware PWM, no con DAC verdadero. Sin embargo, puedes usar un filtro RC para obtener un analógico real del PWM. IIRC la frecuencia es algo así como 490Hz.

    
respondido por el EternityForest

Lea otras preguntas en las etiquetas