10. I2C
El I2C es un bus con múltiples maestros, lo que
significa que se pueden conectar varios chips al
mismo bus y que todos ellos pueden actuar
como maestro, sólo con iniciar la transferencia
de datos. Este bus se utiliza dentro de una
misma placa de un dispositivo. Facilita la
comunicación entre microcontroladores,
memorias y otros dispositivos con cierto nivel
de «inteligencia», sólo requiere de dos líneas de
señal y un común o masa.
11. I2C
Las líneas SDA y SCL son del tipo
drenaje abierto, es decir, un estado
similar al de colector abierto, pero
asociadas a un transistor de efecto de
campo (o FET). Se deben polarizar en
estado alto (conectando a la
alimentación por medio de resistores
«pull-up») lo que define una estructura
de bus que permite conectar en
paralelo múltiples entradas y salidas.
13. PROTOCOLO DE
COMUNICACIÓN DEL BUS I2C
La condición inicial, de bus libre, es
cuando ambas señales están en estado
lógico alto. En este estado cualquier
dispositivo maestro puede ocuparlo,
estableciendo la condición de inicio
(start). Esta condición se presenta
cuando un dispositivo maestro pone en
estado bajo la línea de datos (SDA), pero
dejando en alto la línea de reloj (SCL).
14. TRANSMICIÓN
Si el dispositivo cuya dirección corresponde a
la que se indica en los siete bits (A0-A6) está
presente en el bus, éste contesta con un bit en
bajo, ubicado inmediatamente luego del
octavo bit que ha enviado el dispositivo
maestro. Este bit de reconocimiento (ACK) en
bajo le indica al dispositivo maestro que el
esclavo reconoce la solicitud y está en
condiciones de comunicarse. Aquí la
comunicación se establece en firme y
comienza el intercambio de información entre
los dispositivos.
15. SECUENCIA DE PARADA
En el caso contrario, cuando el bit de
lectura/escritura estaba a nivel lógico alto
(lectura), el dispositivo maestro genera
pulsos de reloj para que el dispositivo
esclavo pueda enviar los datos. Luego de
cada byte recibido el dispositivo maestro
(quien está recibiendo los datos) genera un
pulso de reconocimiento. El dispositivo
maestro puede dejar libre el bus generando
una condición de parada (o detención; stop
en inglés).
17. Los algoritmos de triangulación determinan
la posición y la orientación del robot, a partir
de la posición de las marcas Ri
y de los
ángulos relativos
, y correspondientes a tres de ellas
(McGillem y Rappaport, 1989; Cohen y Koss,
1993; Betke y Gurvits, 1997)
18. Para el uso consistente de los algoritmos de
triangulación, es necesario que los ángulos relativos
qi
correspondan a la misma configuración del robot.
En el sistema considerado este requisito se cumple
si el robot está estático. Sin embargo también se
presenta el problema del posicionamiento
dinámico–. Como solución se usa el filtro de Kalman
extendido, que considera los errores del sensor láser
y los odómetros, para estimar en tiempo real los
ángulos relativos
qi
(t)
En vez del convencional , que se obtiene de
mediante triangulación. En N representa el
número de reflectores utilizado, en este caso N
= 3.
20. Es muy simple, solo tenemos que conocer que pin es el
SDA y que pin es el SCL puesto que el GND todos lo
conocemos. Te dejo a continuación una lista de
diferentes modelos con los pines que corresponden a
cada señal.
● UNO, PRO MINI -> SDA = A4 y SCL = A5
● MEGA, DUE -> SDA = 20 y SCL = 21
● LEONARDO, YUN -> SDA = 2 y SCL = 3
● MKR1000 -> SDA = 11 y SCL = 12
23. Empecemos con el código del
master. El objetivo de la
aplicación es encender los
LEDs conectados a los pines 0,
1, 2, 3, 4 con un retardo de un
segundo.
24. El código del esclavo es diferente. Lo
primero que hay que destacar es
que tendremos un evento que se
disparará cuando reciba un dato del
dispositivo master. La primera parte
leerá un entero (int) y la segunda
parte leerá un carácter (char).
Dependiendo de si el carácter es H o
L pondrá en estado alto (H) o bajo
(L).