Vamos a experimentar con Arduino y comprobar su funcionamiento. El procedimiento a seguir en cada práctica es:
- Entender que vamos a hacer y leer la documentación de las instrucciones que se van a usar.
- Leer el código del sketch y tratar de entender lo que hace. No es necesario entender todo al 100% pero tenemos que intentar comprender lo que hace el programa según el enunciado.
- Copiar el sketch y cargarlo en Arduino
- Ejecutar el sketch y abrir el monitor serie. Comprobar cómo funciona.
- Hacer pequeños cambios en el sketch para cambiar el comportamiento y comprobar si cambia el comportamiento según lo esperado.
Leer una entrada digital
Leer el estado de la entrada digital 2 (pin 2) y mandar por el puerto serie su estado.
Explicación: http://www.arduino.cc/en/Tutorial/DigitalReadSerial
Instrucciones usadas:
- Serial.begin() http://www.arduino.cc/en/Serial/Begin
- pinMode() http://www.arduino.cc/en/Reference/PinMode
- digitalRead() http://www.arduino.cc/en/Reference/DigitalRead
- delay() http://www.arduino.cc/en/Reference/Delay
Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio04-DigitalReadSerial
Tabla ASCII
Escribir por el puerto serie la tabla ASCII con el carácter y su valor en decimal, hexadecimal, octal y binario.
Explicación: http://www.arduino.cc/en/Tutorial/ASCIITable y tabla ascii: http://www.asciitable.com/
Instrucciones usadas:
- Serial.print() http://www.arduino.cc/en/Serial/Print y ejecutar ejemplo.
- While http://www.arduino.cc/en/Reference/While
Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio06-ASCII
Regular la intensidad del built-in led
Regular la intensidad del led en función del valor que escribamos desde el monitor serie. Arduino va a leer los datos que recibe del puerto serie. A mayor valor más intensidad.
Instrucciones usadas:
- if http://www.arduino.cc/en/Reference/If
- Serial.available() http://www.arduino.cc/en/Serial/Available
- Serial.read() http://www.arduino.cc/en/Serial/Read
- analogWrite() http://www.arduino.cc/en/Reference/AnalogWrite
Código ejemplo sencillo: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio07-dimmer
Instrucciones usadas:
- String: http://www.arduino.cc/en/Reference/StringConstructor
- toInt(): http://www.arduino.cc/en/Reference/StringToInt
Código mejorado: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio07b-dimmer_mejorado
Leer una entrada analógica
Leer de una entrada analógica y sacar por el puerto serie el valor leído y también el voltaje que está leyendo. Luego escribir en el built-in led el valor correspondiente a lo leído.
Explicación: http://www.arduino.cc/en/Tutorial/AnalogReadSerial
Instrucciones usadas:
Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio11-Analog
Blink sin delay
Hacer el programa blink pero sin usar la instrucción delay() ya que su uso supone que no es posible hacer otra cosa durante el tiempo que dura el delay.
Explicación y código: http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Instrucciones usadas:
Otra opción usando librerías: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio19-BlinkSinDelay
Análisis de caracteres
Otro ejemplo más de lectura puerto serie: http://www.arduino.cc/en/Tutorial/CharacterAnalysis
Memoria Arduino
Medir el tiempo en milisegundos que tarda Arduino en leer de la memoria RAM un texto grande y luego escribirlo por el puerto serie y luego hacer lo mismo pero el texto está guardado en la memoria flash.
Al compilar fijarse en lo que ocupa la memoria dinámica.
Ver la macro F: https://www.arduino.cc/en/Reference/PROGMEM
Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Otros/velocidadMemoria
Más información sobre la memoria de Arduino en: https://aprendiendoarduino.wordpress.com/2015/03/29/memoria-flash-sram-y-eeprom/
EEPROM
Leer y borrar la EEPROM de nuestro Arduino.
Leer: https://www.arduino.cc/en/Reference/EEPROM
Código:
- https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio35-EEPROM/leeEEPROM
- https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio35-EEPROM/borraEEPROM
Más ejemplos de Arduino en los built-examples que están en el IDE y están documentados en: http://www.arduino.cc/en/Tutorial/BuiltInExamples
Uso de Arduino en I+D
Veamos un ejemplo de uso de Arduino en una empresa riojana para desarrollo de nuevos productos. Artículos aparecidos en prensa:
- http://www.ciclismoafondo.es/material/Noticias-material/articulo/Luck-zapatillas-ciclismo-medidor-de-potencia
- http://esmtb.com/27772/john-luck-se-une-al-centro-tecnologico-del-calzado-de-la-rioja/
- http://cyclingtips.com.au/2014/09/the-best-of-eurobike-2014-helmets-and-shoes/
Si analizamos los dispositivos que se ven en la imagen:
- El arduino que va montado y se ve en la foto, que vale 9.95$: https://www.sparkfun.com/products/11113
- El modulo bluetooth, que vale 34.95$: https://www.sparkfun.com/products/12580
- El sensor: https://www.sparkfun.com/products/10293, que vale 1.5$, posiblemente no sea este puesto que sería necesario un sensor con mucha más sensibilidad.
- El resto de elementos posiblemente sean para adaptar la señal del sensor piezo eléctrico y cargador de batería