Bu videoda sese duyarlı oynatılan videoyu durdurup tekrar oynatabilen bir cihaz yaptık. Cihazın temel mantığı atölyedeki gürültülü bir cihaz çalıştırıldığında bluetooth ses sistemimizin butonuna basarak videoyu kontrol etmesini sağlamak. Videodaki gibi bir bluetooth cihazınız yoksa klavyenizin multimedya tuşunu da kullanabilirsiniz. Unutmayın ki bu yalnızca bir örnek, kodu eğip bükerek, farklı sensörler ekleyip çıkararak bambaşka projeler de yapabilirsiniz.
Kullanılan Ürünler:

Bağlantı Şeması:
En ucuz ve en çok kullanılan servo motorlar olan sg90’ların kabloları genellikle standarttır. Kahverengi, kırmızı ve sarı.
Kahverengi kabloyu arduinonun herhangi bir GND pinine,
Kırmızı kabloyu arduinonun herhangi bir 5V pinine,
Sarı kabloyu ise arduinodaki 9 numaralı pine bağlıyoruz.
Mikrofon sensörümüzde ise VIN, GND ve OUT pinleri mevcut.
VIN pinini arduinonun herhangi bir 5V pinine,
GND pinini arduinonun herhangi bir GND pinine,
VOUT pinini ise arduinodaki 2 numaralı pine bağlıyoruz.
Arduino Kodu:
// Otomatik Play/Pause Projesi
// 07/10/2025, İrfan İzbırakan
#include <Servo.h>
Servo myservo;
const int inputPin = 2; // Mikrofon giriş pini
unsigned long interval = 100; // Ölçüm aralığı (ms) - ihtiyaca göre değiştir
unsigned long previousMillis = 0;
int pulseCount = 0;
int lastState = LOW;
int pulseThreshold = 45; // Eşik değer
int runningCount = 15;
int stopCount = 20;
int aboveCount = 0; // Üst üste eşik üstü sayaç
int belowCount = 0; // Üst üste eşik altı sayaç
bool isMachineRunning = false; // Makine durumu
void setup() {
myservo.attach(9); //Servonun bağlanacağı pin
pinMode(inputPin, INPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Giriş pinini oku
int currentState = digitalRead(inputPin);
myservo.write(0); // nolur nolmaz başlangıçta servoyu sıfıra çekiyoruz.
// LOW -> HIGH geçişini say
if (currentState == HIGH && lastState == LOW) {
pulseCount++;
}
lastState = currentState;
// Zaman kontrolü
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
//Serial.print(interval); // Bu kısım seri monitör ve seri plotter ile test için. Şu an pasif // , /* , */ karakterlerini kaldırırsanız aktifleşir.
//Serial.print(" ms içinde HIGH pulse sayısı: ");
/*Serial.print(0);
Serial.print(" ");
Serial.print(200);
Serial.print(" "); */
//Serial.println(pulseCount);
// Makine çalışma/durma kontrolü
if (pulseCount > pulseThreshold) {
aboveCount++;
belowCount = 0; // sıfırla
if (aboveCount >= runningCount && !isMachineRunning) {
isMachineRunning = true;
Serial.println(" ");
Serial.println("Makine Çalışıyor");
Serial.println(" ");
digitalWrite(12, HIGH);
myservo.write(0);
delay(100);
myservo.write(18);
delay(200);
myservo.write(0);
delay(200);
}
} else {
belowCount++;
aboveCount = 0; // sıfırla
if (belowCount >= stopCount && isMachineRunning) {
isMachineRunning = false;
Serial.println(" ");
Serial.println("Makine Durdu");
Serial.println(" ");
digitalWrite(12, LOW);
myservo.write(0);
delay(100);
myservo.write(18);
delay(200);
myservo.write(0);
delay(200);
}
}
// Sayaç ve zaman sıfırlama
pulseCount = 0;
previousMillis = currentMillis;
}
}
