digitalWrite()

De Arduino
Saltar a: navegación, buscar

Descripción

Envía al puerto digital definido previamente como OUTPUT el valor HIGH o LOW (poniendo en 1 o 0 la salida). El pin se puede especificar ya sea como una variable o como una constante (0~13 + 14~19).

Nota: Debes usar pinMode() para hacer la definición previamente.


Sintaxis

digitalWrite(pin, valor);

Parámetros

pin
es el numero del pin digital a usar (0~13 + 14~19). Puedes usar const byte para de definirla.
valor
por lo general se usa las palabras reservadas HIGH o LOW, pero puedes usar 0, 1, false o true. Puedes usar una variable byte para definirla.

Retorno

Nada.

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 1

Estos comando se ejecuta una sola vez al estar en setup().

void setup(){
   for (byte n=2; n<=7; n++){
      pinMode(n, OUTPUT);
   }
   pinMode(17, OUTPUT);

   digitalWrite(2, HIGH);
   digitalWrite(3, LOW);
   digitalWrite(4, 1);
   digitalWrite(5, 0);
   digitalWrite(6, true);
   digitalWrite(7, false);
   digitalWrite(17, HIGH);  //Pone en HIGH el pin analogico A3
}
void loop(){
   //nada
}

Ejemplo 2

Primero se preparan los pines digitales 6~10 como salidas. Luego se conmutan (se prende si esta apagado y viceversa) cada medio segundo alternativamente cada LED. Debes conectar 5 LED con sus respectivas resistencias de 220 ohms.

void setup(){
   for (byte i=6; i<=10; i++){
      pínMode(i, OUTPUT);
      digitalWrite(i, LOW);
   }
}
void loop(){
   for (byte i=6; i<=10; i++){
      digitalWrite(i, !digitalRead(i));
      delay(500);
   }
}

Ejemplo 3

Parpadea el LED a bordo.

void setup() {
   DDRB = DDRB | 32;    //Configura el pin digital 13 como OUTPUT, no altera el resto. 32=B00100000;
}
void loop() {
   PORTB = PORTB ^ 32;  //Invertido estado del bit 5 (pin digital 13), no altera el resto.
   delay(500);
}

Vea también

Referencias