Progetto Arduino sensore RPM (contagiri)

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. :grin:

L'istruzione

dataString += String(RPMa);

converte RPM in un oggetto String e lo somma all'altro.