Go Down

Topic: [RISOLTO]accedere 4 led con lo switch e porta usb (Read 1 time) previous topic - next topic

alberto39

Sep 18, 2012, 07:42 pm Last Edit: Sep 18, 2012, 08:57 pm by alberto39 Reason: 1
Salve cercando sul forum o su google su come accendere un led con arduino collegato con usb/seriale, ho trovato questo programma che fa accendere e spegnere un led quando io inserisco 1 si accende e se inserisco 2 si spegne, e questi numeri li metto sulla finestra di monitor seriale
Code: [Select]
int n=5;
int a;  

void setup()
{
pinMode(n, OUTPUT);
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0) {
a = Serial.read();
 if (a == '1') {
  digitalWrite(n, HIGH);
                           }
                         }  
 if (a == '2') {
  digitalWrite(n, LOW);
 }
}

e questo programma funziona, ma ora voglio accendere 5 led allora ho fatto questo programma prendendo per esempio quello di prima
Code: [Select]
int e=5;
int d=6;
int c=7;
int r=8;
int a;
int h=3;

void setup()
{
pinMode(e, OUTPUT);
pinMode(d, OUTPUT);
pinMode(c, OUTPUT);
pinMode(r, OUTPUT);
pinMode(h, OUTPUT);
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0) {
a = Serial.read();
  switch(a){
   case 1:
  digitalWrite(e, HIGH);
  break;
  case 2:
  digitalWrite(e, LOW);
  break;
  case 3:
  digitalWrite(d, HIGH);
  break;
  case 4:
  digitalWrite(d, LOW);
  break;
  case 5:
  digitalWrite(c, HIGH);
  break;
  case 6:
  digitalWrite(c, LOW);
  break;
  case 7:
  digitalWrite(r, HIGH);
  break;
  case 8:
  digitalWrite(r, LOW);
  break;
  default:
  digitalWrite(h, LOW);
  break;
 }
}
}

ma quando metto i numeri su monitor seriale non funziona!!
cosa ho sbagliato?? mi sapete aiutare??

m_ri

nessun led si accende/spegne?neanche quello collegato al pin 5?

alberto39


nessun led si accende/spegne?neanche quello collegato al pin 5?

