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
  #1  
Vecchio 06-03-2015, 15.29.16
stecamux stecamux non è collegato
Robottaro senior
 
Data registrazione: 17-10-2014
Residenza: agliana
Età : 44
Messaggi: 39
Potenza reputazione: 25
stecamux E' per ora ancora un mistero
Predefinito Problema funzionamento ds1307

Ciao a tutti, dopo alcuni problemi con il mio progetto ritorno qui per chiedervi ulteriori aiuti

Sono arrivato al momento di inserire nel progetto di controllo della vasca il modulo ds1307 per avere un controllo sull'orario, visibile sullo schermo tft e inoltre poter salvare i dati delle variabili con data e ora di riferimento sulla scheda sd.
lo sketch complessivo è questo:

Codice:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <tinyFAT.h>
#include <UTFT.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
#include <Wire.h>
#include "RTClib.h"
#define ONE_WIRE_BUS 12

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tmp_address;
double temp0=0;
double temp1=0;
int numberOfDevices;

int LED=10;	                //Pin13 = LED
// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

RTC_DS1307 RTC;

UTFT         myGLCD(ITDB32S, 38, 39, 40, 41);   // Remember to change the model parameter to suit your display module!

// Set up UTouch...
UTouch        myTouch(6,5,4,3,2);
UTFT_Buttons  myButtons(&myGLCD, &myTouch);
#define SensorPin 0          //pH meter Analog output to Arduino Analog Input 0
unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
double phRif = 4.40;
int buf[10],temp,x,y;
int butmenu;

void setup()

{

  // start serial port

  Serial.println("Dallas Temperature IC Control Library Demo");
  numberOfDevices = 1;
  // Start up the library
  sensors.begin();

  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);

  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);

  pinMode(LED, OUTPUT);			  //LED set to output
    
  Serial.println("Ready");    //Test the serial monitor
  UTFT_Buttons  myButtons(&myGLCD, &myTouch);
  
   Serial.begin(57600);
    Wire.begin();
    RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}
void loop()


{ 

  for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  { 
    buf[i]=analogRead(SensorPin);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }




  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  double phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;                      //convert the millivolt into pH value
  myGLCD.print("CONTROLLO ACQUARIO",CENTER ,2);
  myGLCD.print("STECAMUX 2015",CENTER ,15);
  Serial.print("    pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");
  myGLCD.print("Val. Ph.", 190, 60 );
  myGLCD.printNumF(phValue, 2, 190, 70);
  
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  
  temp0 = sensors.getTempCByIndex(0);
  temp1= sensors.getTempCByIndex(1);
  myGLCD.print("Temp. Impianto", 190, 117);
  myGLCD.printNumF(temp0,2, 190, 130);
  
  myGLCD.print("Temp.   Acqua", 190, 85);
  myGLCD.printNumF(temp1, 2, 190, 100);
  
  myGLCD.drawLine(160,53,160,150);
  myGLCD.drawRoundRect(1,50,319,150);
  myGLCD.print("Rif. Ph", CENTER, 180);
  myGLCD.printNumF(phRif, 2, CENTER, 190);
  myGLCD.print("Rele'", 50, 85);
  myGLCD.setFont(BigFont);
  myGLCD.drawRect(13,162,53,202);
  myGLCD.print("+", 27, 178);
  myGLCD.drawRect(273,162,313,202);
  myGLCD.print("-", 288, 178);
  
   DateTime now = RTC.now();
     myGLCD.setFont(SmallFont);
    myGLCD.printNumI(now.day(), 28,27);
    myGLCD.print("/",43,27);
     myGLCD.printNumI(now.month(), 53,27);
     myGLCD.print("/",60,27);
     myGLCD.printNumI(now.year(),73,27);
    
    myGLCD.printNumI(now.hour(), 200, 27 );
    myGLCD.print(":",225,27);
    myGLCD.printNumI(now.minute(),240, 27);
    myGLCD.print(":", 265,27);
    myGLCD.printNumI(now.second(), 290,27);
  
    
    
  
  myGLCD.setFont(SmallFont);
  if (myTouch.dataAvailable()== true)
  {
    myTouch.read();
    x= myTouch.getX();
    y=myTouch.getY();
    if ((y>=160) && (y<=200))
    {
      if ((x>=10)&&(x<=50))
      {
        phRif = phRif+0.05;
        Serial.print(phRif);
        myGLCD.printNumF(phRif, 2, CENTER, 200);
        delay (500);
        myGLCD.print("       ", CENTER, 200); 
      }
      else if ((x>270)&&(x<310))
      {
        phRif = phRif-0.05;
        myGLCD.printNumF(phRif, 2, CENTER, 200);
        delay (500);
        myGLCD.print("       ", CENTER, 200); 
      }
    }
  }

  { 
    if (phValue < phRif)                        //temperatura maggiore o uguale a valore ph impostato led spento
    {
      digitalWrite (LED, LOW);	
      Serial.print("Relè Disattivato");    //led acceso
      myGLCD.print("Disattivato", 40, 100);
    }
    else	if (phValue >= phRif)                //temperatura minore o uguale a valore ph impostato led acceso
    {
      digitalWrite (LED, HIGH); 

      Serial.print(" Attivato");    //led spento
      myGLCD.print("Attivato", 40, 100);
    }
  }
}
il problema sta nel fatto che l'orario salta alcuni secondi (credo si tratti di un problema di loop ma soprattutto a volte salta di parecchi secondi (es da 09 va a 19-29-39) oppure a volte conteggia i secondi arrivando a 70-90 o più....
da cosa dipende secondo voi??
Rispondi citando
  #2  
Vecchio 06-03-2015, 19.34.03
L'avatar di aldofad
aldofad aldofad non è collegato
Robottaro sostenitore
 
