09-01-2014, 09:06 PM
Buenas tardes,
Se me han roto los dimmer con los que regulaba la iluminación de mi sótano y he decidido hacer unos con arduino y la ayuda de txapuzas (http://txapuzas.blogspot.com.es/2009/12/...ia-de.html)
Primero vamos a centrarnos en el Arduino (Con el que es mi primer contacto).
Os explico brevemente cómo funcionaban y quiero que funcione por arduino (seguro que es posible):
- Pulsación corta: Apaga/Enciende las luces (recordando la intensidad a la que estaban cuando apagamos)
- Pulsación larga: Regula la intensidad; si está al máximo brillo, atenúa y si está al mínimo, aumenta el brillo. Si está en un valor intermedio de brillo, la primera vez que mantenemos pulsado empieza a aumentar y si soltamos y volvemos a dejar pulsado, atenúa la sala.
-Ya que usamos arduino, me gustaría dejarlo preparado para controlarlo remotamente y ver el estado de las salidas también.
He empezado mezclando algo de los ejemplos del IDE y he conseguido esto:
Aunque estoy a años luz, con un pulsador ya enciendo un LED y muestro por serial el estado de la pulsación. :aplauso:
Seguramente todo este código haya que cambiarlo, pero poco a poco...
Primeras dudas:
-¿Por qué necesito conectar una resistencia de 10K a gnd para que funcione? Si no lo hago, ayer se mantenía el estado en pulsado como 5 segundos más, y hoy, si suelto la resistencia, el LED parpadea como loco.
Problemas detectados:
-Con el delay a 30ms, cuando pulso el botón, el arduino hace 3 o 4 ciclos, con lo que en principio es complicado distinguir entre pulsación corta/larga. Sin tener ni idea, ¿tendré que usar milis? Le daré una pensada, a ver qué se me ocurre/investigo...
Seguiré actualizando. Gracias y perdón por el tocho.... :dale2:
Se me han roto los dimmer con los que regulaba la iluminación de mi sótano y he decidido hacer unos con arduino y la ayuda de txapuzas (http://txapuzas.blogspot.com.es/2009/12/...ia-de.html)
Primero vamos a centrarnos en el Arduino (Con el que es mi primer contacto).
Os explico brevemente cómo funcionaban y quiero que funcione por arduino (seguro que es posible):
- Pulsación corta: Apaga/Enciende las luces (recordando la intensidad a la que estaban cuando apagamos)
- Pulsación larga: Regula la intensidad; si está al máximo brillo, atenúa y si está al mínimo, aumenta el brillo. Si está en un valor intermedio de brillo, la primera vez que mantenemos pulsado empieza a aumentar y si soltamos y volvemos a dejar pulsado, atenúa la sala.
-Ya que usamos arduino, me gustaría dejarlo preparado para controlarlo remotamente y ver el estado de las salidas también.
He empezado mezclando algo de los ejemplos del IDE y he conseguido esto:
Código:
/*
The circuit:
* LED from pin 11 to ground
* pushbutton to pin 2 from +5V
* 10K resistor to pin 2 from ground
*/
const int Pulsador = 2; // Pulsador
const int Salida = 11; // Salida 0-5v
int buttonState = 0; // Variable para leer el estado del pulsador
int Brillo = 0; // Cantidad de Salida 0-255
int Intervalo = 5; // Intervalos de aumento/reducción
int Velocidad = 30; // Velocidad de efecto
void setup() {
// Configuramos el pin Salida como salida.
pinMode(Salida, OUTPUT);
// Configuramos el pin Pulsador como entrada.
pinMode(Pulsador, INPUT);
// Inicializamos el puerto serial.
Serial.begin(9600);
}
void loop(){
// Leemos el estado del pulsador
buttonState = digitalRead(Pulsador);
// Comprobamos el estado del pulsador
if (buttonState == HIGH) {
digitalWrite(Salida, HIGH);
Serial.println("Press");
}
else {
digitalWrite(Salida, LOW);
Serial.println(buttonState);
}
delay(Velocidad);
}
Aunque estoy a años luz, con un pulsador ya enciendo un LED y muestro por serial el estado de la pulsación. :aplauso:
Seguramente todo este código haya que cambiarlo, pero poco a poco...
Primeras dudas:
-¿Por qué necesito conectar una resistencia de 10K a gnd para que funcione? Si no lo hago, ayer se mantenía el estado en pulsado como 5 segundos más, y hoy, si suelto la resistencia, el LED parpadea como loco.
Problemas detectados:
-Con el delay a 30ms, cuando pulso el botón, el arduino hace 3 o 4 ciclos, con lo que en principio es complicado distinguir entre pulsación corta/larga. Sin tener ni idea, ¿tendré que usar milis? Le daré una pensada, a ver qué se me ocurre/investigo...
Seguiré actualizando. Gracias y perdón por el tocho.... :dale2: