Práctica 2

Contador de tiempo para comunicación entre microcontroladores.

Regresar a Teoría

Descripción

Se implementa un protocolo con dos microcontroladores para medir la duración de pulsos y transmitir una secuencia de 4 bits, visualizándolos en un monitor. Esto para evaluar los métodos de comunicación que se utilizan en el área de redes digitales.

Instrucciones PDF
...
Contador de Tiempo

Esta actividad se centra en desarrollar un protocolo para contar el tiempo de duración de los pulsos. Un Arduino genera pulsos con un tiempo en estado alto específico, comprobado con un osciloscopio. El segundo Arduino mide la duración de estos pulsos y los muestra en el monitor serial. Además, se realiza la transmisión de una serie de 4 bits, iniciando con un bit alto, desde el primer al segundo Arduino, quien los interpreta y muestra en el monitor serial. La conexión a tierra entre ambos dispositivos es esencial para la comunicación.

Código Parte 1

//CONTADOR DE PULSOS ARDUINO 2
#define DELAY_TIME 10

int cuenta_info = 0, dato = 0;
String palabra = "";

void setup()
{
    pinMode(2, INPUT);
    pinMode(3, INPUT);
    Serial.begin(115200);
    Serial.println("Datos:");
}

void loop()
{
    if (digitalRead(2) == HIGH)
    {
    // Wait for pin 2 to go LOW, indicating the button is released
    while (digitalRead(2) == HIGH)
    {
        delayMicroseconds(990);
        cuenta_info++;
        if (cuenta_info == DELAY_TIME-1)
        {
        cuenta_info = 0;
        dato = digitalRead(3);  // Read the value from pin 3
        //Serial.println(dato);
        palabra+=dato;
        }
        //Serial.println(cuenta_info);
    }
    }
    if (palabra.length()==5)
    {
    if (palabra.charAt(0)=='1')
    {
        palabra.remove(0, 1);
        Serial.println(palabra);
        palabra="";
    }
    else
    {
        Serial.println("Error en mensaje");
        palabra="";
    }
    }  
}                       

Código Parte 2

//ENVIO DE PULSOS ARDUINO 1
#define DELAY_TIME 10

void pulsot(int tiempo,int DATA)
{
        digitalWrite(2, HIGH);
        digitalWrite(3, DATA);
        delay(tiempo);
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        delay(tiempo);
}
void setup()
{
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    delay(1000);
    
    pulsot(DELAY_TIME,1);//INICIO
    pulsot(DELAY_TIME,0);//dato0
    pulsot(DELAY_TIME,1);//dato1
    pulsot(DELAY_TIME,1);//dato2
    pulsot(DELAY_TIME,1);//dato3
    
}
void loop()
{
}