Diferencia entre revisiones de «digitalRead()»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo)
(Referencias)
Línea 78: Línea 78:
 
* [https://programarfacil.com/podcast/26-arduino-entradas-y-salidas/ Entradas y salidas] - Luis del Valle
 
* [https://programarfacil.com/podcast/26-arduino-entradas-y-salidas/ Entradas y salidas] - Luis del Valle
 
* [https://naylampmechatronics.com/blog/39_Resistencias-Pull-Up-y-Pull-Down.html Pull-Up y Pull-Down] - Laylamp
 
* [https://naylampmechatronics.com/blog/39_Resistencias-Pull-Up-y-Pull-Down.html Pull-Up y Pull-Down] - Laylamp
* [https://itp.nyu.edu/physcomp/lessons/microcontrollers/digital-input-output/] - ITP Informatica Fisica
+
* [https://itp.nyu.edu/physcomp/lessons/microcontrollers/digital-input-output/ Digital input/output] - ITP Informatica Fisica
 
* [http://arduino.perut.org/Arduino_17.htm Puertos Arduino] - Kike_GL
 
* [http://arduino.perut.org/Arduino_17.htm Puertos Arduino] - Kike_GL
  
 
[[Category:Funciones]]
 
[[Category:Funciones]]

Revisión del 21:47 12 may 2019

Descripción

Lee el valor del pin digital dando un resultado. Los valores pueden ser HIGH / LOW.

Sintaxis

digitalRead(pin);

Parámetros

pin
es el numero del pin digital a usar (0~13 + 14~19). Puedes usar const byte para de definir el numero de pin.

Retorno

Devuelve el valor del pin: HIGH / LOW.

Advertencias

En muchos ejemplo se ve que usa una variable de tipo int para definir el pin a usar. Esto es un grave error por dos motivos:

  1. Una variable sera almacenada en memoria SRAM porque se espera que su valor cambie durante la ejecución del bosquejo, pero normalmente en los pines esto nunca ocurre, por lo que es preferible usar const que es almacenada en flash.
  2. El tipo int ocupa 2 byte. Es suficiente usar el tipo byte (0~255) que solo ocupa 1 byte.

Ejemplo

Cuando presionamos el pulsador el LED a bordo se prende, soltamos y se apaga. Poner un pulsador entre pin digital 3 y GND.

void setup(){
   pinMode(LED_BUILTIN, OUTPUT);
   pinMode(3, INPUT_PULLUP);
}
void loop(){
   if (digitalRead(3) == LOW){
       digitalWrite(LED_BUILTIN, HIGH);  //Prende LED
   }else{
       digitalWrite(LED_BUILTIN, LOW);   //Apaga LED
   }
}

Nota: digitalRead() retorna un verdadero mientas no estas pulsando el botón gracias a su configuración INPUT_PULLUP, asi que es exactamente lo mismo si pones !digitalRead(3) como condición.


void setup(){
   pinMode(LED_BUILTIN, OUTPUT);
   pinMode(3, INPUT_PULLUP);
}
void loop(){
   if (!digitalRead(3)){
       digitalWrite(LED_BUILTIN, HIGH);  //Prende LED
   }else{
       digitalWrite(LED_BUILTIN, LOW);   //Apaga LED
   }
}

Otra manera de hacer lo mismo es:

void setup(){
   pinMode(LED_BUILTIN, OUTPUT);
   pinMode(3, INPUT_PULLUP);
}
void loop(){
   if (!digitalRead(3)){
       digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));  //Conmuta LED
   }
}

Vease también

Referencias