spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Arduino

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #11  
Vecchio 24-01-2016, 20.04.48
888vita 888vita non è collegato
Robottaro senior
 
Data registrazione: 13-02-2015
Residenza: ITALIA
Messaggi: 53
Potenza reputazione: 22
888vita E' per ora ancora un mistero
Predefinito

chi mi spiega questo?

quando carico il primo sketchup e regolo l'ora e la data e scollego l'Arduino l'ora rimane ferma,


primo sketchup

#include "Wire.h"
#include <LiquidCrystal.h> //include la libreria per il funzionamento dell'lcd

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //settia le uscite di arduino per lcd
float tempC; //dichiarazione di variabile
int tempPin = 0; //inizializzazione del pin di Arduino

#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527

void setup(){
lcd.begin(16, 2); // setta del numero delle colonne e delle righe
Wire.begin();

Serial.begin(9600);
setDateTime(); //MUST CONFIGURE IN FUNCTION
}

void loop(){
printDate();
delay(100);
}

void setDateTime(){

byte second = 0; //0-59
byte minute = 30; //0-59
byte hour = 20; //0-23
byte weekDay = 2; //1-7
byte monthDay = 24; //1-31
byte month = 01; //1-12
byte year = 16; //0-99

Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator

Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));

Wire.write(zero); //start

Wire.endTransmission();

}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}

void printDate(){

// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();

Wire.requestFrom(DS1307_ADDRESS, 7);

int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());

//print the date EG 3/1/11 23:59:59
lcd.setCursor(0, 0); // setta il cursore sulla seconda riga al primo carattere
lcd.print(monthDay);
lcd.print("/");
lcd.print(month);
lcd.print("/");
lcd.print(year);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.print(second);

}



ma se regolo l'ora con il primo sketchup e subito dopo carico un il secondo sketchup l'ora e la data rimane memorizzata e continua a funzionare con la sua batteria tampone.


chi mi spiegate come mai?



questo e il secondo sketchup, non e mio lo trovato su internet


#include "Wire.h"
#define DS1307_ADDRESS 0x68
#include <LiquidCrystal.h>

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

void setup(){
lcd.begin(16, 2);
Wire.begin();
Serial.begin(9600);
}

void loop(){
printDate();
delay(1000);
}

byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}

void printDate(){

// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);

byte zero = 0x00;
Wire.write(zero);
Wire.endTransmission();

Wire.requestFrom(DS1307_ADDRESS, 7);
lcd.clear ();
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());

//print the date EG 3/1/11 23:59:59
lcd.setCursor(0, 0);
lcd.print(monthDay);
lcd.print("/");
lcd.print(month);
lcd.print("/");
lcd.print(year);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(hour);
lcd.print(":");
lcd.print(minute);
lcd.print(":");
lcd.print(second);

}
Rispondi citando
  #12  
Vecchio 25-01-2016, 21.04.57
bernie bernie non è collegato
Robottaro sostenitore
 
Data registrazione: 24-07-2003
Messaggi: 628
Potenza reputazione: 82
bernie E' sulla buona strada
Predefinito

Penso che le ragioni potrebbero essere due ,
il primo sketch non riavvia l'orologio e quindi l'ora non cambia anche se viene memorizzata , quando carichi il secondo sketch riparte l'orologio

altra possibilità , potrebbe essere che ti ricarica sempre l'ora e quindi tu non la vedi cambiare , ma se carichi il secondo ( che non scrive l'ora) va bene .
Rispondi citando
  #13  
Vecchio 27-01-2016, 08.46.26
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 303
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

il ciclo loop del primo attende solo 100mS mentre nel secondo aspetta 1s, errore di battitura o è veramente così?
Non sarà che 100mS sono troppo pochi per reinterrogare il chip?
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Problema funzionamento ds1307 stecamux Arduino 27 09-03-2015 21.48.14
problemi grossi con time clock ds1307 e mikroC VILLO P. in C, C++ 0 26-09-2009 11.31.30
maxim 7300 dwz Elettronica 1 25-08-2005 13.59.44
maxim 4427 dwz Elettronica 5 02-12-2004 14.01.19
maxim rinux Forum generale 0 07-04-2003 16.20.00


Tutti gli orari sono GMT. Adesso sono le: 08.55.16.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB