Felix Maocho

Para quien le interese lo que a nosotros nos interesa

Arduino – Comunicaciones asíncronas, pines marcados como TX y RX


Por Félix Maocho
6/2/2016
Objetivo de este capítulo

Utilización de los pines TX y RX (marcados como 0 y 1), como puerto de comunicaciones asíncronas
Explicar que es un puerto serie y comunicaciones entre dispositivos
Conocimientos básicos cobre comunicaciones asíncronas, que son caracteres, codificación ASCII Unicode, codificación binaria, velocidad de conexión y forma de realizar la comunicación asíncrona y utilidad del módulo UART del procesador.
Velocidades de conexión a las que funciona Arduino
Uso de la conexion USB como puerto de comunicaciones asíncronas con el PC.
Enviar y recibir comunicaciones asíncronas

Material necesario

Pc
Cable de conexión de la tarjeta Arduino al PC
Tarjeta Arduino
Tarjeta protoboard o de prototipado
2 gomas elásticas (gomas para el pelo)
1 resistencia de 220 Ω
1 led
Varios cables de conexión macho/macho de diferentes colores

Comunicaciones de la tarjeta Arduino con otros aparatos.

Hay dos pines digitales, el 0 y el 1 que tienen a su lado otra marca RX el pin 0 y TX el pin 1, en el esquema de la tarjeta, los veran en la esquina superior derecha pintados de un verde un poco más obscuro que sus compañeros   ¿Que significan esas marcas?

Al igual que ocurre en los pines marcados con el símbolo ~  o , que aparte de ser pines digitalles mormales y corrientes, pueden configurarse como pines capaces de producir ondas de  pulsos con modulacion, l PWM (Pulse -width modulation), lo pines  0 y 1, además de ser pines digitales, con las misma capacidad de entrada y salida de cualquier otro pin digital, pueden configurarse para un uso diferente. En este caso, están preparados para enviar y recibir comunicaciones a otros aparatos, que por su parte son capaces de recibir y enviar el mismo tipo de comunicaciones. Convenientemente configurados al principio del programa, (en la función “setup”), estos pines pueden actuar como un puerto de serie.

Conviene por ello acostumbrase a no usar como digitales los pines 0 y 1 salvo caso de necesidad, pues si vamos a utilizar las comunicaciones asíncronas aunque lo hagamos por el cable USB Arduino lanza por estos pines las señales de comunicación. Sin embargo si nos faltan pines y no vamos a tener comunicaciones asíncronas podemos utilizarles normalmente.

¿Qué es un puerto de serie?

Es el nombre con que se da a los “puertos” o lugares que permiten enviar y recibir comunicaciones entre dos dispositivos. El funcionamiento es algo parecido a la comunicación por el antiguo telégrafo de Morse, un aparato donde un texto se transforma en impusos eléctricos que transportan una codificación, que el aparato receptor puede decodificar grabar en un soporte de papel, que alguien traduce a texto, y a su vez, el receptor puede mandar al origen, otras comunicaciones, estableciendose asi el diálogo entre ambos puntos.

Igual que en el aparato de Morse, podemos trasformar un texto, en vez de puntos y rayas como en el morse, en subidas y bajadas de tensión, que se trnsmiten por el pin TX (transmitir) ar un cable hasta otro aparato que las recibe en un pin RX (recibir), y utiliza esas subidas y bajadas de tensión para grabar  “ceros” o “unos” en una memoria que llamamos bufer de recepción, que posteriormente se leen y transforman nuevamente en el mensaje de texto que se envió.

Para que se pueda entenderse el mensaje trnsmitido, aparte de estar conectados simultáneamente aparatos capaces de enviar y recibir los impulsos, hay que guardar una serie de conveciones diferentes, es decir debe existir una norma de comunicación común.

  • La primera, es  ponerse de acuerdo en saber cundo se inicia el mensaje y cuando se acaba, en el Morse se sabe, porque hay en el papel del telegrama, un largo espacio en blanco, tanto al inicio, como al fin.
  • La segunda, es que este sincronizada la velocidad de emision y recepción. Si no fuera asi, en el Morse, la distancia entre puntos y rallas, sería o o muy amplia, con lo que se confundiría con los blancos de inicio y fin, o por el contrario, tan pequeña que el papel registre una linea continua. Ambos aparatos han de funcionar con una velocidad muy similar.
  • La tercera, es que la codificacion de las letras en impulsos sea conocida de moso s que si se quiere escribir SOS uno escriba “… — … “y el receptor sepa que se decodifica como SOS

