2014-03-14

Arduino, LDR ve Buzzer ile acaip rahatasız edici bir ses

Arduino / LDR ve Buzzer ile acaip rahatasız edici bir ses
/*
LDR'den okunan analog bilgiyi buzzer sesine dönüştür. 
Çıkan ses oldukça rahatsız edici ben 30 saniyeden fazla katlanamadım ama çalışıyor sonuçta. 
LDR 10K pulldown direnç ile Analog 0 pin'ine bağlanacak
Buzzer "+" ucu 13 nolu dijital pin'e bağlanacak 
Buzzer "-" ucu toprak
http://nevit.blogspot.com
 */

//Setup başlangıçta bir kez çalışır 
void setup() {
Serial.begin(9600); // Seri iletişimi 9600 hızında başlat
pinMode (13, OUTPUT); // pin 13'ü Buzzer + LED output yap. 
}

//Loop sonsuz döngüsü sürekli çalışır
void loop() { 
  int sensorValue = analogRead(A0);   // analog pin 0'dan değer oku (0-1023 arası)
Serial.print (sensorValue); // Okunan değeri yazdır
int Sound =  map (sensorValue, 0, 1024, 120, 1500); // Okunan değeri 120-1500Hz arası ses'e dönüştür. 
Serial.print ("   "); // Boşlık
Serial.println (Sound); // Ses değerini yazdır
tone (13, Sound, 10);  // Buzzer'a ses sinyali gönder. (pin, frekans, süre ms)
delay(1);        // kararlılık için kısa bekleme
}


Devre şeması pek yakında

2014-03-10

HC-SR501 Ayarlanabilir-IR Hareket Algılama Sensoru

HC-SR501 sensör daha önce kullandığım sensöre göre daha kolay bir kullanıma sahiptir. Dijital çıkışlı olan bu modül, ortamda hareket algılamadığı zaman lojik 0, hareket algılandığı zaman ise lojik 1 (3v) çıkış vermektedir. Kablo bağlantısı ise oldukça kolay. Vcc: 5v, Out : Dijital giriş pinine , Gnd: Toprak. Dezavantajı ise birden fazla sensör kullanıldığında herbiri için ayrı bir sensör pini ayırmak gerektiğidir.

Sensör modülü üzerinde Sx ve Tx olmak üzere iki adet sarı potansiyometre bulunmaktadır. Sx potansiyometresi sensörün görme mesafesini 3 ile 5 metre arasında değiştirmektedir. Tx potu ise sensör gördükten sonra ne kadar süre daha çıkış pininden lojik 1(5V) çıkışını vereceğini ayarlamaktadır. Bunlar ile oynamama gerek kalmadan fabrika ayarı gayet düzgün çalıştı.

5 nolu dijital pin'e hareket olduğu zaman alarm vermesi için küçük bir buzzer bağladım. Ses algısı LED veya serial çıkışın akışından daha kolay hissediliyor.

Özellikleri:
  • Çalışma Voltajı: 5-12V
  • Algılama Alanı: 3-5 metre
  • Algılama Açısı: 140º
  • Bekleme Süresi: 5-200 saniye
  • Ürün Boyutları: 33x25x24 mm
Kod


// (HC-SR501) PIR Sensörü için kısa program 

int PIRpini = 8; // PIR Bağalacak pin
int OkunanDeger;

void setup() {
  Serial.begin(9600);
pinMode(13, OUTPUT); //LED için Pin 13 modunu çıkış olarak belirler
}

void loop() {
  OkunanDeger = digitalRead(PIRpini); //PIR durumunu oku
  
  if (OkunanDeger == LOW) {
    Serial.println("Hareket yok"); //Değer düşük ise hareket yok yaz
    digitalWrite (13, LOW);
  }
  else {
    Serial.println("Hirsiz Var!"); //Değer yüksek ise hareket var.
    digitalWrite (13, HIGH);                
//  Ses / Cızırtı
//  tone (pin no, Hz olarak ses frekansı, ms olarak süre)
  tone(5, 100, 50); 
  delay (100);
  tone(5, 200, 100); 
  delay (100);
  tone(5, 100, 50); 
  }
  
  delay(1500); //Bir saniye bekleme
}



2014-03-08

Arduino ile I2C EEPROM iletişim

Coşkun Taşdemir Arduino Kitabından I2C hakkında yararlı bulduğum bir paragraf.

EEPROM’a  YAZMA işlemi I2C kütüphanesi fonksiyonları ile aşağıdaki adımlarda gerçekleşir.

  1. Arduino I2C haberleşmesini  başlatır.
  2. Arduino veriyoluna EEPROM çipinin adresiyle beraber başlangıç işaretini yollar
  3. Arduino yazmak istediği bellekgözünün adresini yollar.(8 bit)
  4. Arduino yazmak istediği veriyi yollar.
  5. Arduino veriyoluna durdurma işaretini yollar.

I2C kütüphanesi  fonksiyonları ile EEPROM’dan OKUMA işlemi adımları aşağıdaki gibidir.

  1. Ardunio I2C haberleşmesini başlatır.
  2. Arduino veriyoluna  EEPROM çipinin adresiyle beraber başlangıç işaretiniyollar
  3. Arduino okumak istediği  bellek gözünün adresini yollar. (1 bayt)
  4. Arduino veriyoluna dudrudma işaretini yollar.
  5. Arduino EEPROM’a ver alma isteğini yollar. (1bayt)
  6. Arduino EEPROM veri yollayıncaya kadar bekler. Arduino gelen veriyi okur. 
