Go Down

Topic: AYUDA: Abreviando funciones [SOLUCIONADO] (Read 765 times) previous topic - next topic

valvuino

Apr 30, 2012, 03:36 pm Last Edit: May 15, 2012, 10:47 pm by valvuino Reason: 1
Buenas tardes a todos, me gustaria saber si se puede abreviar varias funciones, y pongo un ejemplo a continuación,

quiero que al pulsar el Pulsador se encienda los dos leds, yo escribí como la opción A, pero hay manera de agrupar estes dos leds como en la opción B. Espero que me entendais lo que quiero hacer.

Un saludo y gracias.

int ledPin1 = 10   //pin 10 para led rojo
int ledPin2 = 11   //pin 11 para led verde
int ledPin3 = ???   //las dos salidas ledPin1 y ledPin2
int pinPulsador = 2   //pin 2 para pulsador

void setup() { Configura salidas


   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(pinPulsador, INPUT);
   digitalWrite(ledPin1, LOW);
   digitalWrite(ledPin2, LOW);
}

void loop () {

//OPCION A
   if (digitaRead (pinPulsador))
     
      for (int i=0; i<1; i++)     {

   digitalWrite(ledPin1, HIGH);         // Enciende los leds durante 1000 ms - 1 ciclo
        digitalWrite(ledPin2, HIGH);
   delay(1000);
        digitalWrite(ledPin1, LOW);        
        digitalWrite(ledPin2, LOW);
        delay(1000);
}

//OPCION B
   if (digitaRead (pinPulsador))
     
      for (int i=0; i<1; i++)     {

   digitalWrite(ledPin3, HIGH);         // Enciende los 2 leds durante 1000 ms - 1 ciclo
        delay(1000);
        digitalWrite(ledPin3, LOW);        
        delay(1000);
}
}

ionhs

Se puede hacer de diferentes maneras pero no se si es exactamente lo que quieres.

Una solución sería por hardware:

Une los dos diodos con sus respectivas resistencias al mismo pin de salida y así los dos leds se encenderán y apagarán a la vez con una sola instrucción

Otra solución requiere programar los registros de los puertos de Arduino, aunque no es complicado requiere más conocimientos del micro atmega 328. Lo tienes explicado aqui
http://arduino.cc/forum/index.php/topic,76191.msg575558.html#msg575558

Espero que alguna de las dos soluciones te sirvan. Salu2

valvuino


Se puede hacer de diferentes maneras pero no se si es exactamente lo que quieres.

Una solución sería por hardware:

Une los dos diodos con sus respectivas resistencias al mismo pin de salida y así los dos leds se encenderán y apagarán a la vez con una sola instrucción

Otra solución requiere programar los registros de los puertos de Arduino, aunque no es complicado requiere más conocimientos del micro atmega 328. Lo tienes explicado aqui
http://arduino.cc/forum/index.php/topic,76191.msg575558.html#msg575558

Espero que alguna de las dos soluciones te sirvan. Salu2


Gracias por las dos soluciones, si veo que no aparece otra forma más sencilla haré el cambio por hardware, por ahora no me atrevo con el micro  XD . Muchas gracias

valvuino

He aquí la solución. Gracias por todo.

int ledPin1 = 10   //pin 10 para led rojo
int ledPin2 = 11   //pin 11 para led verde
int pinPulsador = 2   //pin 2 para pulsador

void setup() { Configura salidas


   pinMode(ledPin1, OUTPUT);
   pinMode(ledPin2, OUTPUT);
   pinMode(pinPulsador, INPUT);
   digitalWrite(ledPin1, LOW);
   digitalWrite(ledPin2, LOW);
}
void escrpar (int par, int nivel){  // Agrupación LED 1 y LED 2
        switch (par){
          case 1:{
            digitalWrite(ledPin1, nivel);
            digitalWrite(ledPin2, nivel);
            break;
        }
        }
void loop () {

   if (digitaRead (pinPulsador))
     
      for (int i=0; i<1; i++)     {

      escrpar(1, HIGH);         // Enciende y apaga durante 1 segundo los dos leds
      delay(1000);
      escrpar(1, LOW);         
      delay(1000);
}
}
[/color]

:smiley-mr-green:

Go Up