Pines digitales
Un pin digital solo maneja dos estados. La plataforma los nombra con dos constantes:
board.HIGH(vale1): el pin está en voltaje alto (5 V o 3,3 V según la placa).board.LOW(vale0): el pin está en 0 V (masa/GND).
Usas estas constantes tanto para escribir un nivel como para comparar lo que
lees. Escribir números crudos (1/0) también funciona, pero board.HIGH /
board.LOW hacen el código legible.
Paso 1: configurar el pin con pinMode
Sección titulada «Paso 1: configurar el pin con pinMode»board.pinMode(pin, modo) declara cómo se usará un pin:
pin: el número del pin (p. ej.13).modo: uno deboard.MODES. Para pines digitales hay tres:
| Modo | Dirección | Para qué sirve |
|---|---|---|
board.MODES.OUTPUT | salida | el pin manda señal (lo escribes con digitalWrite) |
board.MODES.INPUT | entrada | el pin escucha (lo lees con digitalRead); necesita resistencia externa |
board.MODES.PULLUP | entrada | igual que INPUT, pero activa la resistencia pull-up interna (ver abajo) |
Salida: digitalWrite(pin, valor, encolar?)
Sección titulada «Salida: digitalWrite(pin, valor, encolar?)»Pone un pin de salida en alto o bajo.
pin: el número del pin.valor:board.HIGH(lo pone a voltaje alto) oboard.LOW(lo pone a 0 V).encolar(opcional, booleano): por defecto cada escritura se envía al instante. Si pasastrue, el cambio se guarda localmente pero no se envía hasta que llames aboard.flushDigitalPorts().
board.pinMode(13, board.MODES.OUTPUT);
board.digitalWrite(13, board.HIGH); // encenderboard.digitalWrite(13, board.LOW); // apagarEncolar varios cambios
Sección titulada «Encolar varios cambios»Un puerto es un grupo de 8 pines que la placa maneja juntos en un mismo byte. Cuando cambias varios pines del mismo puerto, encolarlos los envía en un solo mensaje (cambian prácticamente a la vez) en lugar de uno por uno:
board.digitalWrite(2, board.HIGH, true); // se guarda, no se envíaboard.digitalWrite(3, board.LOW, true); // se guarda, no se envíaboard.digitalWrite(4, board.HIGH, true); // se guarda, no se envíaboard.flushDigitalPorts(); // ahora se envían juntosEntrada: digitalRead(pin, callback)
Sección titulada «Entrada: digitalRead(pin, callback)»Activa el reporte del pin y llama a tu callback cada vez que el valor cambia. El
callback recibe el valor leído (0 o 1, es decir board.LOW o board.HIGH).
board.pinMode(2, board.MODES.INPUT);
board.digitalRead(2, (valor) => { varG.boton = valor === board.HIGH;});Qué hace ese código, línea por línea:
valores el número que reportó el pin:1(alto) o0(bajo).valor === board.HIGHcompara ese número conHIGH(1). El resultado es un booleano:truesi el pin está en alto,falsesi está en bajo.- Guardamos ese booleano limpio en
varG.boton, en vez del número crudo. Así un artefacto que leavarG.botonrecibetrue/falsedirectamente.
Si prefieres guardar el número tal cual: varG.boton = valor;.
La resistencia pull-up: qué es y por qué
Sección titulada «La resistencia pull-up: qué es y por qué»Un pin de entrada al que no llega una señal firme queda “flotando”: capta ruido
eléctrico y lee a veces HIGH y a veces LOW, al azar. Para evitarlo se usa una
resistencia pull-up, que mantiene el pin suavemente en HIGH mientras nadie haga
otra cosa.
board.MODES.PULLUP activa la pull-up interna del chip, así no necesitas una
resistencia externa. La consecuencia es que la lógica se invierte: en reposo el pin
lee HIGH, y al pulsar un botón que conecta el pin a GND, lee LOW.
board.pinMode(4, board.MODES.PULLUP);
board.digitalRead(4, (valor) => { // Con pull-up, LOW significa "pulsado": el botón conectó el pin a GND. varG.pulsado = valor === board.LOW;});Aquí valor === board.LOW da true cuando el pin está en bajo, es decir, cuando el
botón está pulsado.
Controlar el reporte: reportDigitalPin(pin, activar)
Sección titulada «Controlar el reporte: reportDigitalPin(pin, activar)»Igual que en analógico, un pin de entrada que reportas genera tráfico con la placa. Puedes apagarlo o reactivarlo sin perder la configuración:
board.reportDigitalPin(2, 0)— deja de reportar cambios del pin 2.board.reportDigitalPin(2, 1)— reanuda el reporte.
(digitalRead ya enciende el reporte por dentro; esto es para apagarlo o volverlo a
encender a mano.)
Errores típicos
Sección titulada «Errores típicos»- Olvidar
pinModeantes de leer o escribir el pin. - Entrada flotante: un
INPUTsin resistencia da lecturas erráticas. UsaPULLUP(o una resistencia externa). - Confundir el nivel eléctrico con el significado: con pull-up,
LOW= pulsado.