I2C üzerinden gelen yanıtta 4 mesajı olabilir:

0- Veri gönderimi başarılı
1- Gönderilmek istenen veri tampon boyutunu aşıyor
2- Adres gönderiminden sonra NACK (Not Acknowledged - Olumsuz Yanıt alındı)
3- Veri gönderiminden sonra  NACK (Not Acknowledged - Olumsuz Yanıt alındı)
4- Başka bir hata oluştu. 



Arduino'dan EEPROM değerlerini okuma.

Arduino'dan EEPROM değerlerini okuma.
Arduino örnekleri içinde bulunan KOD + Türkçe açıklamalar.

Arduino içerisinde üç çeşit bellek bulunur. Flash belleği kalıcı olup, program bu belleğe yüklenir.
SRAM belleği geçici olup, program çalışması sırasında değişkenleri tutmak için kullanılır.
EEPROM belleği kalıcı olup, adres bazlı okuma ve yazmaya izin verir. Küçük log'lar, sıralı işlemler için kullanılabilir.


/*
 * EEPROM okuma
 
 EEPROM (Electronically Erasable Programmable Read-Only Memory), 
 küçük boyuttaki verileri kalıcı olarak saklamak için bilgisayar ya da 
 diğer cihazlarda kullanılan bir yongadır. Boyutu daha büyük olan 
 sabit verileri saklamak için ise flaş bellek gibi daha ekonomik 
 yöntemler kullanılır. EEPROM, elektrikle yazılıp silinme özelliğine 
 sahiptir. Yazma/silme sayısı 100,000 ile sınırlıdır. 

 * Bu program ne işe yarar? 
 * Arduino dahili EEPOROM'un her byet'ını okur ve seri port'a yazdırır.  
 * Kamu lisanslı kod. Arduino örneklerinden
 * Eski Arduino'larda EEPROM kapasitesi 512, yenilerde 1024 byte'dır. 
 * Adresleri 0'dan başlar 511 veya 1023'e kadar devam eder.
  http://tr.wikipedia.org/wiki/EEPROM EEPROM'lar hakkında daha fazla bilgi. 
  http://nevit.blogspot.com

 */

// EEPROM kütüphanesini içer
#include <EEPROM.h>

// Başlangıç olarak 0 nolu adresten başla.  
int adres = 0;
// byte cinsinden bellekten okunan değer
byte deger;

void setup()
{
  // Seri port başlat ve bekle
  Serial.begin(9600);
  while (!Serial) {
    ; // Seri port'un bağlanmasını bekle
  }
}

void loop()
{
  // Adres hanesinden değerini okur. 
  deger = EEPROM.read(adres);
  
  Serial.print(adres); // Adres'i yaz
  Serial.print("\t"); // Sekme
  Serial.print(deger, DEC); // Değer'i yaz
  Serial.println(); // Yeni satır
  
  // EEPROM adresini bir artır.
  adres = adres + 1;
  
  // Bazı Arduino'larda sadece 512 adres, yeni olanlarda 1024 adres bulunur.  
  // son adrese gelince, adresi sıfırla,  başa dön. 
  if (adres == 1023)
    adres = 0;
    
  delay(100); // Bekleme süresi
}

2014-03-07

Arduino ile HC-SR501 PIR sensörü

Arduino ile PIR denemesi

// (HC-SR501) PIR Sensörü için kısa program 

int PIRpini = 8; // Bağalacak pin
int OkunanDeger;

void setup() {
  Serial.begin(9600);
}

void loop() {
  OkunanDeger = digitalRead(PIRpini); //PIR durumunu oku
  
  if (OkunanDeger == LOW) {
    Serial.println("Hareket yok"); //Değer düşük ise hareket yok yaz
  }
  else {
    Serial.println("Hırsız Var!"); //Değer yüksek ise hareket var.
  }
  
  delay(1000); //Bir saniye bekleme
}

// http://robotic-controls.com/learn/sensors/pir-sensor-hc-sr501
// http://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/
// http://nevit.blogspot.com.tr/search/label/Arduino

2014-03-04

Be Happy

Shawn Achor: The happy secret

Write down three new things that they're grateful for for 21 days in a row, three new things each day. And at the end of that, their brain starts to retain a pattern of scanning the world, not for the negative, but for the positive first. Journaling about one positive experience you've had over the past 24 hours allows your brain to relive it. Exercise teaches your brain that your behavior matters. We find that meditation allows your brain to get over the cultural ADHD that we've been creating by trying to do multiple tasks at once and allows our brains to focus on the task at hand. And finally, random acts of kindness are conscious acts of kindness. We get people, when they open up their inbox, to write one positive email praising or thanking somebody in their social support network.



https://en.wikipedia.org/wiki/Shawn_Achor

2014-03-03

Beethoven's Sonata No. 32 in C Minor

Video: 20 minutes of Fire by Nevit Dilmen

Music: " Beethoven's Sonata No. 32 in C Minor, Op. 111 - II. Arietta Adagio molto semplice e cantabile" (by Daniel Veesey)