Go Down

Topic: Arduino168 + LCD + SDshield + LM35DZ (Read 832 times) previous topic - next topic

masep

Aug 13, 2010, 01:13 pm Last Edit: Aug 13, 2010, 01:17 pm by maesp Reason: 1
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:
http://www.youtube.com/watch?v=kprAmmDT0uY


Le code avec juste le LCD
Code: [Select]

#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
Code: [Select]
#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 :( mais pourquoi?
Code: [Select]
#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);
}


Teiva

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+


www.Zartronic.fr : Arduino & Robotique

Goes

#2
Aug 13, 2010, 04:55 pm Last Edit: Aug 13, 2010, 05:02 pm by goes Reason: 1
Quote
- 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.

masep

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?

masep

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++

Go Up