Arduino üzerinde alarm sistemi yapımını anlatacağım. Burada çok detaylı bir çalışma yapmaktan ziyade basit bir alarm sistemi yapacağız. Bunun için bir adet lazer kullandık. Lazer oyuncak olarak satılan lazerlerden. İsterseniz arduino için kullanılan lazer modülünü de kullanabilirsiniz. Seçim size kalmış.
Malzemeler:
- Arduino Nano
- Lazer
- LDR
- Direnç 330 Ohm olabilir
- Buzzer

int buzzer=8;
int ldr=A0;
int deger=0;
void setup() {
pinMode(buzzer,OUTPUT);
}
void loop() {
deger=analogRead(ldr);
if(deger<400 buzzer="" delay="" digitalwrite="" else="" pre="">
çok güüüzel devre yapılır
YanıtlaSilyok ya hatalıymış
Sil// Ayarlar
Silconst int buzzerPin = 8; // Buzzer bağlı pin (D8)
const int ldrPin = A0; // LDR bağlı analog pin
const int ledPin = 13; // Durum LED'i (opsiyonel)
const bool PASSIVE_BUZZER = false; // true = pasif buzzer (tone/noTone), false = aktif (digital on/off)
const int SAMPLES = 8; // Ortalama için örnek sayısı
const int SAMPLE_DELAY = 5; // örnekler arası ms
int threshold = 400; // alarm eşik değeri (kalibre edin)
const int HYSTERESIS = 30; // +/− histerezis (titreşimi azaltır)
bool alarmOn = false;
void setup() {
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
delay(100);
Serial.println("Lazer/LDR alarm - Başlıyor");
// Hızlı ön-kalibrasyon (sadece bilgi amaçlı)
long s = 0;
for (int i=0;i<20;i++){ s += analogRead(ldrPin); delay(20); }
Serial.print("Ön-kalibrasyon LDR ortalaması: ");
Serial.println(s/20);
Serial.println("Karanlık/aydınlık durumlarını ayrı ayrı test edip 'threshold' değerini ayarlayın.");
}
void loop() {
int val = readAverage(ldrPin);
Serial.print("LDR=");
Serial.print(val);
Serial.print(" Alarm=");
Serial.println(alarmOn ? "ON" : "OFF");
// Not: eğer sizin donanımda ışık arttıkça analog değer artıyorsa aşağıdaki mantık doğru.
// Eğer bağlama şekliniz ters ise (< yerine >) tersine çevirin.
if (!alarmOn && val < (threshold - HYSTERESIS/2)) {
alarmOn = true;
triggerAlarm();
} else if (alarmOn && val > (threshold + HYSTERESIS/2)) {
alarmOn = false;
stopAlarm();
}
delay(150); // döngü hızı
}
int readAverage(int pin) {
long sum = 0;
for (int i=0;i<SAMPLES;i++) {
sum += analogRead(pin);
delay(SAMPLE_DELAY);
}
return (int)(sum / SAMPLES);
}
void triggerAlarm() {
Serial.println("!! ALARM TETIKLENDI !!");
digitalWrite(ledPin, HIGH);
if (PASSIVE_BUZZER) {
tone(buzzerPin, 1500); // 1.5 kHz sürekli ton (istediğiniz frekansı değiştirin)
} else {
digitalWrite(buzzerPin, HIGH); // aktif buzzer için
}
}
void stopAlarm() {
Serial.println("Alarm durdu.");
digitalWrite(ledPin, LOW);
if (PASSIVE_BUZZER) {
noTone(buzzerPin);
} else {
digitalWrite(buzzerPin, LOW);
}
}