Go Down

Topic: ayuda como unir dos o mas codigos (Read 3336 times) previous topic - next topic

byktor34

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

Marcial

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   :P

byktor34

#2
May 27, 2014, 08:14 pm Last Edit: Nov 27, 2018, 07:28 pm by surbyte Reason: Agregado de etiqueta para Errores y/o códigos
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

Code: [Select]
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))
   ;
}

Marcial

mira  a ver si te sirve:

Code: [Select]
// 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

byktor34

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

Marcial

si te falla algo comentalo que yo no lo heprobado, y  haber q se puede hacer.

Go Up