danielealfa ha scritto:questo puo essere un esempio?
Quello è un codice scritto meglio, non benissimo, ci sono delle notazioni da programma C non rispettate. Lo stato per le pagine multiple è la variabile globale "menu".
danielealfa ha scritto:questo puo essere un esempio?




danielealfa ha scritto: quando vado a creare il void demo();
non me lo riconosce ...
#define BUTTON A2 // pin di input a cui è collegato il pulsante
#define LED 13
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
// Variabili
int ContatorePulsantePremuto = 0; // conta il numero di volte che il pulsante è premuto buttonPushCounter
int StatoPulsante = 0; // stato corrente del pulsante
int StatoPulsantePrecedente = 0;
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
byte smiley[8] = {
B00100,
B01110,
B11111,
B00000,
B00100,
B01110,
B11111,
};
byte sat1[8] = {
B00110,
B01110,
B01110,
B01111,
B01110,
B01110,
B01100,
};
byte sat2[8] = {
B01110,
B00100,
B01110,
B11111,
B01110,
B00100,
B11111,
};
byte sat3[8] = {
B01100,
B01110,
B01110,
B11110,
B01110,
B01110,
B00110,
};
TinyGPSPlus gps;
SoftwareSerial gpsSerial(9, 8);
const int serialTime = 200;
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
lcd.backlight();
pinMode(BUTTON, INPUT); // imposta il pin digitale come output
pinMode(LED, OUTPUT); // imposta il pin digitale come input
Serial.begin(9600);
lcd.createChar(1, smiley);
lcd.createChar(2, sat1);
lcd.createChar(3, sat2);
lcd.createChar(4, sat3);
lcd.begin(16,2);
lcd.clear();
gpsSerial.begin(9600);
lcd.setCursor(0,0);
lcd.print(" RICERCA ");
delay(1000);
lcd.setCursor(0,1);
lcd.print(" SATELLITE");
lcd.setCursor(12,1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
delay(1000);
lcd.clear();
} // end setup
void loop()
{
StatoPulsante = digitalRead(BUTTON); // legge il valore dell'input e lo conserva
if (StatoPulsante != StatoPulsantePrecedente) { // compara lo stato del pulsante attuale con il precedente
if (StatoPulsante == HIGH) { // se lo stato è cambiato incrementa il contatore
// se lo stato corrente è alto, il pulsante è passato da off a on
ContatorePulsantePremuto++;
if (ContatorePulsantePremuto == 1) { // controlla se il pulsante è stato premuto una volta
Serial.print("numero di volte tasto premuto: "); // stampa sulla console "numero di volte tasto premuto:"
Serial.println(ContatorePulsantePremuto, DEC); // stampa il numero di volte che il pulsante è stato premuto
lcd.setCursor(0,0);
lcd.print("hjhhh ");
lcd.setCursor(1,0);
lcd.print("hjhhjh");
}delay(1000);
if (ContatorePulsantePremuto == 2) { // controlla se il pulsante è stato premuto due volte
Serial.print("numero di volte tasto premuto: ");
Serial.println(ContatorePulsantePremuto, DEC);
}
if (ContatorePulsantePremuto == 3) { // controlla se il pulsante è stato premuto tre volte
Serial.print("numero di volte tasto premuto: ");
Serial.println(ContatorePulsantePremuto, DEC);
}
if (ContatorePulsantePremuto == 4) { // controlla se il pulsante è stato premuto quattro volte
Serial.print("numero di volte tasto premuto: ");
Serial.println(ContatorePulsantePremuto, DEC);
}
}
}
StatoPulsantePrecedente = StatoPulsante; // salva lo stato corrente nella variabile che indica lo stato precedente per il loop successivo
// controlla se il pulsante è stato premuto quattro volte se vero indica che è finito il ciclo
// il led lampeggia 2 volte per 50 millisecondi
// vengono inizializzate nuovamente le variabili
// si riavvia il ciclo
if (ContatorePulsantePremuto > 4) {
Serial.println("fine ciclo");
digitalWrite(LED, HIGH); // accende il LED
delay(500); // aspetta 50 millisecondi
digitalWrite(LED, LOW); // spegne il LED
delay(100); // aspetta 50 millisecondi
// inizializzazione delle variabili
ContatorePulsantePremuto = 0;
StatoPulsante = 0;
StatoPulsantePrecedente = 0;
Serial.println("mi riavvio"); // stampa sulla console "mi riavvio"
}
int start = millis();
int now = millis();
do {
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
now = millis();
} while ((now - start) < serialTime);
if (gps.altitude.isUpdated())
{
int h;
h = (gps.time.hour()) + 2;
if( 24 <= h ) {
h = h - 24;
}
if (h < 10) {
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(1,0);
lcd.print(h);
} else {
lcd.setCursor(0,0);
lcd.print(h);
}
lcd.setCursor(2,0);
lcd.print(":");
int m;
m = gps.time.minute();
if (m < 10) {
lcd.setCursor(3,0);
lcd.print("0");
lcd.setCursor(4,0);
lcd.print(m);
} else {
lcd.setCursor(3,0);
lcd.print(m);
}
}
if (gps.altitude.isUpdated())
{
lcd.setCursor(7,0);
lcd.print("Alt:");
int koudo;
koudo = (int)(gps.altitude.meters());
if (koudo == 0) {
lcd.setCursor(11,0);
lcd.print("----");
} else if (koudo < 10) {
lcd.setCursor(11,0);
lcd.print(" ");
lcd.setCursor(14,0);
lcd.print(koudo);
} else if (koudo < 100) {
lcd.setCursor(11,0);
lcd.print(" ");
lcd.setCursor(13,0);
lcd.print(koudo);
} else if (koudo < 1000) {
lcd.setCursor(11,0);
lcd.print(" ");
lcd.setCursor(12,0);
lcd.print(koudo);
} else {
lcd.setCursor(11,0);
lcd.print(koudo);
}
lcd.setCursor(15,0);
lcd.print("m");
}
if (gps.speed.isUpdated())
{
int s;
s = (int)(gps.speed.kmph());
if (s == 0) {
int satV;
satV = (int)(gps.satellites.value());
if (satV < 10){
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print(satV);
} else {
lcd.setCursor(0,1);
lcd.print(satV);
}
lcd.setCursor(2,1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.print("s ");
} else if (s < 10) {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(2,1);
lcd.print(s);
lcd.print("km/h");
} else if (s < 100) {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(1,1);
lcd.print(s);
lcd.print("km/h");
} else {
lcd.setCursor(0,1);
lcd.print(s);
lcd.print("km/h");
}
}
if (gps.course.isUpdated())
{
if ((gps.course.deg()) == 0) {
lcd.setCursor(9,1);
lcd.print("RICERCA");
}
else if ((gps.course.deg()) < 11.3) {
lcd.setCursor(9,1);
lcd.print("W--N--E");
}
else if ((gps.course.deg()) < 33.8) {
lcd.setCursor(9,1);
lcd.print("--N");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("--E");
}
else if ((gps.course.deg()) < 56.3) {
lcd.setCursor(9,1);
lcd.print("-N-");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("-E-");
}
else if ((gps.course.deg()) < 78.8) {
lcd.setCursor(9,1);
lcd.print("N--");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("E--");
}
else if ((gps.course.deg()) < 101.3) {
lcd.setCursor(9,1);
lcd.print("N--E--S");
}
else if ((gps.course.deg()) < 123.8) {
lcd.setCursor(9,1);
lcd.print("--E");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("--S");
}
else if ((gps.course.deg()) < 146.3) {
lcd.setCursor(9,1);
lcd.print("-E-");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("-S-");
}
else if ((gps.course.deg()) < 168.8) {
lcd.setCursor(9,1);
lcd.print("E--");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("S--");
}
else if ((gps.course.deg()) < 191.3) {
lcd.setCursor(9,1);
lcd.print("E--S--W");
}
else if ((gps.course.deg()) < 213.8) {
lcd.setCursor(9,1);
lcd.print("--S");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("--W");
}
else if ((gps.course.deg()) < 236.3) {
lcd.setCursor(9,1);
lcd.print("-S-");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("-W-");
}
else if ((gps.course.deg()) < 258.8) {
lcd.setCursor(9,1);
lcd.print("S--");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("W--");
}
else if ((gps.course.deg()) < 281.3) {
lcd.setCursor(9,1);
lcd.print("S--W--N");
}
else if ((gps.course.deg()) < 303.8) {
lcd.setCursor(9,1);
lcd.print("--W");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("--N");
}
else if ((gps.course.deg()) < 326.3) {
lcd.setCursor(9,1);
lcd.print("-W-");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("-N-");
}
else if ((gps.course.deg()) < 348.8) {
lcd.setCursor(9,1);
lcd.print("W--");
lcd.setCursor(12,1);
lcd.write(1);
lcd.setCursor(13,1);
lcd.print("N--");
}
else {
lcd.setCursor(9,1);
lcd.print("W--N--E");
}
}
}




}
}
}
if (ContatorePulsantePremuto == 3) { // controlla se il pulsante è stato premuto tre volte
Serial.print("numero di volte tasto premuto: ");
Serial.println(ContatorePulsantePremuto, DEC);
{
if (gps.altitude.isUpdated())
lcd.setCursor(0, 1);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LAT ");
lcd.print(gps.location.lat(),6 ); // Latitude in degrees (double)
lcd.setCursor(0,1);
lcd.print("LON ");
lcd.print(gps.location.lng(), 6); // Longitude in degrees (double)
lcd.print(millis()/1000);
int now = millis();
now =(int)(gps.altitude.isUpdated());
}
}
if (ContatorePulsantePremuto == 4) { // controlla se il pulsante è stato premuto quattro volte
Serial.print("numero di volte tasto premuto: ");
Serial.println(ContatorePulsantePremuto, DEC);
}
}


Visitano il forum: Nessuno e 32 ospiti