podria alguien ayudarme para decirme como puedo unir dos codigos o mas?
esplicare un poco lo que quiero hacer...
ise un proyecto de una casa domotica en maqueta...
un codigo para abrir y cerrar una puerta electrica
un codigo para un sistema de riego automatico..
un codigo para encender luces con un push boton
un codigo para encender luces temporizadas
y un codigo para activar una alarma...
mi problemas es que:no puedo usarlos todos ala vez
necesito cargar uno para cada funcion..
alguien sabe como unir estos codigos?
mire algo por ahi en la web con switch case...pero no muy claro..
me gustaria saber con detalle como quedan las de claraciones,que hay que hacer en void setup en void loop...y como se agregan si fuera el caso de juntarlos con switch case?
o alguien conoce otra forma? gracias de antemano por la antencion
Buenas byktor, en un principio, unir dos códigos así sin mas, no tiene por que ser posible, pueden tener variables comunes e interferirse, usar los mismos pines para cosas diferentes, etc.
sabiendo lo que quieres unir se puede mirar, pero sin mas información ... preguntaría a un sacerdote
Nuchas gracias por leer mi post,
Y si, tienes mucha razón me falto documentar...
Voy a poner primero aquí mis cinco códigos que quiero unir o pegar oooo que se ejecuten en un solo código.
De hecho ya los uní... utilicé la función switch case y mediante un switch poder ir seleccionando la función que quiero que haga.
Realmente no se programación pero o me parece fascinante esto..
Lo que hice fue copiar códigos de internet, que hacían x función y yo los modifiqué y adapté a mi necesidad.
Tenia que hacer una casa domótica en maqueta con 5 funciones...
Cuidadosamente use pines de entrada y salida para cada proyecto, para no tener conflicto al unir.
Nota 1: todos los proyectos individualmente funcionan correctamente.
Nota 2: Al unirlos se compilan bien pero no me funciona ninguno.
Dejo los códigos por sepaado. Los 5 y dejo el último pegados, todos que no me funcionan, gracias anticipadas a quien pueda ayudarme.
Ammmm si alguien necesita ayuda con algun circuito electrónico que quiera adaptarlo al arduino, con gusto esta mi ayuda.
Voy a enumerar los cincro proyectos...ssssssssssss se me fue y escribir con mayúsculas sorry.
1.- ALARMA
int switchAlarma = 4;
int outAlarma = 7;
int estado = 0;
int previo = 0;
int reading;
long time = 0;
long debounce = 500;
void setup()
{
pinMode(switchAlarma, INPUT);
digitalWrite(switchAlarma, HIGH);
pinMode(outAlarma, OUTPUT);
Serial.begin(9600);
}
void loop()
{
reading = digitalRead(switchAlarma);
if (reading == HIGH && previo == LOW && millis()+100 - time > debounce) {
if (estado == HIGH) {
estado = LOW;
time = millis();
}
else {
estado = HIGH;
time = millis();
}
}
digitalWrite(outAlarma, estado);
previo = reading;
}
****************************************************************************************************************************
DOS
LUZ TEMPORIZA
int relayluzout = 6;
void setup(){
pinMode(relayluzout, OUTPUT);
}
void loop() {
digitalWrite(relayluzout, HIGH);
delay(12000);//43200
digitalWrite(relayluzout, LOW);
delay(12000);//43200
}
*************************************************************************************************************************
TRES
ENCIENDE Y APAGA LUZ
int switchluzin = 3;
int outluzin = 8;
int estado = 0;
int previo = 0;
int reading;
long time = 0;
long debounce = 500;
void setup()
{
pinMode(switchluzin, INPUT);
digitalWrite(switchluzin, HIGH);
pinMode(outluzin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
reading = digitalRead(switchluzin);
if (reading == HIGH && previo == LOW && millis()+100 - time > debounce) {
if (estado == HIGH) {
estado = LOW;
time = millis();
}
else {
estado = HIGH;
time = millis();
}
}
digitalWrite(outluzin, estado);
previo = reading;
}
***************************************************************************************************************************
CUATRO
SISTEMA DE RIEGO
int valvulariego = 2;
void setup(){
pinMode(valvulariego, OUTPUT);
}
void loop() {
digitalWrite(valvulariego, HIGH);
delay(3000);
digitalWrite(valvulariego, LOW);
delay(12000);//43200
}
**********************************************************************************************************************
CINCO
PUERTA ELECTRICA
const int botonup =13 ;
const int botondw =12 ;
const int abre = 5;
const int cierra = 4;
void setup() {
pinMode(abre, OUTPUT);
pinMode(cierra, OUTPUT);
pinMode(botonup, INPUT);
pinMode(botondw, INPUT);
}
void loop(){
if (digitalRead(botonup)) {
digitalWrite(abre, HIGH);
}
else {
digitalWrite(abre, LOW);
}
if (digitalRead(botondw)) {
digitalWrite(cierra, HIGH);
}
else {
digitalWrite(cierra, LOW);
}
}
**********************************************************************************************************************************
**********************************************************************************************************************************
YYYYYYYYYYYYYYYY AQUI UNIDOS TODOS
SE COMPILA SIN ERROR PERO NO FUNCIONAN LOS CODIGOS
TAL VEZ ALGO ESTA MAL EN EL SWITCH SELECTOR
OOOOOOOOOOOOOOOOOO SI ALGUIEN CONOCE OTRA FORMA DE UNIR LOS CODIGO SE LO VOY AGRADECER MUCHO ME URGE ES UNA MAQUETA DE UNA TAREA ESCOLAR DE MI HIJA,,,,Y EL PROFE NO VALE UN CACAHUTE PARA ENSEñARLES O LO HACE O REPRUEBAN Y YA SE LA SABEN A PAGAR EXAMENES...
MUCHAS GRACIAS POR LA ATENCION Y AYUDA
EL CODIGO FINA UNIDO
//casa domotica controlada por pulsador
// cada vez que se pulsa hace una funcion diferente
const int swselector = 10; // PULSADOR
int ledPin1 = 13; //LED VERDE quitar
int ledPin2 = 9; //LED AMBAR quitar
//int ledPin3 = 10; //LED ROJO quitar
int contador =0;
long tpo = millis();
//inici alarma
int switchAlarma = 4;
int outAlarma = 7;
int estado = 0;
int previo = 0;
int reading;
long time = 0;
long debounce = 500;
//fin alarma
// inicio concontrol puerta
const int botonup =13 ;
const int botondw =12 ;
const int abre = 5;
const int cierra = 4;
// fin control puerta
//inicia luz externa
int relayluzout = 6;
// fin luz externa
// luz interna inicio
int switchluzin = 3;
int outluzin = 8;
// estado = 0;
//int previo = 0;
//int reading;
//long time = 0;
//long debounce = 500;
//fin luz interna fin
//INICIO SISTEMA DE RIEGO
int valvulariego = 2;
// FIN SISTEMA RIEGO
void setup()
{
Serial.begin(9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
attachInterrupt(0, Fon_Contar, RISING);
// inicio alarma
pinMode(switchAlarma, INPUT);
digitalWrite(switchAlarma, HIGH);
pinMode(outAlarma, OUTPUT);
Serial.begin(9600);
//fin alarma
//inicio control puerta
pinMode(abre, OUTPUT);
pinMode(cierra, OUTPUT);
pinMode(botonup, INPUT);
pinMode(botondw, INPUT);
// fin control puerta
// apaga luz interna inicio
pinMode(switchluzin, INPUT);
digitalWrite(switchluzin, HIGH);
pinMode(outluzin, OUTPUT);
Serial.begin(9600);
// apaga luz interna fin
//inicio luz externa
pinMode(relayluzout, OUTPUT);
// fin luz externa
// INICIO SISTEMA DE RIEGO
pinMode(valvulariego, OUTPUT);
//FIN SISTEMA DE RIEGO
}
void loop ()
{
switch (contador)
{
case 0: // APAGA TODOS LOS procesos
digitalWrite(outAlarma,LOW); // apaga alarma
digitalWrite(abre,LOW); // apaga puerta
digitalWrite(cierra,LOW); // apaga puerta
digitalWrite(relayluzout,LOW); // apaga luz externa
digitalWrite(outluzin,LOW); // apaga luz interna
digitalWrite(valvulariego,LOW); // apaga sistema de riego
break;
case 1: // alarma
{
reading = digitalRead(switchAlarma);
if (reading == HIGH && previo == LOW && millis()+100 - time > debounce) {
if (estado == HIGH) {
estado = LOW;
time = millis();
}
else {
estado = HIGH;
time = millis();
}
}
digitalWrite(outAlarma, estado);
previo = reading;
}
break;
case 2: // control puerta
{
if (digitalRead(botonup)) {
digitalWrite(abre, HIGH);
}
else {
digitalWrite(abre, LOW);
}
if (digitalRead(botondw)) {
digitalWrite(cierra, HIGH);
}
else {
digitalWrite(cierra, LOW);
}
}
break;
case 3: // luz externa
digitalWrite(relayluzout, HIGH);
delay(12000);//43200
digitalWrite(relayluzout, LOW);
delay(12000);//4320
break;
case 4: // luz interna
{
reading = digitalRead(switchluzin);
if (reading == HIGH && previo == LOW && millis()+100 - time > debounce) {
if (estado == HIGH) {
estado = LOW;
time = millis();
}
else {
estado = HIGH;
time = millis();
}
}
digitalWrite(outluzin, estado);
previo = reading;
}
break;
case 5: // sistema de riego
{
digitalWrite(valvulariego, HIGH);
delay(3000);
digitalWrite(valvulariego, LOW);
delay(12000);//43200
}
break;
case 6: // REINICIA EL CONTADOR
contador=0;
break;
}
}
void Fon_Contar() // Este contador cuenda cada vez que el pulsador pasa de estado LOW a HIGH
{
contador++;
Serial.println(contador);
if (contador > 5) contador = 0;
}
void delayx(int valor)
{
long tpo = millis();
while ((( millis() - tpo) < valor) && (contador == 1))
;
}
mira a ver si te sirve:
// ALARMA
byte Pulsador_Alarma=4;
byte Rele_Alarma=7;
bool Estado_Pulsador_Alarma=false;
bool Anterior_Pulsador_Alarma=false;
bool Estado_Rele_Alarma=false;
// LUZ TEMPORIZA
byte Rele_Luz_Temporizada=6;
unsigned long Tiempo_Comnutacion = 12000;
unsigned long Auxiliar_Tiempo_LuzT = 0;
bool Estado_Luz_Temporizada=false;
//ENCIENDE Y APAGA LUZ
byte Pulsador_Luz=3;
byte Rele_Luz=8;
bool Estado_Pulsador_Luz=false;
bool Anterior_Pulsador_Luz=false;
bool Estado_Rele_Luz=false;
// RIEGO
byte Rele_Riego=2;
unsigned long Tiempo_Riego_Apagado = 12000;
unsigned long Tiempo_Riego_Encendido = 3000;
unsigned long Auxiliar_Tiempo_Riego = 0;
bool Estado_Riego=true;
// PUERTA
byte Pulsador_Sube = 11 ; // Aqui te cambie algunos pines
byte Pulsador_Baja = 12 ;
byte Rele_Sube = 5 ;
byte Rele_Baja = 9 ;
bool Estado_Pulsador_Sube=false;
bool Estado_Pulsador_Baja=false;
bool Anterior_Pulsador_Sube=false;
bool Anterior_Pulsador_Baja=false;
bool Estado_Rele_Sube=false;
bool Estado_Rele_Baja=false;
void setup()
{
// ALARMA
pinMode(Pulsador_Alarma, INPUT);
pinMode(Rele_Alarma, OUTPUT);
// LUZ TEMPORIZA
pinMode(Rele_Luz_Temporizada, OUTPUT);
//ENCIENDE Y APAGA LUZ
pinMode(Pulsador_Luz, INPUT);
pinMode(Rele_Luz, OUTPUT);
// RIEGO
pinMode(Rele_Riego, OUTPUT);
// PUERTA
pinMode(Pulsador_Sube, INPUT);
pinMode(Pulsador_Baja, INPUT);
pinMode(Rele_Sube, OUTPUT);
pinMode(Rele_Baja, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// ALARMA
Estado_Pulsador_Alarma = digitalRead(Pulsador_Alarma);
if (Estado_Pulsador_Alarma && !Anterior_Pulsador_Alarma)
{
Estado_Rele_Alarma = !Estado_Rele_Alarma;
digitalWrite(Rele_Alarma, Estado_Rele_Alarma);
}
Anterior_Pulsador_Alarma = Estado_Pulsador_Alarma;
// LUZ TEMPORIZA
if (millis() > Auxiliar_Tiempo_LuzT)
{
Estado_Luz_Temporizada = !Estado_Luz_Temporizada;
Auxiliar_Tiempo_LuzT = millis() + Tiempo_Comnutacion;
digitalWrite(Rele_Luz_Temporizada, Estado_Luz_Temporizada);
}
//ENCIENDE Y APAGA LUZ
Estado_Pulsador_Luz = digitalRead(Pulsador_Luz);
if (Estado_Pulsador_Luz && !Anterior_Pulsador_Luz)
{
Estado_Rele_Luz = !Estado_Rele_Luz;
digitalWrite(Rele_Luz, Estado_Rele_Luz);
}
Anterior_Pulsador_Luz = Estado_Pulsador_Luz;
// RIEGO
if (millis() > Auxiliar_Tiempo_Riego)
{
Estado_Riego = !Estado_Riego;
if (!Estado_Riego) {Auxiliar_Tiempo_Riego = millis() + Tiempo_Riego_Apagado;}
else {Auxiliar_Tiempo_Riego = millis() + Tiempo_Riego_Encendido;}
digitalWrite(Rele_Riego, Estado_Riego);
}
// PUERTA
if (!Estado_Pulsador_Baja) {Estado_Pulsador_Sube = digitalRead(Pulsador_Sube);}
else {Estado_Pulsador_Sube=false;}
digitalWrite(Rele_Sube, Estado_Pulsador_Sube);
if (!Estado_Pulsador_Sube) {Estado_Pulsador_Baja = digitalRead(Pulsador_Baja);}
else {Estado_Pulsador_Baja=false;}
digitalWrite(Rele_Baja, Estado_Pulsador_Baja);
}
fíjate que cambie algunos pines
voy a probar
anticipadamente muchisimas gracias...pues esta algo largo el codigo de verdad muchas gracias por el tiempo ke te tomaste en ayudarme..lo voy a probar y te aviso,saludos amigo y gracias
si te falla algo comentalo que yo no lo heprobado, y haber q se puede hacer.