Skip to content
Snippets Groups Projects
Commit eaac4532 authored by Omar2.Zayed@live.uwe.ac.uk's avatar Omar2.Zayed@live.uwe.ac.uk
Browse files

the final code for every question

parent 886dba55
No related branches found
No related tags found
No related merge requests found
#include "mbed.h"
#include "arm_book_lib.h"
DigitalIn key2(D2);
DigitalIn key3(D3);
DigitalIn gasSensor(D4);
DigitalIn tempSensor(D5);
DigitalOut alarmLed(LED1);
UnbufferedSerial uart(USBTX, USBRX);
bool debounce(DigitalIn& button);
void sendStatus();
void checkWarnings();
bool alarmState = false;
bool previousGas = false;
bool previousTemp = false;
int main()
{
key2.mode(PullDown);
key3.mode(PullDown);
gasSensor.mode(PullDown);
tempSensor.mode(PullDown);
uart.baud(115200);
uart.format(8, SerialBase::None, 1);
while (true) {
if (debounce(key2)) {
const char* msg = gasSensor ? "\r\nGas detected.\r\n" : "\r\nGas not detected.\r\n";
uart.write(msg, strlen(msg));
}
if (debounce(key3)) {
const char* msg = tempSensor ? "\r\nHigh temperature detected.\r\n" : "\r\nTemperature normal.\r\n";
uart.write(msg, strlen(msg));
}
alarmState = gasSensor || tempSensor;
alarmLed = alarmState;
sendStatus();
checkWarnings();
ThisThread::sleep_for(1s);
}
}
bool debounce(DigitalIn& button)
{
if (button.read()) {
ThisThread::sleep_for(150ms);
return button.read();
}
return false;
}
void sendStatus()
{
const char* alarmMsg = alarmState ? "ON" : "OFF";
const char* gasMsg = gasSensor ? "DETECTED" : "CLEAR";
const char* tempMsg = tempSensor ? "HIGH" : "NORMAL";
char buffer[80];
sprintf(buffer, "\r\n[STATUS] Alarm: %s | Gas: %s | Temp: %s\r\n", alarmMsg, gasMsg, tempMsg);
uart.write(buffer, strlen(buffer));
}
void checkWarnings()
{
bool currentGas = gasSensor.read();
bool currentTemp = tempSensor.read();
if (currentGas && !previousGas) {
uart.write("\r\n[WARNING] Gas level exceeds safe limit!\r\n", 42);
}
if (currentTemp && !previousTemp) {
uart.write("\r\n[WARNING] Temperature exceeds safe limit!\r\n", 47);
}
previousGas = currentGas;
previousTemp = currentTemp;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment