Roman Ljubimov, 2017
Contenido
2 opciones
Web Editor (Create)
siempre actualizado, nuestros programas en la nube, más lento
el de toda la vida, instalado o como archivo portátil
void setup() {
// Esto sólo se ejecutará una vez
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// Todo lo que esté dentro de loop se repetirá indefinidamente
int sensorValue = analogRead(A0);
delay(1);
digitalWrite(LED_BUILTIN, HIGH); // enciende el LED (5v)
delay(sensorValue); // espera
digitalWrite(LED_BUILTIN, LOW); // apaga el LED (0v)
delay(sensorValue);
}
Los LED apenas tienen resistencia interna y por tanto es necesario añadir una resistencia en serie que en este caso es de 330 ohmios. Más adelante veremos cómo se hace el cálculo.
+
-
La diferencia de potencial (Voltios) equivale a la diferencia de altura.
La Intensidad de corriente (Amperios) equivale al caudal.
La Resistencia (Ohmios, Ω) equivale al ancho del tubo.
Arduino Uno trabaja a 5V
Sus salidas proporcionan hasta 40mA cada una (recomendado 20mA)
Cortocircuito: cuando la resistencia es nula, la corriente se dispara
Para dos resistencias en paralelo:
El display del kit es un 5611AS de cátodo común o un 5611BS-8 de ánodo común.
Los pines 3 y 8 son del cátodo o ánodo común. Basta con conectar uno de ellos a tierra (cátodo) o a 5v (ánodo).
Es recomendable usar una resistencia en serie con cada pin no común para proteger los LEDs de sobrecargas.
Usaremos un divisor de tensión en el que una de las resistencias es el sensor
Es común añadir un pequeño retardo después de hacer una lectura con analogRead() para esperar a la conversión (<1ms)
analogWrite(pin, dutyCycle);
dutyCycle es un valor entre 0 y 255
pin es uno de los pins PWM: 3, 5, 6, 9, 10 o 11
El componente que viene en el kit tiene resistencias incluidas así que no hace falta añadírselas.
Es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.
Límites de voltaje
El Arduino trabaja a 5V y la corriente que se recomienda usar en los pines es de 20mA
Alimentado via USB: puede proporcionar hasta 500mA
Con fuente externa: hasta 1A
Cada pin de I/O: 40mA
Suma de todos los I/O combinados (corriente suministrada y absorbida): 200mA
Pin de 3.3v: 50mA
Límites de corriente
Cuidado con el dibujo del transistor que engaña
El componente incluye todo esto y un diodo para evitar sobrecargas
Para dar una vuelta completa haría falta dar 360/5.625 x 64 = 4096 pasos
PASO | BOBINA 1 | BOBINA 2 | BOBINA 3 | BOBINA 4 |
---|---|---|---|---|
1 | 1 | 1 | 0 | 0 |
2 | 0 | 1 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 1 | 0 | 0 | 1 |
Normal
Wave
Half
Se puede usar el motor 28BYJ-48 como bipolar simplemente no usando el cable rojo.
BIPOLAR | UNIPOLAR |
---|---|
Mayor torque Mayor anclaje debido a los embobinados Más pequeño Más barato Un control más complicado, el cual requiere de una tarjeta que incluya etapas de control de giro y potencia |
Menor torque Menor anclaje Tiene un mayor volumen Más caro Un control más sencillo al requerir solamente completar un circuito de alimentación |
Usaremos el doble H-Bridge L293D para gobernar las dos bobinas del motor
El Arduino UNO puede definir dos interrupciones hardware llamadas 0 y 1, conectadas a los pines 2 y 3
LOW: la interrupción se dispara cuando el pin es LOW.
CHANGE: cuando pase de HIGH a LOW o viceversa.
RISING: flanco de subida (Cuando pasa de LOW a HIGH).
FALLING: flanco de bajada (Cuando pasa de HIGH a LOW).
attachInterrupt(interrupt, ISR, mode);
Permiten interrumpir el programa para atender un evento lo más rápido posible.
Usaremos la librería IRLremote de Nico Hood disponible desde el gestor de librerías.
Los comandos recibidos están en hexadecimal y tendrán que ser mapeados a acciones.
Decimal | Hexadecimal | Binario |
---|---|---|
base 10 | base 16 | base 2 |
0,1,2,3,4,5,6,7,8,9 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (o minúsculas) | 0,1 |
255 | 0xFF | B11111111 |
0 | 0x00 | B00000000 |
127 | 0x0F | B00001111 |
16 | 0x10 | B00010000 |
A4
A5
LM35: Sensor de temperatura
Una de las librerías más potentes para generar sonidos o reproducir audio con Arduino
sudo modprobe snd-virmidi
Arduino
Sensores
Hairless MIDI
Loop MIDI
Sintetizador VN-1
PC
V
Serie
MIDI
Ejemplo de URL que devuelve datos del tiempo:
http://api.openweathermap.org/data/2.5/weather?q=bilbao&appid=xxxxx
query
Respuesta del servidor (embellecida):
{
"coord": {
"lon": -2.93,
"lat": 43.26
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 26.46,
"pressure": 1024,
"humidity": 51,
"temp_min": 26,
"temp_max": 27
},
"visibility": 10000,
"wind": {
"speed": 0.78,
"deg": 283.003
},
"clouds": {
"all": 0
},
"dt": 1494932400,
"sys": {
"type": 1,
"id": 5468,
"message": 0.0329,
"country": "ES",
"sunrise": 1494909973,
"sunset": 1494963037
},
"id": 3128026,
"name": "Bilbao",
"cod": 200
}
Para usar cualquier API, hace falta crear un usuario con una clave de aplicación
También existen plataformas que simplifican el trabajo con las APIs, como por ejemplo Temboo.