neanche quello!!!! =(

gingardu

#3
Sep 18, 2012, 08:43 pm Last Edit: Sep 18, 2012, 08:46 pm by GINGARDU Reason: 1
con questo puoi accendere spegnere 9 led
se vui pui accederli tutti e 19
basta che dichiari gli altri pin restanti ,
se metti uno  si accende il led al pin uno   se metti 101 si spegne

se metti 2 si accende il led al pin 2  se metti 102 si spegne,

pui specificare tu che numero mettere  per accendere/spegnere  il led che vuoi  solo numeri da 1 a 99999999

Code: [Select]
long vet[9] = {
 -2, -2, -2, -2, -2, -2, -2, -2, -2 };


long cont = 0;
long x = 0;

void setup()
{

 Serial.begin(9600);

 pinMode (0, OUTPUT);  
 pinMode (1, OUTPUT);  
 pinMode (2, OUTPUT);
 pinMode (3, OUTPUT);
 pinMode (4, OUTPUT);  
 pinMode (5, OUTPUT);  
 pinMode (6, OUTPUT);  
 pinMode (7, OUTPUT);
 pinMode (8, OUTPUT);
 pinMode (9, OUTPUT);
   pinMode (13, OUTPUT);


digitalWrite (1,LOW);

digitalWrite (2,LOW);

digitalWrite (3,LOW);

digitalWrite (4,LOW);

digitalWrite (5,LOW);

digitalWrite (6,LOW);

digitalWrite (7,LOW);

digitalWrite (8,LOW);

digitalWrite (9,LOW);

digitalWrite (13,LOW);

}

void loop()
{
 while (Serial.available() > 0)
 {
   vet[cont] = Serial.read()-48;
   cont++;
   delay(60);
 }

 if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 || vet[3] < -2 || vet[4] < -2 || vet[5] < -2 || vet[6] < -2 || vet[7] < -2 || vet[8] < -2)
   Serial.println(" ATTENZIONE DEVI  INSERIRE SOLO NUMERI DA 1 A 999999999  ");

 if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9 || vet[3] > 9 || vet[4] > 9 || vet[5] > 9 || vet[6] > 9 || vet[7] > 9 || vet[8] > 9)
   Serial.println("   ATTENZIONE DEVI  INSERIRE SOLO NUMERI DA 1 A 999999999  ");



 if(cont > 0)
 {
   cont = 0;


   if (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 &&  vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2  && vet[2] ==  -2  && vet[1] ==  -2 )
 
   {                                                              

       x = vet[0];                                                  
   }
   else

       if (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2  && vet[2] ==  -2 ) //  
     {
       x = (vet[0]* 10 +   vet[1]    );
     }
     else
       if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 &&  vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2 ) //
       {
         x = (vet[0] * 100 + vet[1]* 10+ vet[2]);
       }
       else
         if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2  && vet[4] ==  -2  )
         {
           x = (vet[0] * 1000 + vet[1] * 100 + vet[2]* 10 + vet[3]);  
         }
         else
           if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2   )
           {
             x = (vet[0] * 10000 + vet[1] * 1000 + vet[2]* 100 + vet[3]* 10 + vet[4]);  

           }
           else
             if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 )
             {
               x = (vet[0] * 100000 + vet[1] * 10000 + vet[2]* 1000 + vet[3]* 100 + vet[4]* 10 + vet[5]);  

             }
             else

               if  (vet[8] == -2 && vet[7] == -2 )
             {
               x = (vet[0] * 1000000 + vet[1] * 100000 + vet[2]* 10000 + vet[3]* 1000 + vet[4]* 100 + vet[5]* 10+ vet[6]);  

             }
             else  

               if  (vet[8] == -2 )
             {
               x = (vet[0] * 10000000 + vet[1] * 1000000 + vet[2]* 100000 + vet[3]* 10000 + vet[4]* 1000 + vet[5]* 100 + vet[6]* 10+ vet[6]);  

             }
             else



               x = (vet[0] * 100000000 + vet[1] * 10000000 + vet[2]* 1000000 + vet[3]* 100000 + vet[4]* 10000 + vet[5]* 1000 + vet[6]* 100 + vet[7] * 10 + vet[8]);


   if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 || vet[3] < -2 || vet[4] < -2 || vet[5] < -2 || vet[6] < -2 || vet[7] < -2 || vet[8] < -2 ) x = 0;
   if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9 || vet[3] > 9 || vet[4] > 9 || vet[5] > 9 || vet[6] > 9 || vet[7] > 9 || vet[8] > 9)  x = 0;

   if (x == -2 || x== -1) x=0;

   Serial.println( vet[0]);
   Serial.println( vet[1]);
   Serial.println( vet[2]);
   Serial.println( vet[3]);
   Serial.println( vet[4]);
   Serial.println( vet[5]);
   Serial.println( vet[6]);
   Serial.println( vet[7]);
   Serial.println( vet[8]);

   if (vet[0] >= -2 && vet[1]  >= -2 &&  vet[2]  >= -2 &&  vet[3] >= -2 && vet[4] >= -2 && vet[5] >= -2 && vet[6] >= -2 && vet[7] >= -2 && vet[8] >= -2 &&
     vet[0] <= 9 && vet[1] <= 9 &&  vet[2] <= 9 &&  vet[3] <= 9 &&  vet[4] <= 9 &&  vet[5] <= 9 &&  vet[6] <= 9 &&  vet[7] <= 9 &&  vet[8] <= 9 )
     Serial.println(" NUMERO INSERITO  "),   Serial.println(x);

   if (x == 0)   Serial.println(" REINSERISCI UN  NUMERO DA 1 A 999999999  ")  ;




   vet[0] = -2;  
   vet[1] = -2;
   vet[2] = -2;
   vet[3] = -2;
   vet[4] = -2;
   vet[5] = -2;
   vet[6] = -2;
   vet[7] = -2;
   vet[8] = -2;      
 }
 
 if (x == 1) digitalWrite (1, HIGH);
 if (x == 101) digitalWrite (1,LOW);
 if (x == 2) digitalWrite (2, HIGH);
 if (x == 102) digitalWrite (2,LOW);
 if (x == 3) digitalWrite (3, HIGH);
 if (x == 103) digitalWrite (3,LOW);
 if (x == 4) digitalWrite (4, HIGH);
 if (x == 104) digitalWrite (4,LOW);
 if (x == 5) digitalWrite (5, HIGH);
 if (x == 105) digitalWrite (5,LOW);
 if (x == 6) digitalWrite (6, HIGH);
 if (x == 106) digitalWrite (6,LOW);
 if (x == 7) digitalWrite (7, HIGH);
 if (x == 107) digitalWrite (7,LOW);
 if (x == 8) digitalWrite (8, HIGH);
 if (x == 108) digitalWrite (8,LOW);
 if (x == 9) digitalWrite (9, HIGH);
 if (x == 109) digitalWrite (9,LOW);


}


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

