diff --git a/final code for task 3 b/final code for task 3
new file mode 100644
index 0000000000000000000000000000000000000000..653ba3da2651bd98262cc96d312470354e40c287
--- /dev/null
+++ b/final code for task 3	
@@ -0,0 +1,86 @@
+#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;
+}