// This example demonstrates doing a one-shot measurement "manually".
// Yahi wala
#include <Adafruit_MAX31856.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Use software SPI: CS, DI, DO, CLK
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10);
// use hardware SPI, pass in the CS pin and using SPI1
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10, &SPI1);
//*******************************************************************************************************************
int pinA = 2; // System Not Readay //RED Led
int pinB = 3; // System Readay //Green Led
int pinC = 6; // MIP
int pinD = 8; // Process Over //Yellow Led
//int pinE= RESET Pin1 // ek HARD WIRED Reset Switch lagayenge but code me nhi lena
int pinF = A1; // Buzzer
int pinG = 9; // Fault
//*******************************************************************************************************************
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("PD test");
delay(1000);
lcd.clear();
//*********************************************************************************************************************
pinMode(pinA, OUTPUT);//Sys Not Ready
pinMode(pinB, OUTPUT);//Sys Ready
pinMode(pinC, OUTPUT);//MIP
pinMode(pinD, OUTPUT);//Process Over
pinMode(pinF, OUTPUT);//Buzzer
pinMode(pinG, OUTPUT);//Fault
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);//Buzzer
digitalWrite(pinG, LOW);//Fault
//*******************************************************************************************************************
if (!maxthermo.begin()) {
lcd.setCursor(0, 0);
lcd.print("Sys Not Ready");
delay(300);
lcd.clear();
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, LOW);//Fault
while (1) delay(10);
}
else {
lcd.setCursor(0, 0);
lcd.print("System Ready");
delay(300);
lcd.clear()
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, HIGH);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, LOW);//Fault
}
maxthermo.setThermocoupleType(MAX31856_TCTYPE_S);
//************************
Serial.println ("Thermocouple type: "); // S-Type
//************************
switch (maxthermo.getThermocoupleType() ) {
case MAX31856_TCTYPE_B: lcd.print("B Type"); break;
case MAX31856_TCTYPE_E: lcd.print("E Type"); break;
case MAX31856_TCTYPE_J: lcd.print("J Type"); break;
case MAX31856_TCTYPE_K: lcd.print("K Type"); break;
case MAX31856_TCTYPE_N: lcd.print("N Type"); break;
case MAX31856_TCTYPE_R: lcd.print("R Type"); break;
case MAX31856_TCTYPE_S: lcd.print("S Type"); break;
case MAX31856_TCTYPE_T: lcd.print("T Type"); break;
case MAX31856_VMODE_G8: lcd.print("Voltage x8 Gain mode"); break;
case MAX31856_VMODE_G32: lcd.print("Voltage x8 Gain mode"); break;
default: Serial.println("Unknown"); break;
}
maxthermo.setConversionMode(MAX31856_ONESHOT_NOWAIT);
lcd.setCursor(0, 0);
lcd.print("Measurement...");
delay(300);
lcd.clear()
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, HIGH);//Sys Ready
digitalWrite(pinC, HIGH);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinG, LOW);//Fault
delay(300);
}
void loop() {
maxthermo.triggerOneShot(); // trigger a conversion, returns immediately
lcd.setCursor(0, 0);
lcd.print("MIP...");
delay(300);
lcd.clear()
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, HIGH);//Sys Ready
digitalWrite(pinC, HIGH);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinG, LOW);//Fault
delay(300);
digitalWrite(pinF, HIGH);// Buzzer
delay(50);
digitalWrite(pinF, LOW);// Buzzer
// check for conversion complete and read temperature
if (maxthermo.conversionComplete()) {
lcd.setCursor(0, 0);
lcd.print("Process Over..!");
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp =");
lcd.setCursor(7, 0);
lcd.print(maxthermo.readThermocoupleTemperature());
// lcd.setCursor(13, 0);
// lcd.print("*C");
delay(120000); // Yahi Delay Temp Screen Par Hold Rakhega
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, HIGH);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, HIGH);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, LOW);//Fault
delay(200);
digitalWrite(pinD, LOW);//Process Over
} else {
lcd.setCursor(0, 0);
lcd.print("Not Over Yet !!");
delay(300);
lcd.clear()
digitalWrite(pinA, LOW);//Sys Not Ready
digitalWrite(pinB, HIGH);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, LOW);//Fault
delay(200);
}
// Check and print any faults
uint8_t fault = maxthermo.readFault();
if (fault) {
if (fault & MAX31856_FAULT_CJRANGE)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("CJ Range Fault");
delay(60000);
if (fault & MAX31856_FAULT_TCRANGE)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("TC Range Fault");
delay(60000);
if (fault & MAX31856_FAULT_CJHIGH)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("CJ High Fault");
delay(60000);
if (fault & MAX31856_FAULT_CJLOW)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("CJ Low Fault");
delay(60000);
if (fault & MAX31856_FAULT_TCHIGH)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("TC High Fault");
delay(60000);
if (fault & MAX31856_FAULT_TCLOW)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("TC Low Fault");
delay(60000);
if (fault & MAX31856_FAULT_OVUV)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("O/U Volt Fault");
delay(60000);
if (fault & MAX31856_FAULT_OPEN)
digitalWrite(pinA, HIGH);//Sys Not Ready
digitalWrite(pinB, LOW);//Sys Ready
digitalWrite(pinC, LOW);//MIP
digitalWrite(pinD, LOW);//Process Over
digitalWrite(pinF, LOW);// Buzzer
digitalWrite(pinG, HIGH);//Fault
lcd.setCursor(0, 0);
lcd.print("TC Open Fault");
delay(60000);
}
delay(1000);
}