Al pasar la comunicacion del Morse al mundo difital, difieren los medio utilizados pero no por ello cambian los problemas básicos.

  • Hay que declarar de alguna forma cual es el comienzo y el final de los textos, aqui seran impulsos vacíos al inicio y a final de cada ocho ondas de vltaje que se manden luego no ocuparan ocho ondas sino diez. 
  • Hay que ponerse de acuerdo a que velocidad se transmiie y recibe, la velocidad se mde aqui en baudios o bytes por segundo.
  • Hay que ponerse de acuerdo en la codificación y gerealmente sera la codificacion ASCII Unicode que tiene un determinado octeto de bytes para codificar, no solo letras y números sino otros muchos caracteres como estos  ¿ ^ ) & y tambien caracteres cirílicos, griegos, arabés, chinos, procedentes de la alquimia , la astrolgía, o como ◘♀♪ Todos estos caracteres tiene un octeto o sea una mexcl de ocho unos y ceros especifica. Si quieren lo pueden comprobar en la Wikipedia

Yo creo que con esto tiene suficiente teoría de lo que es una comunicación asíncrona, aunque claro está, la cosa en la realidad tiene mas complicación, pues puede haber ruidos parásitos en la linea y hay sistemas de control, que garantizan que la información que se ha recibida es correcta, o se vuelve a enviar y cosas parecidas, pero que como son hoy absolutamente trasparentes a nosotros como usuarios, lo vamos a dejar para los Ingenieros de telecomunicaciones que son los que tienen que lidiar ese toro.

Así pues pensemos que enviar un octeto es solo algo parecido al gráfico que pongo a continuación que es lo que se mandaría para enviar el octeto “11010011”  que segun wikipediaa es

 

comunicacion asincrona

La linea del reloj indica la velocidad en baudios y como es la misma para cada aparato cada onda corresponde a la transmision de un byte como ven hace falta 10 bytes para transmitir realmente ocho, que es una merma de un 20%  que es mas en la realidad por las tramsmisiones imrescindible para sincronizar los equipos y confirmar la calidad de los envíos. Como dig la realida es mas compleja pero lo que es preciso que nosotros comprendamos es bastante sencillo.

Pero para que se comuniquen en los dos sentidos los dos aparatos se necesitan dos pines, uno definido como de salida o OUPUT que envía sus señales a otro pin en el otro aparato definido de entrada o INPUT y viceversa, un pin definido como INPUT capaz de “escuchar” los impulsos que se le manden desde el transmisor. El pin 0, o RX, será el pin Receptor y el 1, o TX, será el Transmisor, y lógicamente el cable que los une ira cruzado de la TX a la RX y viceversa.

cable cruzado

Las tierras pueden esta unidas entre si o cada unoa unida a una tierra diferente eso no afecta lo que es i muy importante para las comunicaciones asíncronas res que el cable que parte de TX de un aparto acabe en el RX del otro y viceversa.

¿Que es UART?

Cuando hablan de comunicaciones asíncronas, es fácil oír la palabra UART, La UART (Universally Asynchronous Receiver/Transmitter) es una parte de muchos procesadores, especializada en la codificación de los datos en una secuencia de bits y en lo contrario, decodificar los bits y obtener los datos. Todas las tarjetas Arduino actuales tiene un módulo UART, por tanto pueden procesar sin dificultad los datos en secuencia de bits y viceversa liberándonos así de muchas molestias.

