torres.electronico

ARDUINO: Ejemplo de uso de las distintas configuraciones de entradas

En teste ejemplo, veremos las distintas configuraciones de entrada (PullUP por hardware, PullDOWN por hardware, PullUP por software y la configuración de INTERRUPCIONES en dos puertos)...


entradas-png.310427


CSS:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Ejemplo: cONFIGURACION de entradas PullUP/PullDOWN/INTERRUPCIONES - prof.martintorres@educ.ar - ETI Patagonia
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const int boton_1 = 4;   
const int boton_2 = 5;
const int boton_3 = 6; 
const int LED_B3  = 9;
const int LED_B2  =10;
const int LED_B1  =11;
const int LED_INT =12;

int a;
//variables pulsador B1
        uint8_t valB1=0;
        int val_B1_viejo=1; //button old
        int val_B1_nuevo;   //buton new
        int L1_estado=0;    //led estado
//variables pulsador B2
        uint8_t valB2=0;
        int val_B2_viejo=0; //button old
        int val_B2_nuevo;   //buton new
        int L2_estado=0;    //led estado
//variables pulsador B3
        uint8_t valB3=0;
        int val_B3_viejo=1; //button old
        int val_B3_nuevo;   //buton new
        int L3_estado=0;    //led estado

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void setup()
  {
  Serial.begin(9600);        // Para ver información en el Seria Monitor.
  //CONFIGURAMOS LA INTERRUPCION EN LOS PUERTOS 2 Y 3 
  attachInterrupt(0, enciende, RISING); // 0 es la interrupción 0, es decir el pin 2
  attachInterrupt(1, apaga, RISING);    // 1 es la interrupción 1, es decir el pin 3
  //CONFIGURAMOS LOS PUERTOS COMO ENTRADAS
  pinMode(boton_1, INPUT_PULLUP); //pulsador que enciende Led B1 y esta seteada la entrada con la configuracion PullUP interna
  pinMode(boton_2, INPUT); //pulsador que enciende Led B2 y esta seteada la entrada con la configuracion externa PullDOWN
  pinMode(boton_3, INPUT); //pulsador que enciende Led B3 y esta seteada la entrada con la configuracion externa PullUP
  //CONFIGURAMOS LOS PUERTOS COMO SALIDAS 
  pinMode(LED_B3, OUTPUT);   // led comandado por el pulsador B3
  pinMode(LED_B2, OUTPUT);   // led comandado por el pulsador B2
  pinMode(LED_B1, OUTPUT);   // led comandado por el pulsador B1
  pinMode(LED_INT, OUTPUT);   //  led comandado por el pulsador de interrupcion 2
  digitalWrite(LED_B3, LOW); 
  digitalWrite(LED_B2, LOW); 
  digitalWrite(LED_B1, LOW); 
  //digitalWrite(LED_INT, LOW); 
  }
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void loop()
           {
           lecturaPULSADOR();
           CtrlSALIDAS();
           }

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void lecturaPULSADOR()
{
  ///////////////// LECTURA PULSADOR B1 /////////////////
     valB1 = digitalRead(boton_1);
        val_B1_nuevo = valB1;
///////////////// LECTURA PULSADOR B2 /////////////////
     valB2 = digitalRead(boton_2);
        val_B2_nuevo = valB2;
///////////////// LECTURA PULSADOR B3 /////////////////
     valB3 = digitalRead(boton_3);
        val_B3_nuevo = valB3;   
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void CtrlSALIDAS()
{
//////////////////////////////////////////////////
/// CONTROL LED_B1 configurado PullUP interno ///

if (val_B1_nuevo == LOW && val_B1_viejo== HIGH)
   {
    if (L1_estado==0)
       {
        L1_estado=1;
         for (a = 0; a < 50; a++)
        {       
        digitalWrite(LED_B1, HIGH);
        delay (800);
        lecturaPULSADOR();
        CtrlSALIDAS();
        digitalWrite(LED_B1, LOW);
        delay (800);
        lecturaPULSADOR();
        CtrlSALIDAS();
       }
       }
    else
       {
       digitalWrite(LED_B1, LOW);
       L1_estado=0;   
       }
   }
   val_B1_viejo = val_B1_nuevo;
//////////////////////////////////////////////////
///CONTROL LED_B2 configurado PullDOWN externo///

if (val_B2_nuevo == HIGH && val_B2_viejo== LOW)
   {
    if (L2_estado==0)
       {
        L2_estado=1;
        digitalWrite(LED_B2, HIGH);
        }
    else
       {
       digitalWrite(LED_B2, LOW);
       L2_estado=0;   
       }
   }
   val_B2_viejo = val_B2_nuevo;
//////////////////////////////////////////////////
/// CONTROL LED_B3 configurado PullUP externo ///

if (val_B3_nuevo == LOW && val_B3_viejo== HIGH)
   {
    if (L3_estado==0)
       {
        digitalWrite(LED_B3, HIGH);
        L3_estado=1;
       }
    else
       {
       digitalWrite(LED_B3, LOW);
       L3_estado=0;   
       }
   }
   val_B3_viejo = val_B3_nuevo;
 }
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Las rutinas de las interrupciones se llaman ISR.
void enciende() // Cuando hay interrupción 0 (terminal 2), actúa esta rutina.
{
  for (int i = 0; i < 50; i++)
        {
        digitalWrite(LED_INT, HIGH);
        }
}

void apaga()  // Cuando hay interrupción 1 (terminal 3), actúa esta rutina.
{
   digitalWrite(LED_INT, LOW);
   a=48;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
  • ENTRADAS.png
    ENTRADAS.png
    42.7 KB · Visitas: 13
  • Me encanta
Reactions: krlosss
Atrás
Arriba