alberto39


con questo puoi accendere spegnere 9 led
se vui pui accederli tutti e 19
basta che dichiari gli altri pin restanti ,
se metti uno  si accende il led al pin uno   se metti 101 si spegne

se metti 2 si accende il led al pin 2  se metti 102 si spegne,

pui specificare tu che numero mettere  per accendere/spegnere  il led che vuoi  solo numeri da 1 a 99999999

Code: [Select]
long vet[9] = {
 -2, -2, -2, -2, -2, -2, -2, -2, -2 };


long cont = 0;
long x = 0;

void setup()
{

 Serial.begin(9600);

 pinMode (0, OUTPUT);  
 pinMode (1, OUTPUT);  
 pinMode (2, OUTPUT);
 pinMode (3, OUTPUT);
 pinMode (4, OUTPUT);  
 pinMode (5, OUTPUT);  
 pinMode (6, OUTPUT);  
 pinMode (7, OUTPUT);
 pinMode (8, OUTPUT);
 pinMode (9, OUTPUT);
   pinMode (13, OUTPUT);


digitalWrite (1,LOW);

digitalWrite (2,LOW);

digitalWrite (3,LOW);

digitalWrite (4,LOW);

digitalWrite (5,LOW);

digitalWrite (6,LOW);

digitalWrite (7,LOW);

digitalWrite (8,LOW);

digitalWrite (9,LOW);

digitalWrite (13,LOW);

}