Esta forma de comunicación se llama comunicación asíncrona, pues no hace falta que ambos equipos estén simultáneamente alerta, aunque si conectados y encendidos. Como pasa en el Morse, en el que el telegrafista que recibe el telegrama, no hace falta que lo lea según llega ni siquiera hace falta que esté en ese momento , porque lo puede leer después en las transmisiones asíncronas, por ejemplo una tarjeta Arduino, transmite un mensaje cuando así se lo indique el la función “loop” en alguno punto del programa. El mensaje parte y se graba en “bufer de recepción” del destino, exactamente igual que ocurría en el Morse y cuando llegue el momento de leer esa memoria, el aparato leerá el contenido grabado y lo decodificara y si procede, mandara su respuesta, que el otro aparato leerá cuando se lo tenga previsto en su programa.

La comunicación es por ello asíncrona, a diferencia de otras que son asíncronas y que exigen que el receptor este atento a interpretar el mensaje según llega como ocurre en el teléfono. Si no hay alguien escuchado cuando el mensaje llega se pierde la comunicación.

Así pues y esto es importante, para poner en comunicación dos aparatos se precisa que ambos trabajen de la misma forma e incluso que funcionen con unas normas comunes para ambos, la velocidad de transmisión, el uso de la codificación ASCII Unicode, las convicciones de inicio y final de octeto, así cono otra muy importante que voltaje indica 0 y que voltaje indica 1. Todas esas normas condicionan las instrucciones que se dan al puerto de comunicación.

Como ya he comentado al hablar del telégrafo y el teléfono, la principal diferencia entre una comunicación sincronía y una asíncrona, es que la primera exige tener “en directo“ emisor y receptor, es decir que estén sincronizados ambos aparatos y la segunda no lo necesita. La comunicación asíncrona es más económica en medios, (y lógicamente más barato el equipo que precisa). La comunicación sincrónica, precisa de mas medios, pero admite mayor flujo de datos.

Para muchas cosas, la comunicación asíncrona será suficientemente rápida, pero para otras será insuficiente. Para enviar unas pocas cifras, por ejemplo, el peso que detecta una balanza, es más que suficiente, pero si lo que pretendemos comunicar, es una imagen, o un sonido, quizá no tenga la suficiente velocidad para ser práctica.

Cables sincronos o paralelos

Como cada vez los PC son mas rápidos y con aumenta la velocidad de las comunicaciones asíncronas, que poco a poco, van sustituyendo a las síncronas. Por ejemplo, lo que ven a la izquierda, es el cable que antes usaban las impresoras para  conectarse  a un PC . Cables gordos de muchos hilos y enchufes con muchos pines muy voluminosos, pues la conexión con el PC era antes síncrona, mientras que hoy, gracias al aumento de velocidad de los equipos, generalmente se conectan con un cable USB, que solo tiene en su interior cuatro cables, es decir hoy se conectan asíncronamente. Sin embargo para algunos usos, sigue siendo aun necesario conectar los aparatos con gruesas cintas de cables en paralelo porque aun necesitan una conexión síncrona.

Cables USB

El cable USB  lleva solo cuatro cables,

1, – De color rojo que lleva 5V para dar energía si lo precisa eal otro equipo, Es el que alimenta de corriente eletrica del PC a la tarjeta Arduino,

2 y 3. – De colores blanco y verde, son los cables para la comunicacion asincrona se cruzan en el interior del cable de modo que el RX conecta por el otro extremo con el TC y viceversa.

4 – es el cable de tierra o masa que suministra un equipo a otro en caso de necesidad como pasaba con el 5.V, los conectores sob de varios tipos pero estandarizados, pues poco a poco se construyen cada vez mas pequeños. .

En el mundo del PC, hay varias normas, Arduino y el PC utilizan las indicadas para los puertos USB, por eso el PC puede cargar el programa en Arduino y esas son las mismas que se utilizan en los pines RX y TX que es el uso del ASCII Unicode, los voltajes que significan cero y uno, son 0 y 5V y la velocidad de transferencia es una entre varias posibles, pero hay otros equipos que utilizan otras normas que son diferentes a las USB

