Go Down

Topic: Valore potenziometro su schermo porta seriale (Read 1 time) previous topic - next topic

toti94

ecco il codice:
Code: [Select]

int led1= 11;
int led2= 10;
int led3= 9;
int pausa_corta;
int pausa_lunga;
int i;
void setup ()
{
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
}
void loop()
{
 pausa_lunga= analogRead(0);
 pausa_corta= pausa_lunga/2;
 Serial.print (pausa_lunga);
 digitalWrite (led1, HIGH);
 delay (pausa_lunga);
 digitalWrite (led2, HIGH);
 delay (pausa_lunga);
 digitalWrite (led3, HIGH);
 delay (pausa_lunga);
 digitalWrite (led1, LOW);
 delay (pausa_lunga);
 digitalWrite (led2, LOW);
 delay (pausa_lunga);
 digitalWrite (led3, LOW);
 delay (pausa_lunga);
 for (i=0; i<5; i++)
 {
   digitalWrite (led1, HIGH);
   delay (pausa_corta);
   digitalWrite (led2, HIGH);
   digitalWrite (led1, LOW);
   delay (pausa_corta);
   digitalWrite (led3, HIGH);
   digitalWrite (led2, LOW);
   delay (pausa_corta);
   digitalWrite(led3, LOW);
 }
 delay (pausa_lunga);  
}


Ma non scrive sul monitor della porta seriale.

p.s.: Madwriter se cancelli la tua risposta sull'altro topic allora posso cancellare il topic

PaoloP

#16
Jun 27, 2012, 05:44 pm Last Edit: Jun 27, 2012, 05:49 pm by PaoloP Reason: 1

Ah quindi mi basta scrivere Serial.print (nome_variabile); ?
Mentre per quanto riguarda il potenziometro sulla breadboard?


Non c'è nessun problema a incastrare il potenziometro sulla breadboard --> http://franzcesco.wordpress.com/2009/12/15/secondo-step/#more-13

Poi per collegarli usi questi

Hai detto di averli nel kit di Arduino, giusto?

EDIT: E ricorda che ci sono delle parola che è meglio non tradurre perchè potrebbero perdere di significato o creare confusione.
Quindi lascia "Serial Monitor" come Serial Monitor e non tradurlo come Schermo Seriale o Schermo Porta Seriale.  :smiley-sweat: E' più comprensibile.

toti94

Grazie paolo ma il mio potenziometro ha dei piedini sotto che danno fastidio e non riesco a mettere per bene i terminale sulla breadboard .
Comuqnue ho saldato 3 fili e mi funziona bene ma l'unico problema è che non vedo i risultati sul serial monito XD

Madwriter

ti ho risposto su,hai mancato l'inizializzazione copiala dal post di sopra incollala e vedi che funziona tutto  ;)
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

toti94

Ok ora funziona tutto :D, ho anche inserito un if di debug, altrimenti la pausa al  minimo mi dava dei valori strani e faceva spegnere definitivamente i led :)
Code: [Select]

int led1= 11;
int led2= 10;
int led3= 9;
int pausa_corta;
int pausa_lunga;
int i;
void setup ()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}
void loop()
{
  Serial.begin (9600);
  pausa_lunga= analogRead(0);
    if (pausa_lunga <2)
  {
    pausa_lunga=2;
  }
  pausa_corta= pausa_lunga/2;
  Serial.print (pausa_lunga);
  Serial.print ("\t");
  Serial.print (pausa_corta);
  Serial.print ("\t");
  digitalWrite (led1, HIGH);
  delay (pausa_lunga);
  digitalWrite (led2, HIGH);
  delay (pausa_lunga);
  digitalWrite (led3, HIGH);
  delay (pausa_lunga);
  digitalWrite (led1, LOW);
  delay (pausa_lunga);
  digitalWrite (led2, LOW);
  delay (pausa_lunga);
  digitalWrite (led3, LOW);
  delay (pausa_lunga);
  for (i=0; i<5; i++)
  {
    digitalWrite (led1, HIGH);
    delay (pausa_corta);
    digitalWrite (led2, HIGH);
    digitalWrite (led1, LOW);
    delay (pausa_corta);
    digitalWrite (led3, HIGH);
    digitalWrite (led2, LOW);
    delay (pausa_corta);
    digitalWrite(led3, LOW);
  }
  delay (pausa_lunga); 
}


Grazie mille RAGA :D

tonid

Ciao  Serial.begin (9600); ti conviene metterla nella void setup , serve inizializzarla una sola volta,all'accensione dell'arduino e poi basta.


PaoloP

Per i led puoi anche usare i #define
La variabile i poichè è interna al ciclo la puoi dichiarare nel for
Prima del Serial.begin nel setup  conviene sempre mettere una pausa di 2 secondi come sistema anti brick.

Code: [Select]
#define led1 11
#define led2 10
#define led3 9

int pausa_corta;
int pausa_lunga;

void setup ()
{
  delay(2000); //Anti Serial Brick
  Serial.begin (9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  Serial.println("Arduino Start");
}

void loop()
{
  pausa_lunga= analogRead(0);
  if (pausa_lunga <2)
  {
    pausa_lunga=2;
  }
  pausa_corta= pausa_lunga/2;
  Serial.print (pausa_lunga);
  Serial.print ("\t");
  Serial.print (pausa_corta);
  Serial.print ("\t");
  digitalWrite (led1, HIGH);
  delay (pausa_lunga);
  digitalWrite (led2, HIGH);
  delay (pausa_lunga);
  digitalWrite (led3, HIGH);
  delay (pausa_lunga);
  digitalWrite (led1, LOW);
  delay (pausa_lunga);
  digitalWrite (led2, LOW);
  delay (pausa_lunga);
  digitalWrite (led3, LOW);
  delay (pausa_lunga);
  for (int i=0; i<5; i++)
  {
    digitalWrite (led1, HIGH);
    delay (pausa_corta);
    digitalWrite (led2, HIGH);
    digitalWrite (led1, LOW);
    delay (pausa_corta);
    digitalWrite (led3, HIGH);
    digitalWrite (led2, LOW);
    delay (pausa_corta);
    digitalWrite(led3, LOW);
  }
  delay (pausa_lunga); 
}

toti94

Scusa l'ignoranza ma cosa sarebbe questo anti brick?

PaoloP

Detto in parole povere serve per evitare che all''accensione, dopo il bootloader, venga subito inizializzata la seriale. Questo a volte impedisce l'upload dello sketck perché la seriale continua sparare dati.
Con la pausa iniziale si evita questo.
Altri utenti del forum potranno essere più chiari su questo punto.

Go Up