Día 6 del curso Aprendiendo Arduino. Comunicación Serie.
Este sexto día de curso empezamos conociendo a fondo la memoria de Arduino y pasamos a la comunicación serie, elemento muy importante para manejar Arduino.
3.9 – Funciones definidas por usuario
4.2 – Memoria Flash, SRAM y EEPROM
2 comentarios en «Día 6. Comunicación Serie»
Puntos a revisar del día anterior:
* Ejercicio de calibración, uso de los operadores de control, como depurar un código y al comprar sensores hay que ver sus características y adaptar la señal para que Arduino la pueda manejar.
* Funciones definidas por usuario. Para aclarar los conceptos descargar https://github.com/cosmopaco/ArduinoDomoticExcontrol, al menos uno de los .ino debe tener el mismo nombre que que el directorio, pero las funciones setup() y loop() pueden estar en cualquier fichero, incluso en los .h llamados.
Desde las nuevas versiones del IDE, ya no es necesario añadir en los .h la instrucción #include “Arduino.h”
* Software para visualizar dependencias de ficheros:
– C/C++ Depedency Graphing: https://www.flourish.org/cinclude2dot/
– Sourcenav: http://sourcenav.sourceforge.net/ (no reconoce los fichero .ino)
– Boosdependency: http://www.meetingcpp.com/index.php/br/items/boost-dependency-analyzer.html
– Include Manager: http://www.profactor.co.uk/includemanager.php (de pago)
– Cpp depend: http://www.cppdepend.com/ (de pago)
* Puntos interesantes de EXcontrol:
– Las funciones setup() y loop() están en Common_functions.h
– La función setDateDs1307() guarda la hora en un RTC DS1307 vía I2C
– En setup() llama a las funciones para inicializar los periféricos. Ver directivas de preprocesamiento. Y también define un userSetup()
– En Loop() ejecuta cada segundo una función llamada LoopNewSecond() que es una temporización y luego un SystemLoop() que son funciones más críticas y este llama a UserLoop()
– Función RecepcionPaqueteUDP(), tiene muchos if encadenados para comprobar el paquete recibido con la función strncmp. Usan la variable packetBuffer para almacenar lo recibido por red.
– Función ComproRespuestaHTTP(), funciona igual que el serie
– Los ficheros .ino solo hacen los include de las librerías, declaraciones de variables y algunas funciones generales y definiciones de constantes
– En Excontrol_def.h define las constantes principales
* El compilador de avr-gcc cuando detecta lineas iguales de Serial.print() no aumenta la memoria del static data porque lo reconoce y la guarda una sola vez en RAM y la repite al llamarla.
* Para saber más de la comunicación serie ver http://perso.wanadoo.es/pictob/comserie.htm
* Codificación Manchester: https://es.wikipedia.org/wiki/Codificaci%C3%B3n_Manchester
* Librerías para simular multitarea:
– https://github.com/ivanseidel/ArduinoThread
– https://github.com/jlamothe/mthread
* Protothreads: http://dunkels.com/adam/pt/ y librería https://github.com/justone/arduino-smoker/tree/master/arduino/libraries/protothreads
Mañana para mover el motor DC traer pila 9V 6F22 o similar.
También es posible con un alimentador de 9V para Arduino