Los más conocidos aparte de las USB ,que utiliza Arduino, son las RS-232 que utilizaban antiguamente los ratones del PC el RS-485, I2C, SPI, Serial Ata, Pcie Express, Ethernet o FireWire, entre otras y las de comunicaciones inalámbricos bluetooth, wifi, infrarrojos etc. Especial estos últimos sistemas de comunicación inalambricos muy utilizados en proyectos con Arduino por ser muy adecuados para comunicaciones en robótica, domótica o IOT (Internet de las cosas).

Como es lógico, sólo pueden ponerse en comunicación directa equipos que utilizan protocolos iguales y habrá que arbitrar la forma de traducir un protocolo a otro si son diferentes mediante algún sistema intermedio que los traduzca. Por ejemplo hay componentes especiales que traducen las comunicaciones asíncronas en infrarrojas, para poder controlar un robot hecho con Arduino, con un mando parecido a los de la televisión.

Las placas Arduino UNO y Mini Pro disponen de una sola unidad UART. Otras placas más potentes como Arduino Mega y Arduino Due pueden tener varias comunicaciones asíncronas simultánea, lo que les permite relacionarse con varias maquinas diferentes, algo por ejemplo muy útil, para hacer trabajar equipos en red.

La diferentes velocidades en que se puede operar con las normas USB son 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, y 115200 baudios/segundo. Lo habitual para conectar con el PC son 9600, velocidad media que no suele dar problemas como las muy rápidas y que salvo excepciones, que lo justifiquen es la que se acostumbra a utilizar, aunque la tendencia a futuro es aumentar la velocidad a medida que los equipos sean mas eficientes para así mandar más información en menos tiempo.

Prácticas de comunicación asincrona

En principio para probar esta comunicación, precisaríamos dos aparatos con puerto serie, por ejemplo dos tarjetas Arduino, pero como no los tenemos no podemos probar los pines TX y RX, pero si podemos probar la la comunicación asíncrona, porque a Arduino se conecta con el PC a través del cable USB, que permite una conexión asíncrona, no olvidemos que USB son las iniciales de Universal Serial Bus y que por ese cable es por el que se cargan los programas en la tarjeta, por tanto es evidente que la comunicación existe.

El funcionamiento de los pines RX y TX , (o 0 y 1). han de creerse, (de momento), como un dogma, no lo podemos demostrar, Pero el mecanismo de enviar y recibir información entre dos equipos, es decir la comunicación asíncrona, que habría en esos dos pines si estuvieran debidamente conectados, si la podemos probar e incluso ver en el PC pues vía cable USB la recibiremos en nuestro PC.

Por ello sin más demora vamos a crear un programa que genere una sucesión de números que envíe mediante la comunicación asíncrona al PC de modo que lo podamos comprobar en la pantalla del PC.

Transmitir información asíncrona

Como hardware solo necesitamos nuestra tarjeta Arduino, el cable de conexión al PC y el propio PC pues lo que ocurra dentro de Arduino no se va a reflejar en ningún led o componente electrónico, sino en la misma pantalla del ordenadores

El software será como sigue:

prueba conunicaciones transmision

Mandatos que hemos utilizado:

Serial.begin

Configura en la tarjeta el puerto serie y fija la velocidad en baudios de funcionamiento de la tarjeta. Su sintaxis es

Serial.begin(velocidad)

Donde velocidad sera el numero en baudios o bytes por segundo de la transmisión, que puede ser una de las velocidades soportadas por los aparatos, (al menos teóricamente). La comunicación asíncrona que debe ser igual en el aparato receptor y el emisor, este mandato es la que los sincroniza. Los valores que Arduino soporta son 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, y 115200 baudios/segundo. La velocidad típica y por defecto de un PC son 9600 baudios. por lo que pondremos a Arduino  a trabajar también a 9600, aunque otras velocidades pueden ser soportadas.si ponenmos tarjeta y Pc a la misma velocidad

Serial.print y Serial,println

Son dos mandatos semejantes en todo, que cargan unos caracteres situados entre paréntesis en la UART, dispositivo especializado en transformarlos en octetos y transmitirlos como impulsos eléctricos que en a Tarjeta Arduino UNO son emitidos simultáneamente por el pin TX, y el cable USB, por tanto utiliza el pin 1 como digital no es compatible como la comunicación serial,

La única diferencia entre Serial.print y Serial,println es que el segundo al acabar de transmitir su mensaje, añade automáticamente un carácter de linea nueva (ln), con lo que el receptor sabe que el resto de lo que se le comunique, se debe escribir al comienzo ¡de la siguiente linea, o lo que es equivalete, a enviar un código de car retourn /r avanza línea /l, que facilita la comprensión. La diferencia es parecida a la que hay escribiendo entre el “punto” y el “punto y aparte”

Su sintaxis es

Serial.print(mensaje) y Serial.prinln(mensaje)

Ssegún el contenido que tenga el mensaje, la unidad UART, actuará de diferente forma:

Si se envía una cadena de caracteres, situada entre comillas por ejemplo en nuestro caso “Contador: “, enviara la palabra “Contador” seguida de “: ” tal como se le indica en el mensaje, pero no envía las comillas de inicio y fin. Si no hay comillas asume que es una variable o parámetros definido previamente, y en ese caso enviara el contenido de la variable o parámetro que en ese momento de la ejecución del programa tenga la variable, según el siguiente convenio.

Si se envía algo entre comillas, asume que se quiere enviar de forma literal

Serial.print ( “N”) da “N”

Serial.print ( “Hola mundo”) da “Hola mundo”

Conviene eludir incluir dentro del mensaje para no confundir a la máquina. Se puede utilizar como comillas, por ejemplo el carácter u otro cualquiera y sustituirlo posteriormente mediante programación por por comillas si se considera imprescindible.

Si se envía un textoo sin comillas, si es un número lo considera como tal  si son letras lo considera una variable con valor , y emite el valor que en ese momento tuviera la variable

Serial.print (78) da “78”

Si se envía un número con varios decimales, por defecto envía sólo los dos primeros decimales

Serial.print (1,23456) da “1,23”

Opcionalmente esta sintaxis admite un segundo parámetro que indique la naturaleza del mensaje que se manda, Los valores permitidos son BIN (binario o de base 2), OCT (octal o base 8), DEC (decimal o en base 10), HEX (hexadecimal, o base 16). Para los números de punto flotante, este parámetro especifica el número de decimales a utilizar.

Por ejemplo, el caso anterior de un número decimal en el que queremos enviar redondeando a 4 decimales, el parámetro opcional sería 4 :

Serial.println (1,23456, 4) da “1.2346”

Los otros paramentos son menos usados y tiene la ventaja de utilizar la UART para codificar de diferentes formas distintos números sin necesidad de programación adicional así por ejemplo si mandamos el numero 78 o una variable que adquiere ese valor según lo que indique el segundo parámetro, recibiremos los siguientes valores Los otros paramentos son menos usados y tiene la ventaja de utilizar la UART para codificar de diferentes formas distintos números sin necesidad de programación adicional así por ejemplo si mandamos el numero 78 o una variable que adquiere ese valor según lo que indique el segundo parámetro, recibiremos los siguen tes valores:

Serial.print (78, BIN) da “1001110”

Serial.print (78, OCT) da “116”

Serial.print (78, DEC) da “78”

Serial.print (78, HEX) da “4E”

En nuestro PC entre los programas que hemos descargado de Arduino, tenemos la opción “Monitorización de Puerto Serie”, que posibilita la visualización de datos procedentes de la tarjeta.

Esta opción abre en la pantalla del Pc una pantalla tal como esta

o como esta otra dependiendo de la Relise que tengas de los programas de a Arduino

En cualquier caso en la barra superior a la derecha hay un sitio que pone algo así como Monitor Serial. Pinchando ahí entramos en una pantalla, el Monitor de Puerto Serie, una utilidad que viene en lo que bajamos al PC, el IDE Standard, que nos permite enviar y recibir información a través del puerto serie.

