Pages: [1]   Go Down
Author Topic: primo programma  (Read 181 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 25
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti,
è da circa un mesetto che mi sto divertendo a programmare Arduino !
ho voluto creare il mio primo programma con le conoscenze che ho e... che dire ... sono soddisfatto del risultato ottenuto .
lo scopo del programma è quello di accendere due led con lo stesso pulsante;
il primo led si accende quando premo una sola volta il pulsante, mentre quando lo premo la seconda volta spegne il primo led e accende il secondo.
questo è il codice scritto da me
Code:
]int statopulsante=0;
int pulsante =10;
int casi=0;
int led=6;
int led2=5;
void setup()
{
Serial.begin(9600);
pinMode(pulsante,INPUT);
pinMode(led,OUTPUT);

}

void loop()
{ statopulsante=digitalRead(pulsante);
  if(( statopulsante==HIGH) and(casi==0))
    {
     Serial.println("pulsante 1");
     Serial.println(casi);
     //digitalWrite(led,HIGH);
     delay(1000);
     casi=1;
    }
 else if((statopulsante==HIGH)and(casi==1))
    {
     Serial.println("pulsante premuto 2");
     Serial.println(casi);
     //digitalWrite(led2,HIGH);
     delay(1000);
     casi=2;
    
    }
 else if ((statopulsante==HIGH)and(casi==2))
    {
     casi=3;
    }
 switch(casi)
    {
    case 1:
    digitalWrite(led,HIGH);
    //delay(1000);
    Serial.println("ok");
    break;
    case 2:
    digitalWrite(led,LOW);
    delay(100);
    digitalWrite(led2,255);
    
    break;
    case 3:
    digitalWrite(led2,LOW);
    casi=0;
    break;
    
    
    
    }

}

il programma funziona correttamente pero' mi sembra un po' troppo lungo e "complesso" .
mi sapreste dire cosa posso semplificare, che funzioni usare etc.... ?
grazie mille
Logged

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

ciao!!
non lo so se è il modo più giusto come ti dico io tra poco perché anche io è da poco che fruzzico con arduino, però io il programma l'avrei strutturato così:
Code:
const int led1= 6;
const int led2= 5;
const int button= 10;

void setup ()
{
  Serial.begin (9600);
  pinMode( led1, OUTPUT);
  pinMode (led2, OUTPUT);
  pinMode (button, INPUT);
}

void loop ()
{
  /*
       Qui sei nello stato iniziale 0 (tutti e due i led spenti)
       Cicli finché il bottone non piene premuto
  */
  while (digitalRead (button)==0)
  {
     digitalWrite (led1, LOW);
     digitalWrite (led2, LOW);
  }
  // Sei uscito dal ciclo cioè viene premuto il pulsante. Transiti nello stato 1 (un led acceso)
  while (digitalRead (button) == 0)
  {
    digitalWrite (led1, HIGH);
    digitalWrite (led2, LOW);
  }

  // Sei uscito dal ciclo perché viene premuto il pulsante. Transiti nello stato 2 (l'altro led acceso)
  while (digitalRead (button)==0)
  {
    digitalWrite (led1, LOW);
    digitalWrite (led2, HIGH);
  }

  // Sei uscito dal ciclo perché viene premuto il pulsante, Ritorni all'inizio dl loop (stato 0)
}
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non l'ho provato.
Code:
const int pulsante = 10;
int casi = 0;
const int led = 6;
const int led2 = 5;

void setup()
{
// Serial.begin(9600);
pinMode(pulsante, INPUT);
pinMode(led, OUTPUT);
}

void loop()
{
if(digitalRead(pulsante) == HIGH) casi++;
delay(30);
// Serial.print("pulsante ");
// Serial.println(casi % 3);
// delay(1000);
switch(casi % 3)
{
case 0:
digitalWrite(led, HIGH);
break;
case 1:
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
break;
case 2:
digitalWrite(led2, LOW);
break;
}
}
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 3
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bello io sono ancora un po indietro però sono un mago a scopiazzare  smiley-yell
non mi è sempre tutto chiaro ancora, volevo sapere perché hai messo il serial.begin (9600);
Solo PaoloP lo ha messo ma poi lo ha barrato //

ciao smiley
Logged

幸運の星

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6986
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io l'ho commentato perché ho supposto che inizialmente fosse utilizzato come "debug", ovvero per vedere se il programma fa quello che deve fare.
Poi si commenta perché ai fini del funzionamento è inutile.
Diverso sarebbe se il programma deve spedire il numero del caso al PC che lo utilizzerebbe per ulteriori elaborazioni. In quel cosa è necessario.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1]   Go Up
Jump to: