Pages: [1]   Go Down
Author Topic: Scritta scorrevole a tempo e poi attivazione degli Ingressi  (Read 1011 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve.
Un saluto a tutto il Forum (new iscritto e new possessore di Arduino).
Dopo alcuni esperimenti di base led ecc. sono approdato al Display e sono riuscito a visualizzare una scritta scorrevole con questo:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  lcd.begin(16, 2);
}
void loop() {
  lcd.print(" - - ** brambilla ** - -  ");
  lcd.setCursor(0, 1);
  lcd.print("             -  Bianchi Rossi  -  ");
  lcd.scrollDisplayLeft();
  delay(500);
}

Le scritte sono volutamente casuali.... il problema è questo questa scritta scorrevole deve essere visualizzata a tempo per 60/120 sec. poi Arduino deve ignorarla del tutto e passare alla lettura degli ingressi (ne bastano due) e visualizzare una nuova scritta fissa (riga in alto)
e possibilmente data e ora, seconda riga in basso, ma rimanendo sempre vigile nella lettura continua degli ingressi.
Al variare dello stato logico di uno o entrambi gli ingressi si deve attivare una o due uscite temporizzate (es. 60 120 o più sec.) magari visualizzando una nuova scritta es. "Allarme attivato".
In pratica si tratta di un semplice antifurto da testare inizialmente con dei pulsanti. Mi sono fermato al primo problema visualizzare la scritta scorrevole per un tempo determinato e passaggio alla lettura degli ingressi.
Ho cercato qualcosa in rete es. istruzioni If for ma i miei test hanno comportato solo errori.Come posso risolvere e dove studiare eventualmente per raggiungere il mio obiettivo.
Riguardo data e ora immagino che occore una Shield esterna con batteria tampone (esiste una Shield con ricezione di data e ora radiocontrollata ?)
Domanda più complicata si può riservare un'area del display per visualizzare il down dei sec. (es.3 colonne per visualizzare da 120 sec. fino a 0) ovviamente le scritte devono ignorare del tutto queste tre colonne.
Sicuramente sto chiedento troppo... ma mi accontento di sperimentare a piccoli passi la mia è una semplice panoramica su quello che vorrei realizzare, mi basta risolvere per adesso almeno il primo punto scritta temporizzata e poi lettura costante degli ingressi.
Grazie per il cortese aiuto.
Buon Natale a tutti.
« Last Edit: December 24, 2011, 11:15:56 am by auriol » Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22759
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Guardati l'esempio BlinkWithoutDelay allegato all'IDE per capire come fare i conteggi del tempo senza bloccare gli sketch.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho letto l'esempio in parte già letto altrove, che utilizza millis invece di delay per consentire ad altro codice di girare.
Io nella prima fase scritte scorrevoli (che funzionano senza problemi) non devo far girare nulla anzi Arduino deve fare solo quello per 120 Sec ed estraniarsi da tutto. Solo dopo questi 120Sec. deve passare ad altro codice che legge costantemente uno o due ingressi e a cambiamento logico degli stessi attivare una o due uscite, al momento mi basta questo, anche se nel thread mi solo allargato in altre opzioni interessanti, ma non proprio semplici per me.
Non ho ben capito fra l'altro come incastrare due o più codici  / concatenarli e condizionare il passaggio da un blocco ad un'altro in base alle variabili in gioco. Il problema è che in rete si trovano centinaia di giochini singoli che presi a se stante sono OK ma creare qualcosa di proprio è un'altra cosa.
Esiste un buon manuale pratico on line in Italiano che non riguardi esperimenti autonomi fine a se stessi?
Perchè scarseggiano (solo un progetto interessante con display trovato in rete) progetti di antifurto con Arduino? a parte il giochino con la fotoresistenza che non fa testo. Io parlo  di roba seria... di ritardo di uscita preallarme / temporizzazione allarme combinatore telefonico, in pratica una centralina con caratteristiche almeno semiprofessionali.
Saluti.
« Last Edit: December 24, 2011, 11:17:21 am by auriol » Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22759
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Puoi fare una cosa del genere:

Code:
unsigned long contatore;
int frequenza=250; //la frequenza in ms tra un controllo e l'altro

void setup() {
  ....
  faiVedereScrittaScorrevole(); //la tua scritta per 120 sec messa in una subroutine
  contatore=millis()+frequenza; //inizializzo il contatore
}

void loop() {
  if (millis()>contatore) { //è passato il tempo preimpostato
    controllaSensore1();
    controllaSensore2();
    faiQuelCheDeviFare();
    contatore=millis()+frequenza;
  }
}


Dopo una prima visualizzazione della scritta, il codice cicla all'infinito, leggendo ogni X ms i sensori e facendo le operazioni preimpostate (sarà tuo conto metterci i codici nelle subroutine che ho messo a caso), poi riprepara il contatore per il successivo controllo.
Logged


Pages: [1]   Go Up
Jump to: