Buongiorno ragazzi,
mi sono da poco avvicinato al mondo di arduino e premetto le mie conoscenze di programmazione sono alquanto scarse.
sto cercando di familiarizzare un po con la piattaforma e per fare questo sto realizzando un log di un sensore dht11 su scheda ssd, comprensivo di lcd con tastierino.
i miei problemi nascono nel momento in cui cerco di accedere alla scheda sd:
come esegue SD.begin lo schermo diventa nero per un attimo e non riesce mai ad effettuare la lettura della scheda.
hardware utilizzato:
arduino uno
ITEAD - Stackable SD card shield
DFRobot LCD keypad shield
#include <dht11.h>
#include <LiquidCrystal.h>
#include <SD.h>
LiquidCrystal lcd(8,9,4,5,6,7);
char buffer[50];
char lcdBuffer[16];
int h;
int t;
dht11 DHT;
#define DHT11_PIN 2
#define CS 10
void setup(){
//Serial.begin(57600);
pinMode(CS, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Setup");
delay(1000);
if (!SD.begin(CS)) {
Serial.println("SD err");
lcd.print("... SD err");
lcd.clear();
delay( 2000 );
return;
}
Serial.println("SD OK");
lcd.print("... SD OK");
delay( 2000 );
lcd.clear();
lcd.print(DHT11LIB_VERSION);
delay(1000);
}
void loop(){
temp();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Umidita ");
lcd.print (h);
lcd.setCursor(0,1);
lcd.print("Temperatura ");
lcd.print(t);
delay(1000);
}
void temp(){
int chk;
lcd.clear();
DHT.humidity=0;
DHT.temperature=0;
chk = DHT.read(DHT11_PIN);
switch (chk){
case DHTLIB_OK:
//lcd.clear();
//lcd.print("Test sensor OK");
//delay(1000);
break;
case DHTLIB_ERROR_CHECKSUM:
lcd.clear();
lcd.print("Checksum error");
delay(1000);
break;
case DHTLIB_ERROR_TIMEOUT:
lcd.clear();
lcd.print("Time out error");
delay(1000);
break;
default:
lcd.clear();
lcd.print("Unknown error");
delay(1000);
break;
}
h=DHT.humidity;
t=DHT.temperature;
}
dove sto sbagliando? non ne riesco ad uscirne fuori…