/* SD-kaartmodule:
VCC naar 5V
GND naar GND
CS naar pin 10
MOSI naar pin 11
MISO naar pin 12
SCK naar pin 13
LM35 Temperatuursensor:
VCC naar 5V
GND naar GND
OUT naar A0 */
#include <SPI.h> // Voor de SPI-communicatie
#include <SD.h> // Voor het werken met de SD-kaart
const int chipSelect = 10; // Chip select pin voor de SD-kaartmodule
const int tempPin = A0; // De analoge pin waar de LM35 is aangesloten
void setup() {
Serial.begin(9600); // Start de seriële communicatie op 9600 baud
Serial.println("Initializing SD card..."); // Print een bericht naar de seriële monitor
if (!SD.begin(chipSelect)) { // Controleer of de SD-kaart aanwezig is en correct kan worden geïnitialiseerd
Serial.println("Card failed, or not present"); // Print een foutbericht als de kaart niet kan worden geïnitialiseerd
return; // Stop met het uitvoeren van de rest van de setup
}
Serial.println("Card initialized."); // Print een bericht naar de seriële monitor als de kaart is geïnitialiseerd
// Open een bestand voor schrijven
File dataFile = SD.open("templog.txt", FILE_WRITE);
if (dataFile) { // Als het bestand beschikbaar is, schrijf ernaar
dataFile.println("Time,Temperature (C)"); // Schrijf de header naar het bestand
dataFile.close(); // Sluit het bestand
} else {
Serial.println("Error opening templog.txt"); // Print een foutbericht als het bestand niet kan worden geopend
}
}
void loop() {
float temperature = getTemperature(); // Meet de temperatuur
// Open het bestand opnieuw om de data te loggen
File dataFile = SD.open("templog.txt", FILE_WRITE);
if (dataFile) { // Als het bestand beschikbaar is, schrijf de data
// Log de tijd en temperatuur naar het bestand
dataFile.print(millis() / 1000); // Log de tijd in seconden
dataFile.print(",");
dataFile.println(temperature); // Log de temperatuur
dataFile.close(); // Sluit het bestand
} else {
Serial.println("Error opening templog.txt"); // Print een foutbericht als het bestand niet kan worden geopend
}
// Print de temperatuur ook naar de seriële monitor
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
delay(1000); // Wacht 1 seconde voordat de volgende meting wordt uitgevoerd
}
float getTemperature() {
int sensorValue = analogRead(tempPin); // Lees de waarde van de sensor
float voltage = sensorValue * (5.0 / 1023.0); // Zet de analoge waarde om naar voltage
float temperature = voltage * 100; // Zet de voltage om naar temperatuur (LM35 geeft 10mV per graad C)
return temperature; // Retourneer de temperatuur
}