.. note:: ¡Hola, bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Vistas previas exclusivas**: Obtén acceso anticipado a nuevos anuncios de productos y avances. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos. - **Promociones festivas y sorteos**: Participa en sorteos y promociones especiales de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _ar_serial_read: 1.8 Lectura Serial ==================== Resumen ------------ Además de leer datos de los componentes electrónicos, la placa Mega2560 puede leer datos desde el monitor serie, y puedes usar Serial.read() como controlador para los experimentos del circuito. En este caso, utilizamos un LED para experimentar con la instrucción Serial.read() para controlar el encendido y apagado del LED. Componentes necesarios ------------------------ .. image:: img/list_1.8.png * :ref:`cpn_mega2560` * :ref:`cpn_breadboard` * :ref:`cpn_wires` * :ref:`cpn_led` * :ref:`cpn_resistor` Circuito Fritzing -------------------- En este ejemplo, utilizamos el pin digital 9 para controlar el LED. Cuando se ingresa el valor "1" en el monitor serie, el LED se enciende. Cuando se ingresa "0", el LED se apaga. .. image:: img/image30.png Diagrama esquemático --------------------- .. image:: img/image401.png Código -------- .. note:: * Puedes abrir el archivo ``1.8_serialRead.ino`` en la ruta ``sunfounder_vincent_kit_for_arduino\code\1.8_serialRead`` directamente. * O copiar este código en el IDE de Arduino. .. raw:: html Después de cargar el código en la placa Mega2560, abre el monitor serie. Al escribir "1", el LED se enciende, y al escribir "0", se apaga. .. image:: img/image52.png Análisis del código --------------------- Declara el pin digital 9 como ledPin. .. code-block:: arduino const int ledPin = 9; Serial.read() lee un solo byte de valor ASCII, por lo que debes declarar una variable de tipo int, incomingByte, para almacenar los datos recibidos. .. code-block:: arduino int incomingByte = 0; Inicia la comunicación serial en setup() y establece la tasa de transmisión a 9600. .. code-block:: arduino Serial.begin(9600); Configura el pin ledPin en modo OUTPUT. .. code-block:: arduino pinMode(ledPin,OUTPUT); En loop(), se evalúa el estado del monitor serie, y la información solo se procesa cuando se reciben datos. .. code-block:: arduino if (Serial.available() > 0){} Lee el valor ingresado en el monitor serie y lo almacena en la variable incomingByte. .. code-block:: arduino incomingByte = Serial.read(); Cuando se obtiene el carácter '1', se enciende el LED; cuando se obtiene '0', el LED se apaga. .. code-block:: arduino if(incomingByte=='1'){digitalWrite(ledPin,HIGH);} else if(incomingByte=='0'){digitalWrite(ledPin,LOW);} .. note:: Serial.read() toma el valor ASCII de un solo carácter, lo que significa que cuando ingresas '1', el valor obtenido no es el número '1', sino el carácter '1' cuyo valor ASCII correspondiente es 49. ※ Tabla ASCII ------------------- El código ASCII (Código Estándar Americano para el Intercambio de Información) data de la década de 1960. Es la forma estándar en que se codifica el texto numéricamente. Cabe destacar que los primeros 32 caracteres (0-31) son caracteres no imprimibles, comúnmente llamados caracteres de control. Los caracteres más útiles están etiquetados. .. image:: img/image409.png .. image:: img/image410.png Imagen del fenómeno ---------------------- .. image:: img/image36.jpeg