Su uso es muy sencillo, y dispone de dos zonas, una que muestra los datos recibidos, y otra para enviarlos. Hay en Internet otras pantallas mas cómodas y sofisticadas para seguir las comunicaciones asíncronas como HyperTerminal (para Windows) -Enlace o ZTerm (para Mac)-XXXX- Linux-Enlace, etc. , pero a mi juicio, pese a su sencillez, (o quizá debido a ello), este monitor estándar, es más que suficiente para comenzar, y con toda seguridad par rasá una larga temporada sin que notes que “se te queda pequeña”.

En esta pantalla, en la esquina inferior izquierda veremos la velocidad en que trabaja el PC. en nuestro caso 57600 Baudios y hay formas sencillas de poderlo modificar, en este caso bata desplegar el menú de las velocidades y elegir la que queramos, pero por defecto, la velocidad que viene es 9600 baudios y mi consejo es utilizarla, si no hay razón de mayor peso que aconseje lo contrario. En cualquier caso, la velocidad seleccionada, debe coincidir con el valor que hemos definido en el programa y a través del comando Serial.begin().

En esta pantalla veremos llegar los datos que nos envíe la tarjeta y cada vez que lleguen datos de un mandato Seria,printl, los siguientes datos aparecerán a la izquierda en una linea inferior.

Recibir información asíncrona

Del mismo modo la tarjeta Arduino puede recibir información de otros equipos, En nuestro caso vamos a utilizar como emisor el PC. Vamos para ello a montar el hardware que muestre que la tarjeta actúa de forma diferentes según la información que le envía el ordenador. Para ello a través del puerto de serie vamos a enviar un carácter a la tarjeta Arduino En caso de enviar ‘1’ se apagara un LED y transite la palabra OFF , y en caso de enviar ‘2’ se enciende y transmite ON.

Como hardware aparte de necesitar nuestra tarjeta Arduino, el cable de conexión al PC y el propio PC añadiremos un circuito con una resistencia de 220 Ω y un led como tantas veces hemos hecho, y las famosas dos gomitas para sostener la tarjeta sobre la placa protoboard..

comunicaciones asincronas_bb

Una vez más quiero resaltar la gran ventaja que tiene los aparatos digitales sobre los necánicos, con solo cambiar el software que los maneja, sin necesidad de modificar físicamente nada podemos utilizar un mismo Hardare con diferentes usos. o bien como ocurre en el mundo real mejorar el funcionamiento de equipos ya construidos con d solo cambiar su programación al go que suele llamarse actualizar el firmware 

comunicaciones asincronas recepcion (2)

Este ejemplo hay transmisión en los dos sentidos, el PC envía el carácter que condiciona el funcionamiento de la tarjeta y la tarjeta responde con la acción que ha intentando hacer y que en algunos casos no será posible, porque intente encender una led ya encendido o viceversa. Pero en cualquier caso, informa del intento al PC Un ejemplo sencillo de que comunicación en los dos sentidos en un mismo programa.

Mandatos que hemos utilizado:

Serial.available

Informa del número de caracteres disponibles para su lectura desde el puerto serie. Los datos recibidos se almacenan en un bufer (memoria) de recepción que tiene una capacidad máxima de 64 caracteres. Este mandato nos dice el número que han llegado en el presente envío. La sintaxis es

Serial.available()

Serial.read

Lee el contenido del bufer de recepción, lo que haya transmitido el otro equipo en su última emisión. Lo envía a la unidad UART que lo decodifica y lo edeposita en una variable La sintaxis es

Serial.read()

Como pueden ver, el manejo de la comunicación asíncrono no plantea ningún tipo de dificultad y potencia increíblemente la capacidad de control de Arduino.

Uso de las comunicaciones asíncronas para poner a puntos programas

Una de los usos más típicos de esta comunicación es en la fase de poner a punto un programa, Cuando un programa es un poco enrevesado, puede haber errores que sea difíciles de localizar en que punto del programa se producen, porque por algún pequeño defecto, como por ejemplo haber puesto mal los corchetes de inicio final de las funciones tipo “if” hacen que el programa actúe de forma imprevista. En estos casos, resulta útil colocar en lugares estratégicos mandatos que carguen el valor de las variables en esos puntos y los manden al PC para analizar si están adquiriendo o no el valor previsto.

