Se desarrolla un sistema con dos microcontroladores para convertir señales analógicas en binario. El primero codifica la señal de un potenciómetro en un formato binario de 8 bits, y el segundo la transforma a decimal para visualizarla. Esto para evaluar los métodos de comunicación que se utilizan en el área de redes digitales.
Instrucciones PDFAquí se desarrolla un sistema para convertir valores analógicos a binario. Un Arduino convierte el valor de un potenciómetro a un número binario de 8 bits, visualizado en sus pines digitales. Otro Arduino recibe estos valores binarios, los convierte a decimal y los muestra en el monitor serial. Esta actividad asegura que los Arduinos se comuniquen correctamente mediante la conversión y transferencia de datos entre analógico, binario y decimal, con la conexión a tierra común necesaria para la comunicación.
//CONTADOR DE PULSOS ARDUINO 1
int pot=0;//el valor del pot empieza en 0
int potPin = A0;
String dato = "";
void setup()
{
pinMode(2, OUTPUT); //Bit0
pinMode(3, OUTPUT); //Bit1
pinMode(4, OUTPUT); //Bit2
pinMode(5, OUTPUT); //Bit3
pinMode(6, OUTPUT); //Bit4
pinMode(7, OUTPUT); //Bit5
pinMode(8, OUTPUT); //Bit6
pinMode(9, OUTPUT); //Bit7
Serial.begin(115200);//velocidad de 115200 bits por segundo.
}
void loop()
{
pot=analogRead(potPin);//lee el estado del potenciometro
Serial.println("Valor pot: ");//imprime el valor del pot
Serial.println(pot);
pot=map(pot,0,1023,0,255);//cambia los valores del pot de 1023 a 255(8bits)
Serial.println("Valor pot convertido: ");//imprime el valor del pot convertido
Serial.println(pot);//imprime el valor del pot convertido
Serial.println("Valor pot 8 bits: ");//imprime el valor del pot convertido
for(int i=2; i<10; i++) //lee del pin 2 al 9
{
digitalWrite(i,pot%2);//saca el residuo de la division
//Serial.print(pot%2);//imprime el residuo
dato+=(pot%2);
pot=pot/2;//divide el valor del pot entre 2 para el siguiente bit
}
reverseString(dato);
Serial.print(dato);
dato="";
Serial.println("");
delay(1000);
}
void reverseString(String &str)
{
int len = str.length();
for (int i = 0; i<len/2; i++)
{
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
//ENVIO DE PULSOS ARDUINO 2
int potencia=1;
int suma=0;
int bit;
void setup()
{
pinMode(9, INPUT); //Bit0
pinMode(8, INPUT); //Bit1
pinMode(7, INPUT); //Bit2
pinMode(6, INPUT); //Bit3
pinMode(5, INPUT); //Bit4
pinMode(4, INPUT); //Bit5
pinMode(3, INPUT); //Bit6
pinMode(2, INPUT); //Bit7
Serial.begin(115200);//velocidad de 115200 bits por segundo.
}
void loop()
{
for(int i=9; i>1; i--) //lee del pin 9 al 2
{
bit=digitalRead(i); // lee el valor del pin
suma=suma +(bit*potencia);
potencia=potencia*2;//eleva la potencia hasta 128
}
Serial.println(suma); //imprime la suma total
suma=0; //reinicia la suma
potencia=1; //reinicia la potencia
delay(1000);
}