/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Sensor Calibration - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2024-10-14 19:43:46 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* Messenger app */ /****** SYSTEM REQUIREMENT 2 *****/ /* The messenger app will feature a dashboard */ /* displaying sensor data, allowing users to */ /* visualize trends over time. It will support data */ /* logging for historical analysis and reporting. */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include //https://github.com/miguel5612/MQSensorsLib /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); /***** DEFINITION OF DIGITAL INPUT PINS *****/ const uint8_t Msd_MQ6_DOUT_PIN_D2 = 2; const uint8_t Msd_MQ6_DOUT_PIN_D3 = 3; /***** DEFINITION OF ANALOG INPUT PINS *****/ const uint8_t Msd_MQ6_AOUT_PIN_A0 = A0; const uint8_t Msd_MQ6_AOUT_PIN_A1 = A1; /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/ // Definitions for the MQ6 sensor #define placa "Arduino UNO" // Define the board type #define Voltage_Resolution 5 // Voltage resolution #define ADC_Bit_Resolution 10 // ADC bit resolution #define RatioMQ6CleanAir 10 // Ratio for clean air calibration // Declare Sensor using MQUnifiedsensor constructor MQUnifiedsensor MQ6(placa, Voltage_Resolution, ADC_Bit_Resolution, Msd_MQ6_AOUT_PIN_A0, "MQ-6"); // Variables for logging data float sensorValue = 0; // Variable to store sensor value unsigned long previousMillis = 0; // Store the last time data was logged const long interval = 1000; // Interval for logging data (1 second) void setup(void) { // put your setup code here, to run once: pinMode(Msd_MQ6_DOUT_PIN_D2, INPUT_PULLUP); pinMode(Msd_MQ6_DOUT_PIN_D3, INPUT_PULLUP); pinMode(Msd_MQ6_AOUT_PIN_A0, INPUT); pinMode(Msd_MQ6_AOUT_PIN_A1, INPUT); // Initialize the sensor MQ6.init(); // Initialize the MQ6 sensor // Calibration Serial.begin(9600); // Start serial communication Serial.print("Calibrating please wait."); float calcR0 = 0; for(int i = 0; i < 10; i++) { MQ6.update(); // Update sensor data calcR0 += MQ6.calibrate(RatioMQ6CleanAir); // Calibrate and accumulate R0 Serial.print("."); } MQ6.setR0(calcR0 / 10); // Set the average R0 value Serial.println(" done!"); if (isinf(calcR0) || calcR0 == 0) { Serial.println("Warning: Connection issue detected."); while (1); // Stop execution if there's an issue } } void loop(void) { // put your main code here, to run repeatedly: MQ6.update(); // Update sensor data MQ6.readSensor(); // Read the sensor value MQ6.serialDebug(); // Print debug information to serial // Log data to Serial every second unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // Save the last time data was logged sensorValue = MQ6.getPPM(); // Get the sensor value in PPM Serial.print("Sensor Value (PPM): "); Serial.println(sensorValue); // Print the sensor value to Serial // Here you could add code to visualize trends over time // and support data logging for historical analysis } delay(500); // Delay for sampling frequency } /* END CODE */