miércoles, 28 de noviembre de 2007

Programación arduino,para hacer que un discman lo controle un microcontrolador atmega8 por medio de sensores de agua y de luz

Programación:


/*
* Lee swiche de agua y determina dos posibilidades: con o sin agua
* Lee fotocelda y determina 3 umbrales de luz: soleado, nublado y noche
* Elige una canción
*
*/
int FotoPin = 0; // selecciona el pin análogo para leer la fotocelda // there are six to choose from:PC0-PC5
int ledPin = 13; // selecciona el pin para encender LED
int val_luz = 0; // variable to store the value coming from the light sensor
int AguaPin = 4; // lee el switch que va a estar con o sin agua
int led_agua = 8; // se enciende cuando recibe agua
int val_agua = 0; // declara una variable para medir el estado del switch (agua o no agua)
int play_pin = 2; // pin que controla el play del cd
int stop_pin = 3; // pin que controla el stop del cd
void setup() {
pinMode(ledPin, OUTPUT); // declara el ledPin como SALIDA
pinMode(led_agua, OUTPUT); // declara el led_agua como SALIDA
pinMode(AguaPin, INPUT); // declara el AguaPin como ENTRADA
Serial.begin(9600); // inicia la comunicación serial
}
void loop() {
val_agua = digitalRead(AguaPin); // variable que toma el estado del AguaPin
if (val_agua == HIGH){ // si hay agua
//digitalWrite(led_agua, HIGH); // se enciende el led

val_luz = analogRead(FotoPin); // read the value from the sensor
if (val_luz > 1000){ // valor del umbral
//digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000); // espera 5 minutos
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (180000);
//digitalWrite(ledPin, LOW); // apaga el led
}
if (val_luz > 500){ // valor del umbral
//digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000); // espera 5 minutos
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (60000); // espera 5 minutos
digitalWrite(ledPin, LOW); // apaga el led
}
if (val_luz > 200){ // valor del umbral
digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000); // espera 5 minutos
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (6009000); // espera 5 minutos
//digitalWrite(ledPin, LOW); // apaga el led
}
}
else{
val_luz = analogRead(FotoPin); // read the value from the sensor
if (val_luz > 800){ // valor del umbral
//digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (40000); // espera 5 minutos
//digitalWrite(ledPin, LOW); // apaga el led
}
if (val_luz > 500){ // valor del umbral
//digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (5450000); // espera 5 minutos
//digitalWrite(ledPin, LOW); // apaga el led
}
if (val_luz > 200){ // valor del umbral
//digitalWrite(ledPin, HIGH); // enciende led que indica el comienzo de una canción
digitalWrite(stop_pin, HIGH); // activa el stop del cd
delay (500);
digitalWrite(stop_pin, LOW); // activa el stop del cd
delay (500); // espera medio segundo
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (1000);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW);
digitalWrite(play_pin, HIGH); // activa el stop del cd
delay (1000); // espera un segundo
digitalWrite(play_pin, LOW); // pone el pin en low para que el cd no se quede en "fastfoward"
delay (2400000); // espera 5 minutos
//digitalWrite(ledPin, LOW); // apaga el led
}
}
Serial.print("leyendo:");
Serial.print(val_luz);
Serial.print(" ");
delay (500);
Serial.print("leyendo:");
Serial.print(val_agua);
Serial.print(" ");
delay (500);
}

1 comentario:

Ilich dijo...

Hola. Me parece interesante tu proyecto. Pero me surge la duda, en que quedo todo esto? Lo llevaste a cabo? Tienes algunos resultados? Ojala pudieras compartir los resultados, seria muy interesante.
Saludos.