/*
write a arduino script to illuminate an led named low_level_led and enable a piezo buzzer called alarm_buzzer when a normally closed switch called low_levelsw is enabled and also illuminate a second led named high_level_led when a normally open switch named high_levelsw is enabled also add a mute switch called mutesw for the alarm_buzzer to disable the alarm_buzzer output for a time of 8 hours.
Here is the Arduino script that meets your requirements:
n this script, the input pins for the switches are set to INPUT_PULLUP mode to use the internal pull-up resistors of the Arduino board. When the switches are enabled, they connect the pins to GND, which results in a LOW state. The output pins for the LEDs and buzzer are set to OUTPUT mode.
The script checks the state of the switches in each iteration of the loop() function. If the low level switch is enabled, the low_level_enabled variable is set to true, and the low level LED is illuminated. If the high level switch is enabled, the high_level_enabled variable is set to true, and the high level LED is illuminated.
If either switch is enabled, the script checks if the mute switch is enabled. If the mute switch is not enabled or if it has been enabled for more than 8 hours (measured in milliseconds), the alarm_enabled variable is set to true, and the buzzer is enabled. Otherwise, the buzzer is disabled.
The state of the LEDs and buzzer is updated in each iteration of the loop() function based on the values of the low_level_enabled, high_level_enabled, and alarm_enabled variables.
*/
// Define pins
const int low_levelsw = 2; // Normally closed switch
const int high_levelsw = 3; // Normally open switch
const int mutesw = 4; // Mute switch
const int low_level_led = 5; // LED for low level
const int high_level_led = 6;// LED for high level
const int alarm_buzzer = 7; // Piezo buzzer
// Define variables
bool low_level_enabled = false;
bool high_level_enabled = false;
bool alarm_enabled = false;
bool mute_enabled = false;
unsigned long mute_start_time = 0;
void setup() {
// Set input/output pins
pinMode(low_levelsw, INPUT_PULLUP);
pinMode(high_levelsw, INPUT_PULLUP);
pinMode(mutesw, INPUT_PULLUP);
pinMode(low_level_led, OUTPUT);
pinMode(high_level_led, OUTPUT);
pinMode(alarm_buzzer, OUTPUT);
Serial.begin (9600);
Serial.println ("ChatGPT-code8b ");
}
void loop() {
// Check if low level switch is enabled
if (digitalRead(low_levelsw) == LOW) {
low_level_enabled = false;
} else {
low_level_enabled = true;
}
// Check if high level switch is enabled
if (digitalRead(high_levelsw) == HIGH) {
high_level_enabled = false;
} else {
high_level_enabled = true;
}
// Check if mute switch is enabled
if (digitalRead(mutesw) == LOW) {
mute_enabled = true;
mute_start_time = millis(); // Record start time of mute period
}
// Determine if alarm should be enabled or disabled
if (low_level_enabled || high_level_enabled) {
if (!mute_enabled || (millis() - mute_start_time >= 9.99 * 60 * 60 * 1000)) {
alarm_enabled = true;
} else {
alarm_enabled = false;
}
} else {
alarm_enabled = false;
}
// Set LED and buzzer output based on state
digitalWrite(low_level_led, low_level_enabled);
digitalWrite(high_level_led, high_level_enabled);
digitalWrite(alarm_buzzer, alarm_enabled);
//print pin states
Serial.print("low_levelsw state: ");
Serial.println(digitalRead(low_levelsw));
Serial.print("high_levelsw state: ");
Serial.println(digitalRead(high_levelsw));
Serial.print("mutesw: ");
Serial.println(digitalRead(mutesw));
Serial.print("low_level_led: ");
Serial.println(digitalRead(low_level_led));
Serial.print("high_level_led: ");
Serial.println(digitalRead(high_level_led));
Serial.print("alarm_buzzer: ");
Serial.println(digitalRead(alarm_buzzer));
Serial.print('\n'); //this will just print a new line ie a space
delay(1000);
}