/********* 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: AlcoholDetector
- Source Code compiled for: Arduino Pro Mini 5V
- Source Code created on: 2023-12-26 09:22:47
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* If sensor detects an alcohol percentage over a */
/* threshold2, so activate the buzzer and led, switch */
/* off relay and print on lcd ""Eccessive alcohol". */
/****** SYSTEM REQUIREMENT 2 *****/
/* If sensor detects an alcohol concentrati on below */
/* a threshold1 (that Is lower of threshold2), so */
/* switch off the led and buzzer, maintain on the */
/* relay and do not display anything on lcd. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include
#include
#include
/****** SYSTEM PARAMETERS *****/
const int threshold1 = 100; // Threshold 1 for low alcohol concentration
const int threshold2 = 200; // Threshold 2 for high alcohol concentration
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void handleAlcoholConcentration(int alcoholConcentration);
/***** DEFINITION OF ANALOG INPUT PINS *****/
const uint8_t Mq3_alcohol_value_PIN_A0 = A0;
/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t Buzzer_ActiveBuzzer_output_PIN_D2 = 2;
const uint8_t Led_LED_PIN_D3 = 3;
const uint8_t Relay_powerSupplyDCMotor_PIN_D4 = 4;
/***** DEFINITION OF I2C PINS *****/
const uint8_t Lcd_LCD1602I2C_I2C_PIN_SDA_A4 = A4;
const uint8_t Lcd_LCD1602I2C_I2C_PIN_SCL_A5 = A5;
const uint8_t Lcd_LCD1602I2C_I2C_SLAVE_ADDRESS = 0x27;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
MQUnifiedsensor MQ3("Arduino Pro Mini 5V", 5, 10, Mq3_alcohol_value_PIN_A0, "MQ-3");
LiquidCrystal_I2C lcd(Lcd_LCD1602I2C_I2C_SLAVE_ADDRESS, 16, 2); // Assuming you are using 16x2 LCD
void setup(void)
{
// put your setup code here, to run once:
pinMode(Mq3_alcohol_value_PIN_A0, INPUT);
pinMode(Buzzer_ActiveBuzzer_output_PIN_D2, OUTPUT);
pinMode(Led_LED_PIN_D3, OUTPUT);
pinMode(Relay_powerSupplyDCMotor_PIN_D4, OUTPUT);
lcd.begin(16, 2); // Initialize LCD with 16 columns and 2 rows
lcd.backlight();
}
void loop(void)
{
// Read alcohol concentration from the MQ-3 sensor
MQ3.update();
int alcoholConcentration = MQ3.readSensor();
// Handle the alcohol concentration based on the system requirements
handleAlcoholConcentration(alcoholConcentration);
// Display the alcohol concentration on the LCD
lcd.setCursor(0, 0);
lcd.print("Alcohol: ");
lcd.print(alcoholConcentration);
lcd.print(" ppm");
delay(500);
}
void handleAlcoholConcentration(int alcoholConcentration)
{
// If alcohol concentration is above threshold2
if (alcoholConcentration > threshold2)
{
digitalWrite(Buzzer_ActiveBuzzer_output_PIN_D2, HIGH);
digitalWrite(Led_LED_PIN_D3, HIGH);
digitalWrite(Relay_powerSupplyDCMotor_PIN_D4, LOW);
lcd.setCursor(0, 1);
lcd.print("Excessive alcohol");
}
// If alcohol concentration is below threshold1
else if (alcoholConcentration < threshold1)
{
digitalWrite(Buzzer_ActiveBuzzer_output_PIN_D2, LOW);
digitalWrite(Led_LED_PIN_D3, LOW);
digitalWrite(Relay_powerSupplyDCMotor_PIN_D4, HIGH);
lcd.setCursor(0, 1);
lcd.print(" ");
}
}