Uso como fuente de captura de datos para ser utilizados en un PC

Otra uso habitual es recibir información en el PC de aquellos valores que queremos conservar y elaborar, como por ejemplo hacer gráficas de temperaturas que se alcanzan en algún proceso industrial, bien como control de calidad, bien simplemente para controlar el proceso. Por ejemplo coordinando el ángulo de giro de una plataforma rotatoria y la altura de un sensor de distancias, podemos hacer un scanner de tres dimensiones e ir enviando esas medidas a un Pc, para construir la imagen tridimensional de los objetos puestos en estudio.

Uso como sistema de control

Igualmente a través de las comunicaciones asíncronas podemos controlar los aparatos que construyamos, por ejemplo dirigir un robot o mandar poner en marcha un sistema de riego a través de Internet desde cualquier punto del mundo.

Us como sincrnizador de aoaratos 

Un último uso es para sincronizar el funcionamiento de varias tarjetas Arduino, a través de instrucciones pasadas por sus comunicaciones pueden trabajar sincronizadamente. Supongamos que tenemos que poner semáforos a una plaza donde desembocan muchas calles, en cada cruce habrá un semáforo que controlara el paso por ese sitio, eso es algo que puede hacer con facilidad un tarjeta de Arduino, pero no podría controlar seis cruces a la vez. Lo que si es posible es colocar en cada cruce un semáforo controlado por una tarjeta de Arduino y sincronizarlas todas ellas, a través de mensajes que se mandan.

Nota: Hay que dejar tiempos de espera entre los envíos de datos para ambos sentidos, ya que se puede saturar o colapsar la transmisión. El bufer de recepción tiene 64k mas que suficiente en condiciones normales pero como todo tiene un límite.

Practicas. 

Como siempre aconsejo prcticar  ey esperimentar. Utilizando el último ejemplo se pueden añadir varios leed y  hacer encender y apagar  los leed desde el PC, hacer pruebas de transmitir en ambas direcciones diferentes mensajes, cambiando el tipo de de mensajes, numeros, cadenas de símbolos, variables on valores decimales, etc. as.i como los segundos paraámetros.

Resumen de mandatos utilizados

Resumimos las funciones y mandatos de Arduino que hemos utilizado. De no entender el funcionamiento o la sintaxis de alguna buscarla en el Manual en español en PDF

Documentación

Párrafo /* ………. */
Comentario // …………

Declaración de variables y parámetros

Declaración de numero entero int parva = valor

Ciclo de trabajo de Arduino

Función Setup que solo se ejecuta al incoo del programa void setup() { ……….}
Función Loop que se repite indefinidamente void loop() { ……………….}

Mandatos en la función setup

Definir la velocidad de transmision de la targeta Serial.begin(velocidad)
Definir pin como salida pinMode(salida, OUTPUT)

Mandatos en la función loop

Abrir un pin digital digitalWrite(pin, HIGH)
Cerrar un pin digital digitalWrite(pin, LOW)
Condicional if if variable = valor {….}
Everiguar longitud del contenido del bufer de recepcion Serial.available()
Transmitir mensaje Serial.print(mensaje)
Trmasmitir mensaje y cambiar de linea Serial.println(mesaje)
Leer el buffer de recepción mensaje=Serial.read()
Pausa delay(tiempo)
Incrementar una viable var = var +1

 

Félix Maocho

 

indice

Anuncios

6 febrero 2016 - Posted by | Robotica | , , ,

2 comentarios »

  1. Brutal el post!! He disfrutado leyendolo y acordandome de mis estudios de electronica. Gracias

    Comentario por lluismanuelg | 6 febrero 2016 | Responder

    • Como soy muy optimista, tomo lo de “brutal” como un elogio, así que muchas gracias. Como veo que del tema sabes con seguridad mucho más que yo, que nunca estudie electrónica, si ves un error, (o varios), no dudes en comunicarlo. Saludos y te aconsejo experimentar con Arduino, es muy barato y produce muchas horas de intenso ocio.

      Comentario por felixmaocho | 6 febrero 2016 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: