Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Paso#2:
• Ahora, carga los datos a la vez en los flip-flops D. Tirará de los datos paralelos y mueve el
último bit del último flip-flop (cuatro), y luego el tercer bit, el segundo bit, y finalmente el
primer bit. Ahora, para reconvertir los datos paralelos en forma serial se utiliza el
convertidor serial a paralelo.
Formato del protocolo
• La UART comienza la comunicación con un bit de inicio ‘0’. El bit de
inicio inicia la transferencia de datos en serie y el bit de parada
finaliza la transacción de datos.
Trama de transmisión
• El transmisor envía un solo bit a la vez. Después de enviar un bit, se
envía el siguiente. De este modo, todos los bits de datos se envían al
receptor con una velocidad de transmisión predefinida. Habrá un
cierto retraso en la transmisión de cada bit. Por ejemplo, para enviar
un byte de datos a una velocidad de 9600 baudios, cada bit se envía
con un retraso de 108 µs. Los datos se añaden con un bit de paridad.
Por lo tanto, se requieren 10 bits de datos para enviar 7 bits de datos.
Maestro_esclavo
Maestro: Esclavo:
• Enviar ordenes al TX -RX • Recibir ordenes del
esclavo maestro
• Recibir datos del • Leer datos de sensores
esclavo o pines
• Procesar datos e • Enviar datos al maestro
imprimir Rx - Tx
GPIO usables para UART
Inicializando
• Se requiere de la librería : #include <HardwareSerial.h>
• Se crea un objeto llamado desde la libreria HardwareSerial usando el
commando ‘SerialPort( Puerto a usar)’:
• HardwareSerial SerialPort(1) //if using UART1
• HardwareSerial SerialPort(2) //if using UART2
• Dentro del setup : SerialPort.begin (BaudRate, SerialMode, RX_pin,
TX_pin).
• Baud rate: velocidad ej: 9600
• SerialMode: como uso el serial ej: “SERIAL_8N1” osea 8 bits 1 bit de
paridad.
Ejemplo de inicialización
Para enviar mensajes
• Dentro del loop usamos la orden: SerialPort.print.
Para recibir mensajes
1. Se configura el puerto como se vio previamente
2. En el Loop se pregunta si el puerto esta disponible con :
if (SerialPort.available())
3. Sí entra al if se realiza el comando: SerialPort.read();
4. Tener en cuenta que los valores a leer deben ser de tipo char.
Ejemplo Esclavo
Esclavo:
• Recibir ordenes del
maestro
• Leer datos de sensores
o pines
• Enviar datos al maestro
• Ejecutar tareas
Ejemplo de maestro
Maestro:
• Enviar ordenes al
esclavo
• Recibir datos del
esclavo
• Procesar datos e
imprimir
Comunicación I2C
• I2C es un puerto y protocolo de comunicación serial, define la trama
de datos y las conexiones físicas para transferir bits entre 2
dispositivos digitales. El puerto incluye dos cables de comunicación,
SDA y SCL. Además el protocolo permite conectar hasta 127
dispositivos esclavos con esas dos líneas, con hasta velocidades de
100, 400 y 1000 kbits/s. También es conocido como IIC ó TWI – Two
Wire Interface.
Comunicación I2C
• El protocolo I2C es uno de los más utilizados para comunicarse con
sensores digitales, ya que a diferencia del puerto Serial, su
arquitectura permite tener una confirmación de los datos recibidos,
dentro de la misma trama, entre otras ventajas.
• Los mensajes que se envían mediante un puerto I2C, incluye además
del byte de información, una dirección tanto del registro como del
sensor.
• Para la información que se envía siempre existe una confirmación de
recepción por parte del dispositivo.
• Por esta razón es bueno diferenciar a los distintos elementos
involucrados en este tipo de comunicación.
I2C – Esquema de comunicación y
elementos
https://github.com/marcoschwartz/LiquidCrystal_I2C/archive/
master.zip
Para instalar la librería
• Descomprimir el .zip, la carpeta descomprimida debería llamarse asi:
LiquidCrystal_I2C-master
• Renombrar la carpeta a LiquidCrystal_I2C
• Mover la carpeta a la carpeta donde se encuentren instaladas las
librerias del Arduino IDE.
• Cerrar y volverá abrir el IDE de Arduino.
Mostrar texto en el LCD
• Incluir la librería : #include <LiquidCrystal_I2C.h>
• Definir el numero de filas columnas que tiene mi LCD
• int lcdColumns = 16;
• int lcdRows = 2;
• Inicializar la LCD con: LiquidCrystal_I2C lcd(dirección, lcdColumns,
lcdRows);
• Sí no se tiene la dirección consultar el data sheet o correr el código
scanner
Dentro del setup
• // iniciar lcd
• lcd.init();
• //enciende la luz de fondo
• lcd.backlight();
Dentro del loop
• Con la función lcd.setcursor se define la posición inicial en filas y
columnas
• lcd.setCursor(0, 0);
• Con la función lcd.print se pueden imprimir mensajes no exceder el
m# de columnas de la lcd
• lcd.print("Hello, World!");
• lcd.clear(); borra la lcd
ejemplo