Go Down

Topic: Problemino sketch (Read 3 times) previous topic - next topic

cece99


Perché hai messo quel delay(5000) all'inizio del loop? In questo modo la lettura dei pulsanti viene eseguita solo 1 volta ogni 5 secondi e se non cogli l'attimo esatto potresti non leggere la pressione. Se il motivo è evitare lo sfarfallio del display, metti la stampa sul display solo ogni 500/1000 ms, con un if basato su millis, ad esempio.
Inoltre come è sempre stato detto, metti 2 letture del pin separate da un piccolo delay per evitare rimbalzi del pulsantino e letture doppie/triple.

non mi è stato detto, ora continuo le prove.....
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

leo72

Non ho che scritto che sia stato detto a te, ma che è viene sempre detto, sottintendendo il forum. :P

cece99

oggi mi sono arrivati i pulsantini e ho cominciato a provare, questo è lo sketch che è uscito  XD
Code: [Select]
byte a = 0;
byte b = 25;
int val = 0;
int val1 = 0;
int val2 = 0;
int brightness = 0;   
#include <LiquidCrystal.h>


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  pinMode(7, INPUT);     
  pinMode(8, INPUT);   
  pinMode(6, INPUT);
  lcd.begin(16, 2);
  lcd.print("Luci presepe by");
  lcd.setCursor(0, 1);
  lcd.print("Cesare Cacitti  ");
  delay(5000);
 
}

void loop() {
    lcd.setCursor(0, 0);
  lcd.clear();
  lcd.print("Giorno:");
  lcd.print(a);
  lcd.setCursor(0, 1);
  lcd.print("Notte:");
  lcd.print(b);
  delay(100);

 

 

       val = digitalRead(7);
    if (val == HIGH) { 
    a=a-1;
  } 

      val1 = digitalRead(8);
    if (val1 == HIGH) { 
    a=a+1;
  } 


  } 

quello che vorrei fare è riuscire a mettere un interruttore che quando è chiuso mi permette di cambiare i tempi, e quando lo apro, mi fa partire una funzione basata sul fade, che mi fa fare il fade sul led con velocità della variabile a che ho già impostato con quella variabile.
Qualcuno potrebbe integrarmi nello sketch, un if (che funziona) nel quale dopo inserisco il fade?
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

tuxduino

Perché delay(5000) dopo il setup ?

Studiati bene blink without delay. Leggi ogni pulsante ogni 20-50ms (prova per vedere qual è il valore che dà la "responsività" migliore), e quando rilevi un cambio di stato (da premuto a rilasciato o viceversa) modifica il contatore.

Per quanto riguarda il fade, anche quello va inserito con la tecnica di blink without delay, altrimenti ti trovi a leggere i pulsanti solo all'inizio o alla fine del ciclo di fade, col risultato che l'oggetto diventa inutilizzabile.

PS: CTRL+T prima di postare il codice, grazie!

leo72


Perché delay(5000) dopo il setup ?

Per la schermata iniziale col suo nome  :P

Go Up