// Suad Miftari, Janar 2025
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10, 11); // RX, TX për HC-05
int prshPuls = 2; // Pini për LED
int blinkPin = A2; // Pini për butonin e parë
int mediaPlayer = 3; // Pini për kontrollin e media player-it
int mediaPin = A3; // Pini për butonin e dytë
// Për LED dhe blinkPin
bool blinkActive = false; // Gjendja e LED-it
unsigned long blinkStartTime = 0; // Koha e fillimit për LED
const unsigned long blinkIntervals[] = {799, 254, 454, 254, 454, 254, 454, 254, 1789};
int blinkStep = 0; // Hapi aktual i intervalit
// Për media player dhe mediaPin
bool mediaActive = false; // Gjendja e media player-it
unsigned long mediaStartTime = 0; // Koha kur media player-i filloi
const unsigned long mediaDuration = 150000; // Kohëzgjatja e media player-it (2.5 minuta)
unsigned long previousMediaTime = 0; // Koha e fundit që kemi azhurnuar minutat
int remainingMinutes = 2; // Minutat që po mbarojnë
int remainingSeconds = 30; // Sekondat që po mbarojnë
void setup() {
pinMode(blinkPin, INPUT_PULLUP); // Pini i butonit të parë me rezistencë të brendshme
pinMode(mediaPin, INPUT_PULLUP); // Pini i butonit të dytë me rezistencë të brendshme
pinMode(prshPuls, OUTPUT); // Pini i LED-it si dalje
pinMode(mediaPlayer, OUTPUT); // Pini për kontrollin e media player-it si dalje
digitalWrite(prshPuls, HIGH); // Siguro që LED-i është fillimisht i fikur
digitalWrite(mediaPlayer, HIGH); // Siguro që media player-i është fillimisht i fikur
Serial.begin(9600); // Filloni komunikimin me monitorin serial
bluetooth.begin(9600); // Filloni komunikimin me Bluetooth
}
void loop() {
unsigned long currentTime = millis(); // Koha aktuale
// Kontrollo shtypjen e butonit blinkPin
if (digitalRead(blinkPin) == LOW && !blinkActive) {
blinkActive = true; // Aktivizo LED-in
blinkStartTime = currentTime; // Regjistro kohën e fillimit
blinkStep = 0; // Fillo nga hapi i parë
digitalWrite(prshPuls, LOW); // Ndez LED-in
Serial.println("Përshëndetje!");
bluetooth.println("Përshëndetje!"); // Dërgo mesazhin në Bluetooth
}
// Kontrollo shtypjen e butonit mediaPin
if (digitalRead(mediaPin) == LOW && !mediaActive) {
mediaActive = true; // Aktivizo media player-in
mediaStartTime = currentTime; // Regjistro kohën e fillimit
digitalWrite(mediaPlayer, LOW); // Aktivizo media player-in
remainingMinutes = 2; // Rindiz minutat
remainingSeconds = 30; // Rindiz sekondat
}
// Menaxho blinkPin dhe LED-in
if (blinkActive && (currentTime - blinkStartTime >= blinkIntervals[blinkStep])) {
blinkStep++; // Kalo në hapin tjetër
blinkStartTime = currentTime; // Rifillo kohën për hapin tjetër
// Ndiz ose fik LED-in në varësi të hapit
if (blinkStep % 2 == 0) {
digitalWrite(prshPuls, LOW);
} else {
digitalWrite(prshPuls, HIGH);
}
// Përfundo sekuencën kur të mbarojnë të gjitha hapat
if (blinkStep >= sizeof(blinkIntervals) / sizeof(blinkIntervals[0])) {
blinkActive = false;
digitalWrite(prshPuls, HIGH); // Siguro që LED-i është i fikur
}
}
// Menaxho mediaPin dhe media player-in
if (mediaActive && (currentTime - mediaStartTime >= mediaDuration)) {
mediaActive = false; // Fik media player-in
digitalWrite(mediaPlayer, HIGH); // Çaktivizo media player-in
}
// Azhurnimi i minutave dhe sekondave që po mbarojnë
if (mediaActive && (currentTime - previousMediaTime >= 1000)) { // Azhurnimi çdo sekondë
previousMediaTime = currentTime;
// Ul minutat dhe sekondat
if (remainingSeconds == 0) {
if (remainingMinutes > 0) {
remainingMinutes--; // Ul minutën
remainingSeconds = 59; // Rinovon sekondat në 59
}
} else {
remainingSeconds--; // Ul sekondën
}
// Shfaq minutat dhe sekondat që po mbarojnë
if (remainingMinutes == 0 && remainingSeconds <= 3) {
Serial.println("Mirëupafshim!");
bluetooth.println("Mirëupafshim!"); // Mesazhi në Bluetooth
} else {
String message = "Do t'fiket< " + String(remainingMinutes) + ":";
if (remainingSeconds < 10) {
message += "0";
}
message += String(remainingSeconds);
Serial.println(message);
bluetooth.println(message); // Dërgo të dhënat te Kodular
}
}
}