Bu projede, C# ile yazacağımız programla bilgisayardan arduino’ya komut göndererek ses modülüne müzik çaldıracağız ve istersek kayıt yapıp o kaydı dinleyebileceğiz. Projenin gereksinimleri;
- Arduino
- ISD1820 Ses Kayıt ve Çalma Modülü (hoperlörlü)
- Devre elemanları
- Visual Studio (eğer masaüstü uygulamasını geliştirmek ve ya değiştirmek istiyorsak)
Proje gene 3 aşamadan oluşuyor; bilgisayara komut verdirecek uygulamanın yazılması, arduinoya gelen komuta göre işlem yapacağı programın yazılması ve devre bağlantılarının yapılması.
C# Windows Uygulaması
Öncelikle arduino’nun bilgisayar ile nasıl haberleştiğinden bahselim. Arduino bir mikroişlemcidir ve bütün mikro işlemciler gibi dışarıya veri gönderme ve dışarıdan veri alma portu vardır. Bu porta yazılan bütün verileri okuyabilir ve yazabilir. Serial Portlar yani COM portlar bilgisayarların mikroişlemcilerle haberleşmesinde kullanılır. Her yazılım dilinin COM portlara veri yazma ve veri okuma kütüphaneleri vardır. Bizde C# dilinde bu kütüphaneleri kullanarak arduinonun bağlı olduğu COM portuna veri yazıp arduinodan da bu verileri okuyacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace SesCal { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SerialPort serialPort1; private void btn_baglan_Click(object sender, EventArgs e) { serialPort1 = new SerialPort(comboBox1.Text, 9600); serialPort1.Open(); label3.Text = "Bağlandı.."; } private void Form1_Load(object sender, EventArgs e) { comboBox1.DataSource = SerialPort.GetPortNames(); } private void btn_kapa_Click(object sender, EventArgs e) { serialPort1.Write("0"); label3.Text = "Ses Yok"; } private void btn_ac_Click(object sender, EventArgs e) { serialPort1.Write("1"); label3.Text = "Ses Var"; } } } |
Arduino Programlama
C# programında gördüğünüz gibi arduinonun bağlı olduğu COM portuna 1 ve ya 0 değerlerini göndermiştik. Şimdi o gelen değerleri okuyarak 1 ve 0 durumunda yapılması gereken işleri atayacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void setup() { pinMode(8,OUTPUT); Serial.begin(9600); } void loop() { while(Serial.available()) //Eğer seri haberleşme açık olursa alttaki komutlar işleyecek. { int a=Serial.read(); //Seri haberleşme ile okunan verimize a integer değerini verdik. if(a=='1') // a, 1 olursa yanacak. { digitalWrite(8, HIGH); } else if (a == '0') // a, 0 olursa sönecek. { digitalWrite(8, LOW); } } } |
Devre Bağlantıları
Ses modülünün çalışma mantığı, üzerindeki kırmızı REC butonu basılı tutulduğu taktirde ses kayıt eder ve P-L yani PLAY butonu ise kayıt edilen sesi çalar. P-E ise kayıt edilen sesi butona basılı olduğu süre boyunca çalar çekildiğinde durur.
Ses modülünün + ve – pinlerini arduinoya bağladıktan sonra bir kere kayıt yapalım. Sonra P-L pinini arduinonun 8. bacağına bağlayıp diğer bütün pinlerine – verelim.
Büyük sistemler için Röle kullanarak da yapılabilirliğini göstermek için bu projede ihtiyaç olmamasına rağmen Röle de kullandım. Daha büyük bir alarm sistemi vs gibi şeyler düşünüyorsanız Röle bu işi çözecektir.
Not: Proje sadece kayıt edilen sesi çalması için hızlı bir şekilde yapıldı. Eğer hem kayıt etmeyi hemde çalmayı kontrol etmek isterseniz, windows uygulamasına bir buton ekleyerek arduinoya 3 değeri gönderiniz. Arduinoda da 3 değeri geldiğinde x pinini aktif ediniz. x pini ile ses modülündeki REC pinini bağladığınızda hem kayıt edip hemde kaydı dinleyebileceğiniz bir sistem elde edersiniz.
Proje Dosyaları
https://github.com/fatihyldrim/arduino-c-ses-calma