To allow our devices to be aware of their surroundings we use sensors that translate the information of the enviroment in electric signals. This signals are normally analog, and because the electronic systems (mostly microcontrollers) we use to process this information and take descitions live mostly in digital world we need to translate analog values in digital ones.
To express or actuate in the real world our devices need to do the oposite: convert our digital information in analog outputs (leds, motors, etc)
Our world is analog, it has an infinite number of values for light, sound, etc.
Digital signals are finite, depending on the resolution we use we have more or less values.
Ploting signals against time let us understand them
Digital binary signals only have two posible values:
Analog signal plots are smooth:
Digitaly encoded signals are discrete representation of analog values with step that vary their size depending on the resolution:
Depending on the amount of bits we use we have a more precise curve.
Arduino analogRead function.
ADC resolution: Arduino uno 10 bits -> 1024 different values.
Converting digital value to a voltage:
digital value | voltage | formula |
---|---|---|
1023 | 5v | 5 / (1023/1023) |
512 | 2.5v | 5 / (1023/512) |
256 | 1.25v | 5 / (1023/256) |
128 | 0.625 | 5 / (1023/128) |
Como el Arduino sólo puede tener dos valores posibles como outputs (LOW y HIGH) la única manera de emitir un valor análogo es alternar la salida entre LOW y HIGH a una velocidad suficientemente alta como para que no alcancemos a ver los cambios, y lo que vemos es el promedio de los dos valores.
Leyendo un potenciometro con analogRead()
Explicar el uso del Arduino Serial Monitor y Serial Plotter
Usar PWM para hacer fade con un led utilizando la función analogWrite
Introducción a conceptos de Sensores.
Light dependant resistor
Microphone
Capacitive sensors
¿Que es una librería?
Instalación en Arduino IDE de la librería Capacitive Sensor
Circuito con una resistencia de 1M
Ultrasonic sensor
Some Music
Piano con Comunicación Serial por USB
Servomotores
Addressable leds
Adafruit Uber Guide
Instalar la librería Neopixel
Para probar se puede cargar el ejemplo Strandtest de la librería de Neopixel. Solamente hay que modificar el Pin al que conectamos los datos de los leds y el numero de leds que vamos a controlar.
Para calcular la energía total que le debemos proveer al nuestra tira de leds tenemos que calcular 20mAh x led:
300 leds = 300 x 20mAh = 6000mAh = 6 Amperios
El arduino puede proveer por el pin de 5v 500mAh, esto quiere decir que podemos darle energía a alrededor de 25 leds sin tener problemas.
Ejemplo para la tira completa con un led moviendose a lo largo.
Introducción a las comunicaciones digitales Capas de redes, protocolos, encripción.
Internal arduino functions
Herramientas en programación
Alto y bajo nivel
Compilados e interpretados
Un Algoritmo es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.
Ejemplo de un algoritmo para prender o apagar la calefaccion con base en la temperatura y la presencia de personas.
Ejercicio
Dibujar el diagrama de flujo y escribir el código: