Il mio progetto funziona solo con il monitor seriale

Buonasera a tutti,
ho sviluppato il mio piccolo progettino per un datalogger, l'ho collegato al moitor seriale e i dati li vedo corretti e li scrive su una sd.
Se invece scollego la scheda dal pc e passo all'alimentazione autonoma, mi aspetterei di far andare tutto il sistema diretto sulla sd, invece non registra niente.

C'è qualcosa in particolare da cercare in internet per trovare una soluzione?
Ho provato un pò a cercare ma non conosco i termini giusti di ricerca e le risposte mi portano fuori strada.

Grazie

Viato che chi ti legge non e' dentro la tua testa, come fa' ad aiutarti se non ci dici come hai collegato il tutto e che sketch usi ?

Eh mi pareva troppo brutto scrivere tutto qui, volevo cercare da solo.

Premetto ovviamente che il sistema è “sporco” un pò copia e incolla ma visto che non sono esperto ho preferito compilare tutto per vedere se funziona e poi fare le pulizie dovute :o

Non siate cattivi sui commenti :slight_smile:

Il codice comunque è questo

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 4
#include <SPI.h>
#include <SD.h>    
File myFile;      
int val;
int tempPin = 1;
int senseur=0;

void setup() {
  Serial.begin(9600);

  pinMode(10, OUTPUT);
  if (!SD.begin(10)) {
  Serial.println("initialization failed!");
  return;
  }
  Serial.println("initialization done.");      
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
  Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
  while (!Serial) ; 
  delay(200);
  Serial.println("DS1307RTC Read Test");
  Serial.println("-------------------");
}
void loop() {
  
  int val=analogRead(senseur);  //luce inizio
  Serial.print("Luce = \t");
  Serial.print(val);   
  Serial.print(" \t ");         
if (val< 10) {
Serial.print("Buio \t ");
} else if (val< 200) {
Serial.print("Ombra \t ");
} else if (val< 500) {
Serial.print("Luce \t ");
} else if (val< 800) {
Serial.print(" Luminoso \t ");
} else {
Serial.print(" - Molto luminoso \t "); // luce fine
}
  
    val = analogRead(tempPin); // riga per il sensore lm
  float mv = ( val/1024.0)*5000; 
  float cel = mv/10;
  float farh = (cel*9)/5 + 32;  //finisce qui

  Serial.print("TEMPRATURE = \t"); //print lm
  Serial.print(cel);
  Serial.print(" \t *C, \t"); //prit fine lm

   int chk;
  Serial.print("DHT11, \t");
  chk = DHT.read(DHT11_PIN);    // READ DATA
  switch (chk){
    case DHTLIB_OK:  
                Serial.print("OK,\t"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksum error,\t"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Time out error,\t"); 
                break;
    default: 
                Serial.print("Unknown error,\t"); 
                break;
  }
 // DISPLAT DATA
  Serial.print(DHT.humidity,1);
  Serial.print(",\t");
  Serial.print(DHT.temperature,1);
  Serial.print(",\t"); 
 tmElements_t tm;

  if (RTC.read(tm)) {
   //nuovo cancellato Serial.print(", ");
     Serial.print(",\t");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
   //cancellazione Serial.print(", ");
      Serial.print(",\t");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else {
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
  }
  delay(30000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);

  myFile = SD.open("datalog.txt", FILE_WRITE); 
  if (myFile) {
  myFile = SD.open("datalog.txt", FILE_WRITE);
  myFile.print(senseur);
  myFile.print("\t");
  myFile.print((( val/1024.0)*5000)/10);
   myFile.print(",\t");
  myFile.print(DHT.humidity,1);
   myFile.print(",\t");
  myFile.println(DHT.temperature,1);
  
  myFile.close();

  }

}

Per i collegamenti ho alimentato la breadboard e con i jumer riporto le letture sulle uscite su questa shield http://www.ebay.it/itm/331473187911?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Visto che hai detto che collegato al pc ti funziona, hai provato a connettere uno dei due led di codesta shield a un pin di Arduino, caricare il Blink ( impostato per quel pin) , staccare il cavo da lPC, metterlo in alimentazione autonoma e vedere se il led lampeggia ?
Potrebbe essere un problema di alimentazioni e visto che non hai un LCD collegato, come fai a vedere se lo sketch gira

Oddio ho caricato questo sketch

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);    
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

ho testato il pin 10 13 e 4 aggiungendo un lead a resistenza ma non funziona.

Vedo però che il lead instalato sula board lampeggia, quello della shield è fisso

Per i collegamenti ho alimentato la breadboard e con i jumer riporto le letture sulle uscite su questa shield

mi sa' che se non ci fai una foto si capisce sempre poco.

ho testato il pin 10 13 e 4 aggiungendo un lead a resistenza ma non funziona.
Vedo però che il lead instalato sula board lampeggia, quello della shield è fisso

Magari hai montato al rovescio il "lead" ...

Non riesco a pubblicare le immagini.
Si blocca il portale ma vi allego il link

Grazie

pablos:
Magari hai montato al rovescio il "lead" ...

come si fa a montare il piombo alla rovescia ? (:wink: :D)

bibopm:
Non riesco a pubblicare le immagini.
Si blocca il portale ma vi allego il link

Dropbox - Error

Grazie

anche dalle foto si capisce poco, a quali pin sono connessi i cavetti rosso verde ed a quali i due bianchi ?

Ho scoperto questo programma interessante, speriamo così si capisca.

Fate finta che al posto della board ci sia la shield con la sd.

Lo sketch è quello sopra riportato.

bibopm:
Ho scoperto questo programma interessante, speriamo così si capisca.

Fate finta che al posto della board ci sia la shield con la sd.

Lo sketch è quello sopra riportato.

Scusa ma. Perchè metti la resistenza tra positivo e negativo??? E il led praticamente senza resistenza??? Se lo attacchi al pin 13 leva la resistenza che hai messo tra positivo e negativo. E se proprio la vuoi mettere mettila almeno al posto del ponticello.

Non sapevo di essere così scarso.
MI pareva di aver capito così in un esercizio precedente.
Adesso faccio le prove e vi dico :frowning:

Ho trovato...lampeggia. Sono contento.
Quindi la shield che memorizza i dati mi pare di capire che funziona.
Giusto?

Scusate, mi tocca uppare :o
Per me è importante trovare una soluzione

La prova che dovevi fare era se il led si accendeva ( e lampeggiava ) con alimentazione esterna.
stacca quindi il cavo dalla USB collega un alimentatore esterno e vedi cosa fa’

Se scollego l'alimentratore da USB e passo all'alimentazione sterna non noto differenze.
Il led lampeggia comunque

bene, allora torniamo al quesito iniziale

ho sviluppato il mio piccolo progettino per un datalogger, l'ho collegato al moitor seriale e i dati li vedo corretti e li scrive su una sd.
Se invece scollego la scheda dal pc e passo all'alimentazione autonoma, mi aspetterei di far andare tutto il sistema diretto sulla sd, invece non registra niente.

come fai a dire che non registra niente?
Hai controllato se sulla SD c'e' quel file ?

nella funzione setup() elimina questa riga:

while (!Serial) ;

sai a cosa serve?

Brunello, ho già guardato nella ad e non c'è niente.
Vbextreme proverò a cancellare quella funzione. Se non sbaglio dice di attendere il collegamento con la seriale.
Come ho inteso io in questo modo posso vedere i dati sia via seriale ma anche registrarlo su SD.

È sbagliato?