#include #include #include #include LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display. ACHTUNG: Adresse kann auch 0x3F sein !!! // Anschlüsse: // GND - GND // VCC - 5V // SDA - ANALOG Pin 4 // SCL - ANALOG pin 5 const int buttonPin = 8; int buttonState = 0; const byte interruptPin = 2; int pulse = 0; long time_alt; int seconds; int i; int counts[200]; const int chipSelect = 10; // used for Arduino // =========================== // ======= SETUP ========= // =========================== void setup() { Serial.begin(9600); pinMode(interruptPin, INPUT); attachInterrupt(digitalPinToInterrupt(interruptPin), Puls, RISING); pinMode(buttonPin, INPUT); while (!Serial) { } Serial.print("Initializing SD card..."); // make sure that the default chip select pin is set to // output, even if you don't use it: if (!SD.begin(chipSelect)) { Serial.println("Initialization failed!"); while (1); } Serial.println("card initialized."); lcd.begin(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print("Geigerzaehler"); lcd.setCursor(0,1); lcd.print("Poisson"); delay(3000); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); for(i = 0; i < 1000; i++) { counts[i] == 0; } time_alt = millis(); } // =========================== // ======= LOOP ========= // =========================== void loop() { while(millis() < time_alt + 60000) { // waiting for another minute seconds = (millis() - time_alt) / 1000; lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,0); lcd.print(seconds); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); lcd.setCursor(0,1); lcd.print(pulse); lcd.print(" "); delay(200); } counts[pulse] = counts[pulse] + 1; buttonState = digitalRead(buttonPin); if(buttonState == LOW) // counts-data sent to the SD-Card { for(i = 0; i < 200; i++) { String dataString = ""; dataString += String(i); dataString += " "; dataString += String(counts[i]); File dataFile = SD.open("datalog.txt", FILE_WRITE); if (dataFile) { dataFile.println(dataString); dataFile.close(); Serial.println(dataString); } else { Serial.println("error opening datalog.txt"); } } } pulse = 0; time_alt = time_alt + 60000; } // ============================== // ======= INTERRUPT ========= // ============================== void Puls() { pulse = pulse + 1; }