Pages: [1]   Go Down
Author Topic: activar y desactivar pines mientras recibo codigo ascill desde el puerto serie  (Read 868 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con este codigo activo las salidas dependiendo del codigo ascill que envio por puerto serie.

Siempre se queda activado el pin último correspondiente a la letra que envié, pero alguien sabe como puedo deja en LOW el pin, creo que en teoria tendría que pasar con este codigo ya que con el "else"

En resumen, que actue como un pulsador cuando envio letra ascill al puerto serie que se active el pin correspondiente y cuando dejo de enviar letra que se desactive LOW.

int ledpin13 = 13; // LED conectado al pin 13
int ledpin12 = 12;
int ledpin11 = 11;
int ledpin10 = 10;
int ledpin9 = 9;
int ledpin8 = 8;
int ledpin7 = 7;
int ledpin6 = 6;
int ledpin5 = 5;
int ledpin4 = 4;
int ledpin3 = 3;

char val; // variable que recibe el dato del puerto serie

void setup() {
pinMode(ledpin13, OUTPUT); // pin 13 (LED)actua como SALIDA
pinMode(ledpin12, OUTPUT);
pinMode(ledpin11, OUTPUT);
pinMode(ledpin10, OUTPUT);
pinMode(ledpin9, OUTPUT);
pinMode(ledpin8, OUTPUT);
pinMode(ledpin7, OUTPUT);
pinMode(ledpin6, OUTPUT);
pinMode(ledpin5, OUTPUT);
pinMode(ledpin4, OUTPUT);
pinMode(ledpin3, OUTPUT);

Serial.begin(9600);                    // inicia la comunicación con el puerto serie a 9600bps
}
void loop(){
if(Serial.available() )
    {
     
        // Read off all bytes
         val = Serial.read();
       // BlueSerial.print(val);
        Serial.print(val);
        Serial.println();
         // lee y almacena el dato en 'val'
       
}
if( val == 'a' )               //su el dato recibido es  A ́
{
digitalWrite(ledpin13, LOW); //activa el LED
} else {
digitalWrite(ledpin13, HIGH);
}
if( val == 'b' )             
{
digitalWrite(ledpin12, HIGH);
} else {
digitalWrite(ledpin12, LOW);
}
if( val == 'c' )             
{
digitalWrite(ledpin11, HIGH);
} else {
digitalWrite(ledpin11, LOW);
}
if( val == 'E' )             
{
digitalWrite(ledpin10, HIGH);
} else {
digitalWrite(ledpin10, LOW);
}
if( val == 'F' )             
{
digitalWrite(ledpin9, HIGH);
} else {
digitalWrite(ledpin9, LOW);
}
if( val == 'G' )             
{
digitalWrite(ledpin8, HIGH);
} else {
digitalWrite(ledpin8, LOW);
}
if( val == 'H' )             
{
digitalWrite(ledpin7, HIGH);
} else {
digitalWrite(ledpin7, LOW);
}
if( val == 'U' )             
{
digitalWrite(ledpin6, HIGH);
} else {
digitalWrite(ledpin6, LOW);
}
if( val == 'D' )             
{
digitalWrite(ledpin5, HIGH);
} else {
digitalWrite(ledpin5, LOW);
}
if( val == 'L' )             
{
digitalWrite(ledpin4, HIGH);
} else {
digitalWrite(ledpin4, LOW);
}
if( val == 'R' )             
{
digitalWrite(ledpin3, HIGH);
} else {
digitalWrite(ledpin3, LOW);
}



delay(60);
// espera 100ms para una nueva lectura



}
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 200
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cambia la linea de codigo

If (Serial.available())

Por

if (Serial.available() > 0)
{

Y mete todo lo siguiente ( las comparaciones de texto) entre las llaves  del if...
}

Es decir


void loop(){
if(Serial.available() >0)
    {
     
        // Read off all bytes
         val = Serial.read();
       // BlueSerial.print(val);
        Serial.print(val);
        Serial.println();
         // lee y almacena el dato en 'val'
       

if( val == 'a' )               //su el dato recibido es  A ́
{
digitalWrite(ledpin13, LOW); //activa el LED
} else {
digitalWrite(ledpin13, HIGH);
}
if( val == 'b' )             
{
digitalWrite(ledpin12, HIGH);
} else {
digitalWrite(ledpin12, LOW);
}
if( val == 'c' )             
{
digitalWrite(ledpin11, HIGH);
} else {
digitalWrite(ledpin11, LOW);
}
if( val == 'E' )             
{
digitalWrite(ledpin10, HIGH);
} else {
digitalWrite(ledpin10, LOW);
}
if( val == 'F' )             
{
digitalWrite(ledpin9, HIGH);
} else {
digitalWrite(ledpin9, LOW);
}
if( val == 'G' )             
{
digitalWrite(ledpin8, HIGH);
} else {
digitalWrite(ledpin8, LOW);
}
if( val == 'H' )             
{
digitalWrite(ledpin7, HIGH);
} else {
digitalWrite(ledpin7, LOW);
}
if( val == 'U' )             
{
digitalWrite(ledpin6, HIGH);
} else {
digitalWrite(ledpin6, LOW);
}
if( val == 'D' )             
{
digitalWrite(ledpin5, HIGH);
} else {
digitalWrite(ledpin5, LOW);
}
if( val == 'L' )             
{
digitalWrite(ledpin4, HIGH);
} else {
digitalWrite(ledpin4, LOW);
}
if( val == 'R' )             
{
digitalWrite(ledpin3, HIGH);
} else {
digitalWrite(ledpin3, LOW);
}


}
delay(60);
// espera 100ms para una nueva lectura
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No funciona.....

Alguna idea mas??????
Logged

0
Offline Offline
God Member
*****
Karma: 39
Posts: 988
Get Bitlash: http://bitlash.net
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
void loop() {
int c, pin;
if (Serial.available() {
c = Serial.read();
pin = c - 'a'; // a..m
if ((pin >= 3) && (pin <= 13)) {
digitalWrite(pin, !digitalRead(pin));
}
}
}

-br
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 200
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yo tengo asi en un scketch que hice para encerder unos led desde el iphone usando TouchOSC y funciono perfecto.

void loop()
{
if (Serial.available() > 0)
  {
     message = Serial.read();   

             if (message == '1')
       {
         digitalWrite (salida_salon11,HIGH);
       }
         else
      {
         digitalWrite (salida_salon11,LOW);
      }

              if (message == '2')
       {
         digitalWrite (salida_dormitorio11,HIGH);
       }
       else
       {
         digitalWrite (salida_dormitorio11,LOW);
       }

              if (message == '3')
       {
        digitalWrite (salida_dormitorio21,HIGH);
       }
       else
       {
        digitalWrite (salida_dormitorio21,LOW);
       }

              if (message == '4')
       {
        digitalWrite (salida_dormitorio31,HIGH);
       }
       else
       {
        digitalWrite (salida_dormitorio31,LOW);
       }

              if (message == '5')
       {
        digitalWrite (salida_terraza1,HIGH);
       }
       else
       {
        digitalWrite (salida_terraza1,LOW);
       }

              if (message == '6')
       {
        digitalWrite (salida_pasillo1,HIGH);
       }
       else
       {
        digitalWrite (salida_pasillo1,LOW);
       }

              if (message == '7')
       {
        digitalWrite (salida_pasillo2,HIGH);
       }
       else
       {
        digitalWrite (salida_pasillo2,LOW);
       }

              if (message == '8')
       {
        digitalWrite (salida_aseo1,HIGH);
       }
       else
       {
        digitalWrite (salida_aseo1,LOW);
       }

              if (message == '9')
       {
        digitalWrite (salida_aseo2,HIGH);
       }
       else
       {
        digitalWrite (salida_aseo2,LOW);
       }

              if (message == 'A')
       {
        digitalWrite (salida_cocina1,HIGH);
       }
         else
       {
        digitalWrite (salida_cocina1,LOW);
       }

              if (message == 'S')
       {
        digitalWrite (salida_tendedero1,HIGH);
       }
       else
       {
        digitalWrite (salida_tendedero1,LOW);
       }

   }
}
Logged

Pages: [1]   Go Up
Jump to: