My Arduino resets / bugs each time I put myFile = SD.open
in loop()
.
In setup()
it works fine.
I have a 20*4 LCD and an RTC connected to I2C, an SD card reader connected to SPI, and a fingerprint sensor.
Here is my code:
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <SD.h>
#include <DS3231.h>;
LiquidCrystal_I2C lcd(0x3f,20,4);
DS3231 rtc(SDA, SCL);
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
Sd2Card card;
SdVolume volume;
SdFile root;
int etat = 0;
int getFingerprintIDez();
const int chipSelect = 10;
SDFile myFile;
void setup() {
lcd.init();
lcd.backlight();
rtc.begin();
finger.begin(57600);
SD.begin();
// Reglage Heure
//rtc.setDOW(TUESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(10, 57, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(24, 11, 2016); // Set the date to January 1st, 2014
if (finger.verifyPassword()) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Capteur Initialise");
} else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Capteur Deconnecte");
}
delay(2000);
if (SD.exists("data.csv")) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("data.csv OK.");
delay (1000);
} else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Creating data.csv...");
myFile = SD.open("data.csv", FILE_WRITE);
myFile.close();
delay (1000);
}
}
void loop() {
if (etat == 0) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Put Finger");
getFingerprintIDez();
}
if (etat == 1) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ID #");
lcd.setCursor(4,0);
lcd.print(finger.fingerID);
// myFile = SD.open("data.csv", FILE_WRITE);
// myFile.print(rtc.getDateStr(1));
// myFile.print("\t");
// myFile.print(rtc.getTimeStr(1));
// myFile.print("\t");
// myFile.println(finger.fingerID);
// myFile.close();
lcd.setCursor(0,2);
lcd.print("Loged");
etat = 0;
}
delay(1000);
}
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Found ID #");
lcd.setCursor(14,0);
lcd.print(finger.fingerID);
etat = 1;
return finger.fingerID;
delay(1000);
}
Each time I uncomment lines using SD, the Arduino resets at the end of the loop.
What is the problem?