void loop()
{
 while (Serial.available() > 0)
 {
   vet[cont] = Serial.read()-48;
   cont++;
   delay(60);
 }

 if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 || vet[3] < -2 || vet[4] < -2 || vet[5] < -2 || vet[6] < -2 || vet[7] < -2 || vet[8] < -2)
   Serial.println(" ATTENZIONE DEVI  INSERIRE SOLO NUMERI DA 1 A 999999999  ");

 if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9 || vet[3] > 9 || vet[4] > 9 || vet[5] > 9 || vet[6] > 9 || vet[7] > 9 || vet[8] > 9)
   Serial.println("   ATTENZIONE DEVI  INSERIRE SOLO NUMERI DA 1 A 999999999  ");



 if(cont > 0)
 {
   cont = 0;


   if (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 &&  vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2  && vet[2] ==  -2  && vet[1] ==  -2 )
 
   {                                                              

       x = vet[0];                                                  
   }
   else

       if (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2  && vet[2] ==  -2 ) //  
     {
       x = (vet[0]* 10 +   vet[1]    );
     }
     else
       if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 &&  vet[5] ==  -2  && vet[4] ==  -2  && vet[3] ==  -2 ) //
       {
         x = (vet[0] * 100 + vet[1]* 10+ vet[2]);
       }
       else
         if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2  && vet[4] ==  -2  )
         {
           x = (vet[0] * 1000 + vet[1] * 100 + vet[2]* 10 + vet[3]);  
         }
         else
           if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 && vet[5] ==  -2   )
           {
             x = (vet[0] * 10000 + vet[1] * 1000 + vet[2]* 100 + vet[3]* 10 + vet[4]);  

           }
           else
             if  (vet[8] == -2 && vet[7] == -2 && vet[6] == -2 )
             {
               x = (vet[0] * 100000 + vet[1] * 10000 + vet[2]* 1000 + vet[3]* 100 + vet[4]* 10 + vet[5]);  

             }
             else

               if  (vet[8] == -2 && vet[7] == -2 )
             {
               x = (vet[0] * 1000000 + vet[1] * 100000 + vet[2]* 10000 + vet[3]* 1000 + vet[4]* 100 + vet[5]* 10+ vet[6]);  

             }
             else  

               if  (vet[8] == -2 )
             {
               x = (vet[0] * 10000000 + vet[1] * 1000000 + vet[2]* 100000 + vet[3]* 10000 + vet[4]* 1000 + vet[5]* 100 + vet[6]* 10+ vet[6]);  

             }
             else



               x = (vet[0] * 100000000 + vet[1] * 10000000 + vet[2]* 1000000 + vet[3]* 100000 + vet[4]* 10000 + vet[5]* 1000 + vet[6]* 100 + vet[7] * 10 + vet[8]);


   if (vet[0] < -2 || vet[1] < -2 || vet[2] < -2 || vet[3] < -2 || vet[4] < -2 || vet[5] < -2 || vet[6] < -2 || vet[7] < -2 || vet[8] < -2 ) x = 0;
   if (vet[0] > 9 || vet[1] > 9 || vet[2] > 9 || vet[3] > 9 || vet[4] > 9 || vet[5] > 9 || vet[6] > 9 || vet[7] > 9 || vet[8] > 9)  x = 0;

   if (x == -2 || x== -1) x=0;

   Serial.println( vet[0]);
   Serial.println( vet[1]);
   Serial.println( vet[2]);
   Serial.println( vet[3]);
   Serial.println( vet[4]);
   Serial.println( vet[5]);
   Serial.println( vet[6]);
   Serial.println( vet[7]);
   Serial.println( vet[8]);

   if (vet[0] >= -2 && vet[1]  >= -2 &&  vet[2]  >= -2 &&  vet[3] >= -2 && vet[4] >= -2 && vet[5] >= -2 && vet[6] >= -2 && vet[7] >= -2 && vet[8] >= -2 &&
     vet[0] <= 9 && vet[1] <= 9 &&  vet[2] <= 9 &&  vet[3] <= 9 &&  vet[4] <= 9 &&  vet[5] <= 9 &&  vet[6] <= 9 &&  vet[7] <= 9 &&  vet[8] <= 9 )
     Serial.println(" NUMERO INSERITO  "),   Serial.println(x);

   if (x == 0)   Serial.println(" REINSERISCI UN  NUMERO DA 1 A 999999999  ")  ;




   vet[0] = -2;  
   vet[1] = -2;
   vet[2] = -2;
   vet[3] = -2;
   vet[4] = -2;
   vet[5] = -2;
   vet[6] = -2;
   vet[7] = -2;
   vet[8] = -2;      
 }
 
 if (x == 1) digitalWrite (1, HIGH);
 if (x == 101) digitalWrite (1,LOW);
 if (x == 2) digitalWrite (2, HIGH);
 if (x == 102) digitalWrite (2,LOW);
 if (x == 3) digitalWrite (3, HIGH);
 if (x == 103) digitalWrite (3,LOW);
 if (x == 4) digitalWrite (4, HIGH);
 if (x == 104) digitalWrite (4,LOW);
 if (x == 5) digitalWrite (5, HIGH);
 if (x == 105) digitalWrite (5,LOW);
 if (x == 6) digitalWrite (6, HIGH);
 if (x == 106) digitalWrite (6,LOW);
 if (x == 7) digitalWrite (7, HIGH);
 if (x == 107) digitalWrite (7,LOW);
 if (x == 8) digitalWrite (8, HIGH);
 if (x == 108) digitalWrite (8,LOW);
 if (x == 9) digitalWrite (9, HIGH);
 if (x == 109) digitalWrite (9,LOW);


}




grazie ma ho risolto da solo, dovevo scrivere case '1' con '' e funziona ecco il codice corretto
Code: [Select]
int e=5;
int d=6;
int c=7;
int r=8;
int a;
int h=3;

void setup()
{
pinMode(e, OUTPUT);
pinMode(d, OUTPUT);
pinMode(c, OUTPUT);
pinMode(r, OUTPUT);
pinMode(h, OUTPUT);
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0) {
a = Serial.read();
   switch(a){
    case '1':
   digitalWrite(e, HIGH);
   break;
   case '2':
   digitalWrite(e, LOW);
   break;
   case '3':
   digitalWrite(d, HIGH);
   break;
   case '4':
   digitalWrite(d, LOW);
   break;
   case '5':
   digitalWrite(c, HIGH);
   break;
   case '6':
   digitalWrite(c, LOW);
   break;
   case '7':
   digitalWrite(r, HIGH);
   break;
   case '8':
   digitalWrite(r, LOW);
   break;
   default:
   digitalWrite(h, LOW);
   break;
  }
}
}

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy