como acomodar dos codigos diferentes en uno solo?
hola saludos amigos tengo un pequeño problema soy nuevo en el arduino pero gracias ayuda de aqui mismo y tutoriales logre crear dos codigos uno es para controlas las luces del carro automaticamente con la obscuridad y el otro es un como detector de pulsos ya que la alarma de agencia solo trae dos canales usare el arduino como un decodificador de pulsos que le mande travez de la alarma de agencia resuminedo es como un codigo morse: 1 pulso = apertura de seguros, 2 pulsos = cierre, 3 pulsos = cierre ventanas seguros y activacion de alarma etc! el problema es que los codigos los hize por separado y ahora que los quiero poner en uno solo no se como hize una prueba y el sensor de luz funciona perfectamente pero el se pulsos no funciona bien no detecta bien los pulsos que le mando aqui le pongo los codigos para ver si alguien me puede ayudar gracias
este codigo es el del el sensor de luz
el siguiente es de el sensor de pulsos
si alguien me podria decir como los puedo acomodar para que fuincione bien gracias.
este codigo es el del el sensor de luz
code: [select]
const int analogpin = a0; // sensor luz
const int llow = 2; // salida luces bajas o cuartos
const int lhigh = 3; // salida luces altas
const int threshold = 20; // nivel minimo para encender luces altas
const int threshold1 = 50; // nivel minimo para encender cuartos
void setup() {
pinmode(llow, output); // salida definida para luces bajas
pinmode(lhigh, output); // salida definida para luces altas
serial.begin(9600); // definido monitor serial
}
void loop() {
int analogvalue = analogread(analogpin); // leer sensor analogo y valuarlo con el valor interno
delay(500); // delay para estabilidad entre variaciones de luces en carretera
if (analogvalue < threshold) // condicion if (si el valor analogo de sensor es menor el valor interno
{digitalwrite(lhigh, high);} // se cumple la condicion en salida luces altas señal alto
else // declaracion si no!
{digitalwrite(lhigh,low);} // sino se cumple la condicion entonces el voltaje se mantiene bajo
if(analogvalue < threshold1) // condicion if (si el valor analogo de sensor es menor el valor interno1
{digitalwrite(llow, high);} // se cumple la condicion en salida luces altas señal alto
else // declaracion si no!
{digitalwrite(llow,low);} // sino se cumple la condicion entonces el voltaje se mantiene bajo
serial.println(analogvalue); // valor leido del sensor se manda al monitor serial
delay(1); // delay para estabilidad de la lectura
}
el siguiente es de el sensor de pulsos
code: [select]
byte pinbtn = 10; // pin pulsador
bool e_btn = false; // estado pulsador
bool ae_btn = false; // estado anterior pulsador
unsigned long espera=500; // tiempo maximo esperar entre pulsaciones, si lo excede ejecuta
unsigned long final=0; // auxiliar para controlar el tiempo trancurrido entre pulsaciones
unsigned long amilis=0; // auxiliar para controlar desborde de millis
byte pulsos=0; // contador de pulsos
void setup()
{
pinmode(9, output);
pinmode(8, output);
pinmode(6, output);
pinmode(pinbtn, input);
serial.begin(9600);
}
void loop()
{
amilis=millis(); // almacenamos millis para controlar desborde
e_btn = digitalread(pinbtn); // leer pin pulsador
if (e_btn && !ae_btn && pulsos < 255) // estado pulsador cambia high
{
pulsos ++; // añadir un pulso
final = millis() + espera; // tiempo de espera para ejecutar comando
delay(20);
}
ae_btn = e_btn; // almacenamos ultimo estado
if (pulsos > 0 && millis() > final) // hay opcion pulsada y finalizo imepo de espera
{
serial.print("pulso ");
serial.print(pulsos);
switch (pulsos)
{
case 1:
serial.println("abierto");
digitalwrite(8, high);
delay(200);
digitalwrite(8, low);
delay(200);
break;
case 2:
serial.println("cerrado");
digitalwrite(7, high);
delay(200);
digitalwrite(7, low);
delay(200);
break;
case 3:
serial.println("vidrios");
digitalwrite(6, high);
delay(200);
digitalwrite(6, low);
delay(200);
break;
}
pulsos = 0;
}
if (amilis < millis()) {final = final - amilis + millis();} // control desborde millis
}
si alguien me podria decir como los puedo acomodar para que fuincione bien gracias.
yo lo acomode de esta forma pero solo me detecta un pulso no mas!
code: [select]
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//valores int para sensor luz//
const int analogpin = a0; // sensor luz
const int llow = 2; // salida luces bajas o cuartos
const int lhigh = 3; // salida luces altas
const int threshold = 20; // nivel minimo para encender luces altas
const int threshold1 = 50; // nivel minimo para encender cuartos
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//valores int para sensor pulsos//
byte pinbtn = 10; // pin pulsador
bool e_btn = false; // estado pulsador
bool ae_btn = false; // estado anterior pulsador
unsigned long espera=500; // tiempo maximo esperar entre pulsaciones, si lo excede ejecuta
unsigned long final=0; // auxiliar para controlar el tiempo trancurrido entre pulsaciones
unsigned long amilis=0; // auxiliar para controlar desborde de millis
byte pulsos=0; // contador de pulsos
void setup()
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//setup control luz//
pinmode(llow, output); // salida definida para luces bajas
pinmode(lhigh, output); // salida definida para luces altas
serial.begin(9600);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//setup sensor pulsos//
pinmode(9, output);
pinmode(8, output);
pinmode(6, output);
pinmode(pinbtn, input);
serial.begin(9600);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//sensor pulsos//
amilis=millis(); // almacenamos millis para controlar desborde
e_btn = digitalread(pinbtn); // leer pin pulsador
if (e_btn && !ae_btn && pulsos < 255) // estado pulsador cambia high
{
pulsos ++; // añadir un pulso
final = millis() + espera; // tiempo de espera para ejecutar comando
delay(40);
}
ae_btn = e_btn; // almacenamos ultimo estado
if (pulsos > 0 && millis() > final) // hay opcion pulsada y finalizo imepo de espera
{
serial.print("pulso ");
serial.print(pulsos);
switch (pulsos)
{
case 1:
serial.println("abierto");
digitalwrite(8, high);
delay(200);
digitalwrite(8, low);
delay(200);
break;
case 2:
serial.println("cerrado");
digitalwrite(7, high);
delay(200);
digitalwrite(7, low);
delay(200);
break;
case 3:
serial.println("vidrios");
digitalwrite(6, high);
delay(200);
digitalwrite(6, low);
delay(200);
break;
}
pulsos = 0;
}
if (amilis < millis()) {final = final - amilis + millis();} // control desborde millis
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//sensor luz//
int analogvalue = analogread(analogpin); // leer sensor analogo y valuarlo con el valor interno
delay(500); // delay para estabilidad entre variaciones de luces en carretera
if (analogvalue < threshold) // condicion if (si el valor analogo de sensor es menor el valor interno
{digitalwrite(lhigh, high);} // se cumple la condicion en salida luces altas señal alto
else // declaracion si no!
{digitalwrite(lhigh,low);} // sino se cumple la condicion entonces el voltaje se mantiene bajo
if(analogvalue < threshold1) // condicion if (si el valor analogo de sensor es menor el valor interno1
{digitalwrite(llow, high);} // se cumple la condicion en salida luces altas señal alto
else // declaracion si no!
{digitalwrite(llow,low);} // sino se cumple la condicion entonces el voltaje se mantiene bajo
serial.println(analogvalue); // valor leido del sensor se manda al monitor serial
}
Arduino Forum > International > Español > Proyectos (Moderators: surbyte, Hector_A) > como acomodar dos codigos diferentes en uno solo?
arduino
Comments
Post a Comment