Così è più corretto.
SPI deve essere incluso prima di SD.
/ Contagiri RPM di due alberi con DataLogger
// RPMa si riferisce all'albero 1
// RPMb si riferisce all'albero 2
// Arduino DUE
#include <SPI.h>
#include <SD.h>
#include <LiquidCrystal.h>
const int buttonPin = 48;
volatile long T1a = 0;
volatile long T2a = 0;
volatile long T1b = 0;
volatile long T2b = 0;
long RPMa = 0;
long RPMb = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// Il pin attualmente usato per il Chip Select è 52
pinMode(52, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // il pulsante deve essere collegato a GND.
// Inizializzo LCD
lcd.begin(16, 2);
// Monitorizzo i pin 10 e 13 dove collego gli output
// dei due sensori ad effetto Hall
attachInterrupt(10, duration_a, FALLING);
attachInterrupt(13, duration_b, FALLING);
}
void duration_a() {
T1a = T2a;
T2a = micros();
}
void duration_b() {
T1b = T2b;
T2b = micros();
}
void loop() {
// RPM(1)
if (T2a > T1a)
RPMa = 60e6 / (T2a - T1a);
else
RPMa = 0;
T1a = T2a;
// RPM(2)
if (T2b > T1b)
RPMb = 60e6 / (T2b - T1b);
else
RPMb = 0;
T1b = T2b;
// LCD
lcd.setCursor(0, 0);
lcd.print("RPM(1) = ");
lcd.print(RPMa);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("RPM(2) = ");
lcd.print(RPMb);
lcd.print(" ");
// Se premo il bottone, non scrivo sulla SD
if (digitalRead(buttonPin) == HIGH) log();
delay(500);
}
void log() {
String dataString = "";
dataString += "RPM(1) = ";
dataString += String(RPMa);
dataString += " ; ";
dataString += "RPM(2) = ";
dataString += String(RPMb);
File dataFile = SD.open("datalog.csv", FILE_WRITE);
dataFile.println(dataString);
dataFile.close();
}
Non devi interrompere la scrittura sulla SD. Se inizia deve terminare. Puoi invece evitare di scrivere all'inizio.
Il pulsante ha la pull'up interna attivata. dovrai collegarlo al pin e a GND.
Se è HIGH viene effettuato il log (pulsante rilasciato)
Se è LOW (pulsante premuto) salti il LOG.
Ti eri inoltre dimenticato il pinmode relativo al pulsante. ![]()
L'istruzione
dataString += String(RPMa);
converte RPM in un oggetto String e lo somma all'altro.