Data registrazione: 22-01-2007
Residenza: Treviso
Età : 43
Messaggi: 936
Potenza reputazione: 89
aldofad Il suo nome è noto a tutti
Invia un messaggio via MSN a aldofad Send a message via Skype™ to aldofad
Predefinito

Dal codice errato
Rispondi citando
  #3  
Vecchio 06-03-2015, 19.43.30
leleastro leleastro non è collegato
Robottaro senior
 
Data registrazione: 28-08-2006
Residenza: Italia
Età : 31
Messaggi: 52
Potenza reputazione: 154
leleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua fama
Predefinito

Ma se usi solo arduino e il ds1307 (togliendo tutto il resto) e visualizzi l'ora con il monitor seriale funziona bene?
In ogni caso da quello che dici sembra che sia un problema di caratteri che rimangono stampati sullo schermo quando ad esempio riparte il conteggio dei secondi tipo
Codice:
1
2
...

...
58
59
00
10
20
30
...
__________________
"Physics is like sex. Sure it may give some practical results but that's not why we do it." Richard Feynman

Ultima modifica di leleastro : 06-03-2015 alle ore 19.46.31
Rispondi citando
  #4  
Vecchio 06-03-2015, 20.40.56
stecamux stecamux non è collegato
Robottaro senior
 
Data registrazione: 17-10-2014
Residenza: agliana
Età : 44
Messaggi: 39
Potenza reputazione: 25
stecamux E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da aldofad Visualizza messaggio
Dal codice errato
un genio!!
Rispondi citando
  #5  
Vecchio 06-03-2015, 20.42.17
stecamux stecamux non è collegato
Robottaro senior
 
Data registrazione: 17-10-2014
Residenza: agliana
Età : 44
Messaggi: 39
Potenza reputazione: 25
stecamux E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da leleastro Visualizza messaggio
Ma se usi solo arduino e il ds1307 (togliendo tutto il resto) e visualizzi l'ora con il monitor seriale funziona bene?
In ogni caso da quello che dici sembra che sia un problema di caratteri che rimangono stampati sullo schermo quando ad esempio riparte il conteggio dei secondi tipo
Codice:
1
2
...

...
58
59
00
10
20
30
...
hai ragione!!
praticamente quando i secondi ripartono da 0 scrive il n 1 sopra le decine anziche sopra le unità! che rimangono a 9! come risolvo??

Ultima modifica di stecamux : 06-03-2015 alle ore 20.45.51
Rispondi citando
  #6  
Vecchio 07-03-2015, 13.02.32
leleastro leleastro non è collegato
Robottaro senior
 
Data registrazione: 28-08-2006
Residenza: Italia
Età : 31
Messaggi: 52
Potenza reputazione: 154
leleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua fama
Predefinito

Ad esempio se hai un numero minore di 10 gli fai scrivere prima uno zero.
__________________
"Physics is like sex. Sure it may give some practical results but that's not why we do it." Richard Feynman
Rispondi citando
  #7  
Vecchio 07-03-2015, 15.59.42
L'avatar di greybear
greybear greybear non è collegato
Moderator
 
Data registrazione: 05-05-2003
Residenza: Roma
Età : 62
Messaggi: 1,345
Potenza reputazione: 187
greybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua fama
Invia un messaggio via Yahoo a greybear
Predefinito

Citazione:
Orginalmente inviato da stecamux Visualizza messaggio
un genio!!
E' la pura verità. I problemi hardware di Arduino non sono molti.
Io ho approdato recentemente su Arduino per un progetto di ricerca ed ho approcciato come molti arduinisti facendo il copia-incolla che è il metodo più naturale per questa piattaforma considerando che ha classi software per parecchi sensori.
Poi però per tirare fuori il prodotto finito ho dovuto studiarmi a fondo sensori e classi altrimenti non andavo da nessuna parte.
Rispondi citando
  #8  
Vecchio 07-03-2015, 17.10.34
stecamux stecamux non è collegato
Robottaro senior
 
Data registrazione: 17-10-2014
Residenza: agliana
Età : 44
Messaggi: 39
Potenza reputazione: 25
stecamux E' per ora ancora un mistero
Predefinito

Ma secondo voi il codice è corretto nel complesso per la parte relativa al clock??
L'orario mi risulta sballato di 1/2 ora rispetto all'ora del pc...
Rispondi citando
  #9  
Vecchio 07-03-2015, 17.18.28
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 58
Messaggi: 5,458
Potenza reputazione: 424
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da stecamux Visualizza messaggio
un genio!!
Beh, se guardi la domanda... quella era la risposta
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #10  
Vecchio 07-03-2015, 17.25.28
leleastro leleastro non è collegato
Robottaro senior
 
Data registrazione: 28-08-2006
Residenza: Italia
Età : 31
Messaggi: 52
Potenza reputazione: 154
leleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua famaleleastro La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da leleastro Visualizza messaggio
Ma se usi solo arduino e il ds1307 (togliendo tutto il resto) e visualizzi l'ora con il monitor seriale funziona bene?
Così inizi anche a riscrivere uno sketch bello pulito
__________________
"Physics is like sex. Sure it may give some practical results but that's not why we do it." Richard Feynman
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
funzionamento md 22 aiko1288 Elettronica 15 05-02-2014 12.11.35
problemi grossi con time clock ds1307 e mikroC VILLO P. in C, C++ 0 26-09-2009 10.31.30
Strano funzionamento PORTBbits.RB1 tommyzav E. Digitale 2 23-08-2009 09.07.31
Ingranaggi : Funzionamento volo86 Meccanica e materiali 6 19-02-2009 16.57.24
Funzionamento CNY70 Rider Minisumo 11 06-01-2005 21.57.19


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


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