Arduino168 + LCD + SDshield + LM35DZ

Salut,

Voici mon projet: enregistrer un signal, l’afficher et l’enregistrer. Le tout sans ordinateur et en continu.

J’ai un Arduino avec ATmega168, un capteur LM35DZ (avec un petit ampli OP), un LCD 16*2 et un SDshield

Je ne parviens pas à faire fonctionner le SDshield et le LCD en même temps! Je ne comprend pas pourquoi alors que séparément ils fonctionnent. La led “L” reste allumée, que cela signifie t’il? Comment comprendre ce qu’elle dit?

Voici une vidéo avec le projet:

Le code avec juste le LCD

#include <LiquidCrystal.h>
LiquidCrystal lcd(5, 0, 4, 3, 2, 1);

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

void loop(){
  lcd.setCursor(2, 0);
  lcd.print("Temperature");
  lcd.setCursor(4, 1);

  lcd.print((0.0831*analogRead(0))+0.3692);
  delay(300); 
  lcd.clear();
}

Le code avec juste la carte SD

#include <byteordering.h>
#include <fat.h>
#include <FAT16.h>
#include <fat_config.h>
#include <partition.h>
#include <partition_config.h>
#include <sd-reader_config.h>
#include <sd_raw.h>
#include <sd_raw_config.h>

FAT File;      
int heat = 0;
char heat_str[4] = "   "; 

void setup(){
  File.initialize();
  File.create_file("arduino.txt"); 
  File.open();
}

void loop(){
  itoa(analogRead(0), heat_str, 10);
  File.write(heat_str);
  File.write(";");
  delay(1000);
}

Le code avec le LCD et la carte SD ne fonctionne pas :frowning: mais pourquoi?

#include <byteordering.h>
#include <fat.h>
#include <FAT16.h>
#include <fat_config.h>
#include <partition.h>
#include <partition_config.h>
#include <sd-reader_config.h>
#include <sd_raw.h>
#include <sd_raw_config.h>
#include <LiquidCrystal.h>
FAT File;      
int heat = 0;
char heat_str[4] = "   "; 


LiquidCrystal lcd(5, 0, 4, 3, 2, 1);

void setup(){
    lcd.begin(16, 2);  
  File.initialize();
  File.create_file("arduino.txt"); 
  File.open();
}

void loop(){
  lcd.setCursor(2, 0);
  lcd.print(analogRead(0));
  itoa(analogRead(0), heat_str, 10);
  File.write(heat_str);
  File.write(";");
  delay(1000);
}

Deux pistes :

  • Un conflit d’utilisation de pin entre le sd et lcd
  • programme trop gros avec les 2 librairies
    D’où vient la libraire sd ?

A+

  • programme trop gros avec les 2 librairies

+1
Ou saturation du buffer ?
Du coup le programme s’exécute par intermittence…

Test en mettant un delay(); plus important peut être.

J'utilise la librairie que j'ai trouvé ici: http://blog.flamingoeda.com/wp-content/uploads/2009/12/FAT.zip Sur ce blog: http://www.emartee.com/Modules/bbs/viewthread.php?tid=58&extra=page%3D1

J'ai testé le code qu'il propose mais mon arduino n'est pas capable de le faire tourner. J'ai réduit le code au maximum et la ca fonctionne.

Existe t'il une librairie plus récente qui est moins lourde?

Après des journées de recherche j'ai trouvé cette librairie:

http://code.google.com/p/sdfatlib/

Elle est plus légère compatible avec le SD shield Emartee

a++