Pages: [1] 2 3 ... 5   Go Down
Author Topic: Problemino sketch  (Read 3356 times)
0 Members and 1 Guest are viewing this topic.
Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oggi stavo preparando uno sketch per fare una centralina di luci per presepe, lo sketch non è completo ma ho già avuto dei problemi con i pulsanti che aumentano o diminuiscono il tempo di alba tramonto.
Questo è lo sketch, per il momento mostra i dati su un display lcd, a me pasta incrementare il valore delle 2 variabili che vengono stampater, x il pwm dopo mi arrangio smiley-lol.
Code:

int a = 0;
int b = 25;
int val = 0;
int val1 = 0;
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  pinMode(7, INPUT);     
  pinMode(8, INPUT);   
  lcd.begin(16, 2);
  lcd.print("Luci presepe by");
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print("Cesare Cacitti  ");
 
}

void loop() {

  delay(5000);
    val = digitalRead(7);
    if (val == HIGH) { 
    a=a+1;
  } 
 
      val1 = digitalRead(8);
    if (val1 == HIGH) { 
    a=a-1;
  } 
 
  lcd.setCursor(0, 0);
  lcd.clear();
  lcd.print("Giorno:");
  lcd.print(a);
  lcd.setCursor(0, 1);
  lcd.print("Notte:");
  lcd.print(b);

 
}
Grazie
« Last Edit: September 15, 2012, 04:29:53 am by cece99 » Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22658
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E che problemi hai? Se non lo dici...  smiley-razz
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 564
Posts: 12461
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

è da ieri che sta dando i numeri, povero cecé, così giovane, già preda di sostanze dannose....
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

è da ieri che sta dando i numeri, povero cecé, così giovane, già preda di sostanze dannose....
praticamente se premo i bottoncini i numeri non cambiano in pratica non risponde ai miei comandi smiley-lol.
Menny, sai alla fine cos era? avevo inserito male il chip nella breadboard e faceva falso contatto (eppure l'ho inserito e disinserito una 10ina di volte -.-')
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22658
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.....
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22658
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho che scritto che sia stato detto a te, ma che è viene sempre detto, sottintendendo il forum. smiley-razz
Logged


Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

oggi mi sono arrivati i pulsantini e ho cominciato a provare, questo è lo sketch che è uscito  smiley-lol
Code:
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?
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22658
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perché delay(5000) dopo il setup ?
Per la schermata iniziale col suo nome  smiley-razz
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah, già! Una volta l'ho fatto anch'io... ma solo per mostrare il nome del programma (e poi erano solo 3 secondi smiley-razz )
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda  smiley-roll-sweat.
Comunque non ci capisco nulla!
Ho creato uno sketch (non funzionante) per farvi capire cosa dovrei fare:
Code:
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);
       val1 = digitalRead(8);
    if (val1 == HIGH) { 
   
       val = digitalRead(7);
    if (val == HIGH) { 
    a=a-1;
  } 
 
      val1 = digitalRead(8);
    if (val1 == HIGH) { 
    a=a+1;
  } 
 else {
   //codice fade
  } 

 

    }


  } 
 

 
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda.

Autoformattazione del codice. La voce di menu è Strumenti => Formattazione automatica. Su Linux indica l'hotkey CTRL+T, su Mac non so.
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
E cosa farebbe sto control T prima di postare il cosice, su mac os x mi apre una nuova scheda.

Autoformattazione del codice. La voce di menu è Strumenti => Formattazione automatica. Su Linux indica l'hotkey CTRL+T, su Mac non so.
ok, ma nessuno sa aiutarmi?
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ok, ma nessuno sa aiutarmi?

Allora siamo a questo punto: hai due pulsanti. Premendo uno di questi una variabile va incrementata. Premendo l'altro, la stessa variabile va decrementata.

Ti è stato fornito materiale in abbondanza per approfondire. Ti sono stati dati suggerimenti (vedi il debounce con doppia lettura), ma il tuo codice è ancora lì senza nemmeno una indentazione decente.

Scusa, ma secondo me prima di chiedere altro aiuto dovresti mostrare più impegno  smiley-razz
Logged

Pages: [1] 2 3 ... 5   Go Up
Jump to: