1.8 inch TFT SPI 128×160 V1.1 Kullanımı

Merhaba sevgili makerlar, bu yazımızda hakkında çok fazla Türkçe kaynak bulunmayan 1.8 inch tft spi 128×160 v1.1  ekranının kullanımı için gerekli temel komut ve işlevlere değineceğiz.  Öncelikle şunu söylemem gerekiyor ki küçük ama renkli ve şirin bu ekran ile yapabileceğimiz bir çok proje mevcut.  Renkli bir hava istasyonu özelliği barındıran, alarmı olan, minik ama şirin bir masa saati nasıl olur mesela? Üstelik kodlamanın yanında, tasarımı da tamamen kendimiz yaptığımız için hem kişisel kullanımda hem de hediye olarak çok güzel olacaktır. 🙂

Şimdi çok fazla konuyu dağıtmadan ekranımızın kullanımındaki temel kodlara gelecek olursak;

  • TFTscreen.background (r, g, b);

    Yukarıdaki kodumuzu kullanarak  ekranımızın arka plan rengini ayarlıyoruz.  R, G ve B harflerinin yerine 0 ile 255 arasında sayı değerlerini giriyoruz. Girdiğimiz ilk 0-255 arası değer kırmızı, ikincisi yeşil, üçüncüsü ise mavi renk kodunu vermektedir.

  • TFTscreen.stroke(r, g, b);

    Bu kodu kullanarak ise yazılarımızın hangi renk olacağını belirliyoruz.

  • TFTscreen.setTextSize (2);

    Yazılarımızın boyutunu ayarlamak için bu kodu kullanıyoruz. Burada dikkat etmemiz gereken ilk husus her zaman tam sayı değerleri girmemiz gerektiğidir. Bir diğer nokta ise o satırda yazdıracağımız yazının uzunluğuna göre yazı boyutunu belirleyebilecek olduğumuzdur.

  • TFTscreen.text("Hello World!", x, y);

    Ekranda yazı yazdırmak içinse yukarıdaki kodu kullanıyoruz. Burada tırnak işarekleri içerisinde ekranda görünmesini istediğimiz metni yazdıktan sonra araya bir virgül koyuyoruz ve sonrasında yazacağımız sayı(x değeri) metnimizin ekranda yatay olarak kaç piksel içeriden başlayacağını, yine virgülden sonra yazdığımız ikinci sayı değeri ise metnimizin dikey olarak(y değeri) kaç piksel içeriden başlayacağını belirtmektedir.                                                                                                                                                                                                           Temel kodlarımızı öğrendik, şimdi Arduino devremizi kurup kodumuzu yükleyerek çalışmamızı kontrol edelim.

  • BAĞLANTI ŞEMASI
    LED ==> 3.3 V
    SCK ==> 13
    SDA ==> 11
    A0    ==> 9
    RESET ==> 8
    CS    ==> 10
    GND ==> GND
    VCC ==> 5V  olacak şekilde ekranımızın pin bağlantılarını yapıyoruz. Bu arada ufak bir bilgi, ekranımızın alt kısmında yan yana bulunan 8 pini kullanıyoruz. Üst kısmında kalan 4 pini ise SD karttan veri okumamız, resim yazdırmamız gereken durumlarda kullanıyoruz. Şuan temel ekran kullanımı ve yazı yazdırma gibi özellikler üzerinde durduğumuz için bu 4 pinin bağlantısını yapmaya ihtiyacımız bulunmamaktadır.

    /*
               DETAYLI BİLGİ İÇİN: 
               www.makerprojeleri.com ve http://randomnerdtutorials.com sayfalarını ziyaret edebilirsiniz.
     */
    
    // include TFT and SPI libraries
    #include <TFT.h>  
    #include <SPI.h>
    
    // pin definition for Arduino UNO
    #define cs   10
    #define dc   9
    #define rst  8
    
    
    // create an instance of the library
    TFT TFTscreen = TFT(cs, dc, rst);
    
    void setup() {
    
      //initialize the library
      TFTscreen.begin();
    
      // Buradaki 0 değerleri arka planı siyah yapmaktadır. Sayı değerlerini değiştirerek farklı renkler elde edebilirsiniz.
      TFTscreen.background(0, 0, 0);
    }
    
    void loop() {
    
      //generate a random color
      int redRandom = random(0, 255);
      int greenRandom = random (0, 255);
      int blueRandom = random (0, 255);
      
      // set a random font color
      TFTscreen.stroke(redRandom, greenRandom, blueRandom);
      
      // 
      TFTscreen.setTextSize(1); //Parantez içerisindeki rakamı değiştirerek yazı boyutunu ayarlayabiliyoruz.
      TFTscreen.text("makerprojeleri.com", 25, 20);
      delay(75); //Animasyonlu görünmesi için her yazıdan sonra 75 milisaniye ekledim. Böylece renklerin değişimi daha güzel gözükecektir.
      //Sizlerde bu değerleri değiştirerek farklı görünümler elde edebilirsiniz.
      TFTscreen.setTextSize(2);
      TFTscreen.text("Created by", 20, 30);
      delay(75);
      TFTscreen.setTextSize(3);
      TFTscreen.text("SERHAT", 25, 55);
      delay(75);
      TFTscreen.setTextSize(3);
      TFTscreen.text("SONMEZ", 25, 85);
      
      // 100 milisaniye bekledikten sonra ekrandaki yazıların rengi değişmektedir.
      delay(100);
    }

    Yukarıdaki kodu yükleyerek çalıştırıyoruz. Arduino ile birlikte TFT kütüphanesi hazır olarak bulunduğundan yukarıda link bırakmadım ama kütüphane hatası verirse buraya tıklayarak bu kütüphaneyi bilgisayarınıza indirebilirsiniz. Eğer sitemizi yeni ziyaret ediyor ve Arduino konusunda da yeniyseniz buraya tıklayarak da kütüphane kurulumu ile ilgili yazımıza ulaşabilirsiniz.

    Bir sonraki yazıda görüşmek üzere, merakla kalın 🙂

Facebook Yorumları

ARDUİNO İLE BUZZER KULLANIMI – KARAYİP KORSANLARI

Merhabalar, uzun bir aradan sonra yeni bir yazı ile karşınızdayız. Arduino kullanmaya başlayanların genellikle led yaktıktan sonra yapmış olduğu ilk şey buzzer kullanmaktır. Bizler de kısacık bir buzzer nedir ve nerelerde kullanılır una değinerek, sonrasında gençlerin çok sevdiği bir müzik olan Karayip Korsanları film müziğini Arduino ile çalacağız.

Öncelikle buzzerı minik bir hoparlör olarak düşünebiliriz. Ancak bu hoparlörden tabiki mp3 formatında şarkılar dinleyemiyoruz. Hani o Nokia 3310 telefonlar var ya monofonik olarak adlandırılan, işte bu o telefonlarda zil sesinin çıkmasını sağlayan minik hoparlörler gibi “bip” sesi çıkarmaktadır. 🙂

Buzzer kullanırken yine aynı ledlerde olduğu gibi 2 bacak bulunmakta ve bunlardan birisi (-), diğeri ise (+) olmaktadır. (+) olan bacak genellikle uzun olmakta veya buzzer üzerinde hangi bacağın artı olduğu yazmaktadır. Kısa olan veya üzerinde herhangi bir ifade bulunmayan bacak ise (-) bacak olmaktadır. Bizler bağlantımızı yaparken (-) bacağı GND, (+) bacağı ise Arduino üzerindeki dijital pinlerden birisine(kodumuzda hangi pini belirlemişsek) bağlayacağız. Şimdi aşağıdaki şemaya göz atıp kuralım ve sonrasında kodumuzu yükleyerek Karayip ,Korsanları film müziğimizi dinleyelim 🙂

 yandaki resimde buzzer’ın Arduinomuz üzerine bağlantısınız nasıl olacağını görüyorsunuz. Şemadaki direnç kullanımı dikkatinizi çekmiştir ama benim sizlere tavsiyem direnç olmadan direkt olarak bağlantıyı kurmanız. Çünkü direnç kullanıldığında buzzerdan çıkan ses miktarı oldukça düşmektedir 🙂

 

 

 

 

 

/* 
   ARDUİNO İLE KARAYİP KORSANLARI
         MAKER PROJELERİ
      www.makerprojeleri.com
*/
const int buzzer = 8; 
                      
const int songspeed = 1.5;// Şarkının hızını yavaşlatmak için 2, hızlandırmak için 1 yapabilirsiniz :) 
//*****************************************
#define NOTE_C4  262   //Nota Frekansları
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_G4  392
#define NOTE_A4  440
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_D5  587
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784
#define NOTE_A5  880
#define NOTE_B5  988
//*****************************************
int notes[] = {       
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0, 
   NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
   NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
   
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_D5, NOTE_E5, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
   NOTE_C5, NOTE_A4, NOTE_B4, 0,

   NOTE_A4, NOTE_A4, 
   //Repeat of first part
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,

   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
   NOTE_A4, NOTE_G4, NOTE_A4, 0,
   
   NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0, 
   NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
   NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
   
   NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, 
   NOTE_D5, NOTE_E5, NOTE_A4, 0, 
   NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
   NOTE_C5, NOTE_A4, NOTE_B4, 0,
   //End of Repeat

   NOTE_E5, 0, 0, NOTE_F5, 0, 0,
   NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
   NOTE_D5, 0, 0, NOTE_C5, 0, 0,
   NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,

   NOTE_E5, 0, 0, NOTE_F5, 0, 0,
   NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
   NOTE_D5, 0, 0, NOTE_C5, 0, 0,
   NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
};
//*****************************************
int duration[] = {         //duration of each note (in ms) Quarter Note is set to 250 ms
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 125, 250, 125,

  125, 125, 250, 125, 125, 
  250, 125, 250, 125, 
  125, 125, 250, 125, 125,
  125, 125, 375, 375,

  250, 125,
  //Rpeat of First Part
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 375, 125, 
  
  125, 125, 250, 125, 125, 
  125, 125, 250, 125, 125,
  125, 125, 250, 125, 125,
  125, 125, 125, 250, 125,

  125, 125, 250, 125, 125, 
  250, 125, 250, 125, 
  125, 125, 250, 125, 125,
  125, 125, 375, 375,
  //End of Repeat
  
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 125, 125, 125, 375,
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 500,

  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 125, 125, 125, 375,
  250, 125, 375, 250, 125, 375,
  125, 125, 125, 125, 125, 500
};

void setup() {
  for (int i=0;i<203;i++){              //203 is the total number of music notes in the song
  int wait = duration[i] * songspeed;
  tone(buzzer,notes[i],wait);          //tone(pin,frequency,duration)
  delay(wait);}                        //delay is used so it doesn't go to the next loop before tone is finished playing
                                       //You can click reset on Arduino to replay the song
}

void loop() {

}

Bir sonraki yazımızda, Pithes.h kütüphanesinin kurulumunu ve bu kütüphanenin kullanıldığı bir müzik örneğine bakacağız.

Facebook Yorumları

Keypad ile Servo Kontrolü

Bir önceki yazımızda keypad kullanımına değinmiştik. Bu yazımızda ise keypad ile servo motor kontrol edeceğiz. Keypad ile servo kontrolü sayesinde yaratıcılığınıza bağlı olarak bu şema ve kodlar ile bir çok proje gerçekleştirebilirsiniz.  Bir sonraki yazımızda bu kodlar ile yaptığımız özel güvenlikli kutumuzu okuyabilirsiniz. Şimdi kodumuza dönelim.
Bağlantımızı yine keypad kullanımı yazımızda olduğu gibi yapıyoruz. Aşağıda bağlantı görselimiz verilmiştir.

Yukarıdaki şemaya ek olarak servo motorumuzun bağlantılarını da;

Kahverengi kablo     ==>>    GND
Kırmızı kablo               ==>>    5V
Sarı Kablo                      ==>>   11. Pin

bağlantımızı bu şekilde gerçekleştirdikten sonra aşağıdaki kodlarımızı Arduinomuza yüklüyoruz. Kodları yüklemeden önce, şifre kullanabilmemiz için Password.h kütüphanemizi bilgisayarımıza yüklememiz gerekiyor. Password.h kütüphanesini indirmek için tıklayınız.  Keypad.h kütüphanemizi bir önceki yazımızda yüklediyseniz tekrar yüklemenize gerek yok. Ama yüklemeyenler için kütüphane bağlantısını buraya bırakıyorum. Keypad.h kütüphanesini tıklayarak indirebilirsiniz. 

/* Keypad'imizi sırasıyla:
 * 9-8-7-6-5-4-3-2 pinlerine bağlıyoruz. 
 * Bu pinlerden ilk 4'ü satır sayısını, son 4'ü sütun sayısını belirtmektedir.
 * Eğer sizin keypadinizde 3 sütun varsa 7 pinli olacağı için 2. pini boş bırakınız. Bu durumda sadece A,B,C,D harflerini kullanamayacaksınız. 
 *  
 * Arduino 12. Pin Yeşil led
   Arduino 13. Pin Kırmızı led
   Arduino 11. pin Servo Motor
 */
#include <Password.h>
#include <Keypad.h>
#include <Servo.h>
  
  
Servo myservo;
Password password = Password( "SERHAT" ); //Şifremiz SERHAT. Şifre belirerken keypade yüklenen karakterler içermesine dikkat ediniz. 
const byte ROWS = 4;
const byte COLS = 4;
  
char keys[ROWS][COLS] = 
{
{'1', '2', '3', 'A'}, //karakterleri burada değiştirebilirsiniz. 2. ve 3. satırda karakter değişimi yaptım, inceleyerek siz de kendi şifrenizi belirleyebilirsiniz. 
{'S', 'E', 'R', 'H'},
{'7', 'A', 'T', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = { 9, 8, 7, 6 };
byte colPins[COLS] = { 5, 4, 3, 2 };
  
  
  
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  
void setup(){
  Serial.begin(9600);
  Serial.write(254);
  Serial.write(0x01);
  delay(200);
  pinMode(12, OUTPUT);  //Yeşil LED
  pinMode(13, OUTPUT);  //Kırmızı LED
  myservo.attach(11);
  keypad.addEventListener(keypadEvent);
  }
  
void loop(){
  keypad.getKey();
  myservo.write(0);
  }
  void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
  case PRESSED:
    
  Serial.print("Giris:");
  Serial.println(eKey);
  delay(10);
    
  Serial.write(254);
    
  switch (eKey){
    case '*': checkPassword(); delay(1); break;
      
    case '#': password.reset(); delay(1); break;
      
     default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){
    
if (password.evaluate()){ 
      
    Serial.println("ACILDI");
    Serial.write(254);delay(10);
      
    myservo.write(150);
      
        digitalWrite(12, HIGH);//Kapi acildi
    delay(15000); //15 saniye açık kalıyor
    digitalWrite(12, LOW);// Yesil ledi kapa
      
      
}else{
    Serial.println("Sifre HATALI");
    Serial.write(254);
    delay(10);
    myservo.write(0);
    digitalWrite(13, HIGH); //Kirmizi LED acildi
    delay(15000); //15sn Bekle
    digitalWrite(13, LOW);//Kirmizi LEDi Kapat
      
}
}

 

 

Facebook Yorumları

Arduino ile Keypad Kullanımı

Bu yazımızda Arduino ile Keypad kullunımına değineceğiz. ilk önce aşağıdaki Keypad resmini bir inceleyelim.

Yukarıda 4*4 biçiminde bir keypad resmi görüyoruz. Biz kodumuz içerisinde bu tuş takımlarını bu şekilde kodlayacağız. Ancak kod üzerinde değişiklikler yaparak 1 rakamına bastığımızda Z harfi, A harfine bastığımızda 0 rakamı vb. yazdırabiliriz. İlk önce aşağıdaki bağlantı şemasını inceleyelim. sorasında bu bağlantıların ne işe yaradığına değineceğiz.

Yukarıda bağlantı şemamızı görmektesiniz. 4*4 keypad bağlantısı için 8 adet pin bulunmaktadır. Keypadimizi görseldeki gibi düz tuttuktan sonra, ilk pinimizi dijital 9. pine, diğerlerini de sırasıyla 2. pine kadar takıyoruz. Buradaki pinlerden ilk 4 tanesi satır pinlerine karşılık gelmekteyken, diğer 4 pin sırasıyla sütun pinlerine karşılık gelmektedir. Eğer sizin keypadiniz 4*3 formatındaysa, yani 4 satır ve 3 sütuna sahipse bu durumda üzerinde 7 pin olacak ve 4. sütun olmadığı için bağlantı şemamızda 2. pin bağlantısı boşa düşecektir. Harflerin olduğu sütun görünmeyecektir. Bu arada ufak bir hatırlatma yapalım, piyasada biribirinden çok farklı görünümlere sahip keypad tasarımları mevcuttur ve hepsi aynı çalışma mantığına sahip olduğu için aynı yukarıdaki şema ve birazdan açıklayacak olduğum kod yardımıyla kullanılabilmektedir. Tabiki kodumuzun doğru çalışması ve hata vermemesi için öncesinle Keypad.h kütüphanemizi de yüklememiz gerekmektedir.

Kütüphaneyi indirmek için tıklayınız.

Kütüphanemizi indirip, aşağıdaki kodu yüklediğimizde Keypad kullanımını temel işleviyle öğrenmiş olacağız. Kodların sonunda açıklama satırı olarak işlevleri anlatılmıştır. Bir sonraki yazımızda Keypad kullanarak servo motor kontrol edeceğiz ve kendimize şifreli güvenlikle korunan özel kutu yapımına değineceğiz.

#include <Keypad.h> // Kullanacak olduğumuz kütüphaneyi belirtiyoruz. 

const byte satirSayisi= 4; 
const byte sutunSayisi= 4;

char tuslar[satirSayisi][sutunSayisi]=
{
{'1', '2', '3', 'A'}, // 1. Satır karakterleri Buradaki karakterleri değiştirerek tuşlara bastığımızda daha farklı karakterler yazdırabiliriz. 
{'4', '5', '6', 'B'}, // 2. Satır karakterleri
{'7', '8', '9', 'C'}, // 3. Satır karakterleri
{'*', '0', '#', 'D'}  // 4. Satır karakterleri
};

byte satirPinleri[satirSayisi] = {9,8,7,6}; // Satır pinlerimizi taımlıyoruz. İstersek 13-12-11-10 şeklinde yazabilir ve bağlantılarımız bu şekilde de yapabiliriz. 
byte sutunPinleri[sutunSayisi]= {5,4,3,2};  // Sütun pinlerimizi tanımlıyoruz. yukarıdaki satırdaki açıklama burada da aynen geçerlidir. 

Keypad tusTakimi= Keypad(makeKeymap(tuslar), satirPinleri, sutunPinleri, satirSayisi, sutunSayisi);

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

void loop(){
  char basilanTus = tusTakimi.getKey();
  if (basilanTus != NO_KEY){
    Serial.print(basilanTus);  // Arduinomuz IDE programımızda "Araçlar >> Seri Port Ekranı" seçeneğimize tıkladıktan 
                               // sonra keypad üzerinden yaptığımız girişler bu ekranda görülecektir. 
  }
}

 

 

Facebook Yorumları

Mors Alfabesi Çevirici (Morse Code Translator)

Mors Alfabesi Nedir?

Merhaba, bu yazımızda Mors Alfabesini tanıyacak ve klavyeden Latin Alfabesi ile girdiğimiz kelimeleri Mors Alfabesine çeviren bir program nasıl yapılır buna birlikte bir göz atacağız.

Mors Alfabesi 1832’de telgraf ile ilgilenmeye başlayan Samuel Morse tarafından 1835 yılında oluşturulmuş ve 1837’de kullanılmaya başlanmıştır. Modern Uluslararası Mors Kodu ise, 1848 yılında Alman Friedrich Clemens Gerke tarafından geliştirilmiştir.

 

Mors alfabesinin tanımını basitçe yapacak olursak eğer; iki çeşit sinyalin (kısa ve uzun sinyal) farklı kombinasyonlarının harfleri, sayıları ya da noktalama işaretlerini oluşturduğu bir haberleşme dilidir diyebiliriz. Genellikle elektrik ya da radyo sinyali kullanılarak kişiden uzak bir noktaya yazılı bir metnin ulaştırılmasında kullanılır.

Kısa ve uzun sinyallerin dışında aralardaki sessizlikler de anlam taşımaktadır. Örneğin; kısa aralık harfler arasında, orta uzunlukta aralık kelimeler arasında ve uzun aralıklar ise cümleleri birbirinden ayırmakta kullanılır.

Yandaki resimde Latin Alfabesindeki harflerin Morse Alfabesindeki karşılıkları gösterilmektedir.

 

Buradaki noktalar kısa sinyal seslerini, çizgiler ise uzun sinyal seslerini temsil etmektedir. Peki bu sinyal seslerinin kısa yada uzun olacağı neye göre belirlendi? En çok merak ettiğim şeylerden birisi buydu, araştırdım ve aşağıdaki tabloyu buldum, tek bir tablo ile her şeyi çok güzel açıklamışlar doğrusu.

Bir de bu tabloyu çözerken bizlere kolaylık sağlayan bir şema var, duyduğumuz her kısa veya uzun sinyal sesinden sonra bizi şemanın bir kısmındaki harflere yönlendiriyor ve bu alfabeyi çözmemiz noktasında bize büyük kolaylık sağlıyor.  Bu şemayı önüne alan kod çözücü, duyduğu her sinyalden sonra kalemle bu şemayı takip ediyor ve uygun harfe geldiğinde işaretlemeler yaparak ve bunları bir kenara not alarak gönderilmiş olan sinyali çözüyorlar. 

Mors Alfabesi Çevirici Nasıl Yapılır?

Mors Alfabesini yeterince tanıdığımızı düşünüyorum. Şimdi gelelim bu projeyi nasıl yapacağımıza… Öncelikle projemiz için gereken parçalara bir göz atalım:

  • Arduino Uno ( Diğer modeller de kullanılabilir)
  • Buzzer
  • Beyaz Led
  • Dişi-Erkek Jumper Kablo (4 adet)

öncelikle kodumuz içerisinde,

int LED = 2;
int buzzerPin = 3;
int dot = 250;
şeklinde 3 tane değişken tanımlıyoruz.  Ardından “char* morseLetters[] =” kısmında Latin Alfabesindeki harflerin Mors Alfabesindeki karşılıklarını giriyoruz. Daha sonra ise “char* morseNumbers[] =”  kısmında rakamlarımızın Mors Alfabesindeki karşılıklarını giriyoruz. Setup kısmında ise;
pinMode(LED, OUTPUT);  // ledimizi çıkış birimi olarak ayarladık. 
pinMode(buzzerPin, OUTPUT); // Buzzerımızı çıkış birimi olarak ayarladık. 
Serial.begin(9600);

Loop bildiğimiz gibi döngüleri ifade ediyordu ve programımız loop içerisindeki ifadeyi sürekli olarak ya da belirtilen sayıda tekrarlıyordu. Burada; seri port ekranına klavyeden girilen verilerin Mors Alfabesindeki karşılığını led ve buzzer ile alabilmemiz için gerekli kodlar yazmakta.

Aşağıda kod editöründe verilen kodu Arduino üzerine yükleyip, gerekli bağlantıları yaptıktan sonra Arduino IDE programı üzerinden Araçlar>>Seri Port Ekranı (Kısayolu: CTRL+SHİFT+M) açılarak, bilgisayarımızın klavyesinden girdiğimiz verilerin Mors Alfabesindeki karşılığını alabiliriz.

int LED = 2;
int buzzerPin = 3;
int dot = 250;

char* morseLetters[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.","...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." };
char* morseNumbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};

void setup()                
{
  pinMode(LED, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop()                   
{
  char info;
  if (Serial.available() > 0) {
    info = Serial.read();
    if (info >= 'a' && info <= 'z') { 
      letterId(morseLetters[info - 'a']);
    }
    else if(info >= 'A' && info <= 'Z') {
      letterId(morseLetters[info - 'A']);
    }
    else if(info >= 0 && info <= 9) {
      letterId(morseNumbers[info - 0]);
    }
    else if(info == ' ') {
      delay(dot * 4); 
    }
  }
}

void letterId(char* character) {
  int i = 0;
   while(character[i] != '\0') {
    output(character[i]);
    i++;
  }
  delay(dot * 3);
}

void output(char ID) {
  digitalWrite(LED,HIGH);
  digitalWrite(buzzerPin,HIGH);
  if (ID == '.') {
    delay(dot);          
  }
  else {
    delay(dot * 3);          
  }
  digitalWrite(LED,LOW);
  digitalWrite(buzzerPin,LOW); 
  delay(dot);
}

 

 

Facebook Yorumları

Potansiyometre ile Led ve Buzzer Kontrolü

Bugün potansiyometre ile led kontrolü yapacağız ve kodların adım adım açıklamasını bu yazımız içerisinde bulabileceksiniz. Projemizde 3 adet led, bir adet buzzer ve bunları kontrol edebilmek için bir adet potansiyometre kullanacağız. Ayrıca ledlerimizin yanmaması için de ledlerin artı(+) bacaklarına takılmak 3 adet 220 ohmluk direnç kullanacağız. Bildiğiniz gibi ledlerimizin uzun bacakları (+), kısa bacakları ise (-) olmaktadır ve devremizi buna göre bağlayacağız. Aynı durum buzzer için de geçerlidir.

İlk olarak Arduinomuz üzerindeki GND kısmına jumper kablomuzun bir ucunu bağlıyoruz diğer ucunu ise breadboard üzerindeki mavi alana(-) kısma takıyoruz. Ardından 5V kısmına taktığımız kablonun diğer ucunu breadboard üzerindeki kırmızı alana(+) bağlıyoruz. Böylece Breadboardumuza elektrik aktarımını gerçekleştirdik.

Şimdi ledlerimizi, buzzer ve potansiyometremizi bağlamakta sıra. potansiyometrennin 3 bacağı vardır ve biz bunlardna kenarda olanlardan birini (+), diğerini ise (-) olarak bağlıyoruz. Ortadaki bacağı ise potansiyometrenin değerini okumamıza yardımcı olduğu için onun bağlantısını Arduinomuz üzerindeki A0 pinine bağlıyoruz. Böylece Arduino kartımız potansiyometre üzerinden 0-1024 arasında gelen değerleri okuyabilecek ve gelen değere göre 250 den küçükken led yakmazken 250-500 arasında 1 led, 500-750 arasında 2 led, 750-100 arasıda 3 led yakacak ve bu değer 1000’in üzerine çıktığında 3 led yanarken buzzer ötecektir.

Ledlerimizin artı bacaklarına direnci bağladıktan sonra bu dirençlerin olduğu noktayı sırasıyla led1 için Arduino üzerindeki 2. pine, led2 için 3. pine, led3 için 4. pine bağlıyoruz. Eksi (-) bacaklarını ise breadboard üzerindeki (-) kısma bağlıyoruz. Buzzer için ise eksi(-) ayağı breadboard üzerindeki (-) kısma bağlarken, artı(+) ayağını Arduinomuz üzerindeki 5. pine bağlıyoruz. Bu işlemi yaptıktan sonra aşağıdaki kodu Arduinomuz üzerine yüklüyoruz ve programımız sorunsuz şekilde çalışıyor.

Devre Şeması (Breadboard üzerindeki kırmızı kısım burada (-) olarak kullanılmış, biz onu (+), mavi kısmı (-) olarak kullanacağız)

çalışan kodu ve devre şemasını indirmek için tıklayınız. 

int led1 = 2; //2.digital pini led1 değişkenine atadık

int led2 = 3; //3.digital pini led2 değişkenine atadık

int led3 = 4; //4.digital pini led3 değişkenine atadık

int buzzer4 = 5; //5.digital pini buzzer4 değişkenine atadık

int pot = A0; //A0 analog pini pot değişkenine atadık

int potdeger; //Kodlarımız içerisinde kullanacağımız potdeger değişkenini oluşturduk

void setup() {

pinMode(led1, OUTPUT); //led1 i çıkış olarak ayarladık

pinMode(led2, OUTPUT); //led2 yi çıkış olarak ayarladık

pinMode(led3, OUTPUT); //led3 ü çıkış olarak ayarladık

pinMode(buzzer4, OUTPUT); //led4 i çıkış olarak ayarladık

pinMode(pot, INPUT); //pot u giriş olarak ayarladık

}

void loop() {

potdeger= analogRead(pot); //pot değişkenine atadağımız A0 pinini dinliyoruz ve değerini potdeger değişkenine atıyoruz

if (potdeger<250){ //potdeger 250 den küçükse hiçbir ledi yakma

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(buzzer4, LOW);

}

if (potdeger>250){ //potdeger 250 den büyükse sadece led1 i yak

digitalWrite(led1, HIGH);

digitalWrite(led2, LOW);

digitalWrite(led3, LOW);

digitalWrite(buzzer4, LOW);

}

if (potdeger>500){ //potdeger 500 den büyükse led1 i ve led2 yi yak

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led3, LOW);

digitalWrite(buzzer4, LOW);

}

if (potdeger>750){ //potdeger 750 den büyükse led1 i, led2 yi ve led3 ü yak

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led3, HIGH);

digitalWrite(buzzer4, LOW);

}

if (potdeger>1000){ //potdeger 1000 den büyükse tüm ledleri yak ve buzzer çalışsın

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

digitalWrite(led3, HIGH);

digitalWrite(buzzer4, HIGH);

}

}

 

Facebook Yorumları

Arduino Kütüphane Kurulumu

Arduino bir çok elektronik birimi ve sensörleri, yazmış olduğumuz kodları üzerine yükleyerek kontrol etmemizi sağlayan bir mikro denetleyici kartıdır. Her ne kadar yazmış olduğumuz kodlar ile elektronik birim ve sensörleri kontrol ediyor olsak da, bazen kodlar tek başına yetersiz kalmakta ve kütüphanelere ihtiyaç duyulmaktadır. Geliştiricilerin yazmış oldukları bu hazır kütüphaneler, bize kod yazarken kılavuzluk etmekte ve büyük kolaylıklar sağlamaktadır. Örneğin, led, buzzer hatta ultasonik sensör kullanırken bir kütüphaneye ihtiyaç duymazken; 16×2 lcd ekran veya Nokia 5110 ekranını kullanabilmemiz için uygun kütüphaneyi bilgisayarımıza yüklemiş olmamız gerekmektedir.

Genellikle github vb. sitelerden sıkıştırılmış olarak(.rar) indirmiş olduğumuz kütüphaneleri,
C:\Program Files (x86)\Arduino\libraries  yoluna çıkartarak, kütüphanelerin bilgisayarlarımıza kurulumunu tamamlarız. Şimdi fotoğraflarla anlatımına bir göz atalım. Örnek olarak, DFPlayer Mini kullanabilmek için gerekli kütüphanenin nasıl kurulacağını inceleyelim.

Mavi ile işaretli alanda üst kısımda DFPlkayer Mini kütüphanesinin internetten indirilen .rar uzantılı halini, hemen altında ise bu sıkıştırılmış arşivin dışarı çıkarılmış halini görüyorsunuz. biz bu dışarı çıkarılan klasörü üzerine sağ tıklayarak kes diyeceğiz. Hemen ardından, işletim sistemimizin yüklü olduğu diski, Bilgisayarım üzerinden seçip açıyoruz.

 Üzerinde Windows ikonu bulunan bu diski seçip açtığımızda içerisinden Program Files (x86) klasörünü bulup açıyoruz.

Bu klasör içerisinden, Arduino klasörünü ve onun içerisinden de libraries klasörünü  bulup açıyoruz.

 

Ardından az önce kesmiş olduğumuz DFPlayer Mini kütüphane klasörünü gelip buraya yapıştırıyoruz. Yapıştır dediğimizde bizden yönetici izni isteyecektir, “Devam” butonuna basarak izin veriyoruz ve bu işlem sonrasında kütüphanemiz kullanıma hazır hale gelmiş oluyor.

Şimdi kütüphanemizin Arduino IDE programı içerisinde nasıl görüntülendiğine bir göz atalım.

Yukarıdaki ekran görünütüsündeki gibi kütüphanemize ve içindeki örnek kodlara erişerek, DFPlayer Mini için temel fonksiyonları deneyebilir ve sonrasında  kendi programımızı yazabiliriz.

 

 

Facebook Yorumları

Arduino IDE Kurulumu

Arduino IDEarduino kitleri için geliştirdiği; komutların yazılmasına, derleme işleminin yapılmasına ve son olarakta derlenen kodları doğrudan (Bilgisayarın USB portuna bağlı olan) Arduino kite yüklenmesine olanak sağlayan yazılım geliştirme platformudur. ve bu platform tamamen ücretsizdir.

Şimdi bu programı bilgisayarımıza nasıl indireceğimize bir göz atalım.

https://www.arduino.cc/en/main/software linkine tıklayarak Arduino yazılım sayfasına gidebiliriz. Bu sayfa açıldığında, sayfayı biraz aşağı kaydırdığımızda  bizi şu şekilde bir ekran karşılayacak.

Karşımıza çıkan bu ekranda, Windows Installer yazısına tıklıyoruz.  Bizi aşağıdaki gibi bir sayfaya yönlendirecek.

Bu sayfada bağış yap ve indir ile sadece indir seçenekleri bulunmakta. Biz ekranda sarı renkle vurgulanmış olan JUST DOWNLOAD (sadece indir) seçeneğine tıklayarak, Arduino IDE programının en güncel sürümünü ücretsiz olarak bilgisayarımıza indireceğiz. Kurulum dosyası bilgisayarımıza indikten sonra, .exe uzantılı dosyayı tıklayarak çalıştırıyoruz ve karşımıza gelen ekrandan, Kabul et, İleri vb. seçenekleri tıklayarak kurulumu tamamlıyoruz.

Bir sonraki yazımızda kütüphanelerin ne işe yaradığından ve Arduino’ya kütüphane eklemenin nasıl yapıldığından bahsedeceğiz.

Facebook Yorumları

Eğitimde Maker Uygulamaları

Ülkemizde ve dünyada okul öncesinden üniversite düzeyine kadar her kademede maker eğitimleri verilmektedir ve maker eğitimi veren eğitim kurumlarının sayısı gün geçtikçe katlanarak artmaktadır. Dale Dougherty maker eğitimi vermenin kilit noktasını “kendisi maker olan eğitmenler bulmak” olarak göstermektedir. Bu kapsamda artık lisans programlarına özellikle BÖTE bölümlerinde Arduino dersleri konulmuş ve Maker Hareketi ile ilgili olan öğretmenlere yönelik Maker Öğretmen, Maker Eğitmen vb. adlarla sertifika programları düzenlenilerek kendisi maker olan öğretmenler yetiştirilmektedir.

Maker eğitiminin en önemli yanı, hiç şüpheniz öğrencileri ezber bilgilerden uzaklaştırması ve ortaya somut ürünler çıkarmalarını sağlayarak başarı duygusunu tatmalarına vesile olmasıdır. Aslında tam anlamıyla öğrenci odaklı eğitimin ta kendisidir.

Maker eğitimleri, Maker Öğretmenler tarafından (Bilişim Teknolojileri, Teknoloji ve Tasarım, Fen Bilgisi Öğretmenleri vb.) süreç odaklı ve bu sürecin sonunda ortaya bir ürün çıkarmaya yönelik Maker Laboratuarlarında verilmektedir. Bu lablarda genellikle kodlama için yeterli sayıda bilgisayar, kodların yükleneceği Arduino vb. mikrodenetleyici kartlar, 3d printerlar, lehim malzemeleri ve tasarım sürecinde gerekli diğer malzemeler bulunmaktadır.

Facebook Yorumları

Maker Hareketi Nedir?

Maker Hareketi (Maker Movement), kendin yap (do it yourself) kültürü ile teknolojinin birleşmesinden ortaya çıkmıştır.

Maker Hareketi’nin alandaki öncülerinden Dale Dougherty hepimizin aslında birer maker olduğunu söylemektedir. Ona göre yemek yapan bir aşçı, bahçesinde bitkilerle uğraşan bir bahçıvan ya da bir şeyler tamir eden her bir birey birer makerdır. Kısacası bir kişi kendisine Maker diyorsa o kişi bir makerdır.

Bazı akademik yayınlarda Maker Hareketi Türkçe’mize “Üreten Hareketi” olarak çevirmektedir. Bu çeviriden de anlaşılacağı üzere aslında bir şeyler yapan, bir şeyler üreten herkes birer makerdır. Elbise diken bir terzi de makerdır, drone üreten bir birey de makerdır. Biz daha çok bu ikinci kategoride yer alıyoruz, bir şeyler yapmayı teknolojiyle birleştiren kısımda; basit devreler kurmaktan, uzaktan kontrollü araba yapmaya; robotik kollardan, drone yapmaya kadar işin içerisine teknoloji ve dolayısıyla kodlamanın girdiği her konu ile ilgileneceğiz.

Maker Hareketinin ne olduğuna değindik, şimdi biraz da temel değerlerine ve etik konulara değinelim. Öncelikle;

  • Maker Hareketinin ruhunda paylaşmak vardır, rekabetten tamamen uzaktır.
  • Yaratıcılığı teşvik eder, kişileri sınırlandırmaz. Ortaya özgün ürünler çıkmasına vesile olur.
  • Ezberden tamamen uzaktır, temelinde paylaşım olduğu için gerekli bilgilere kolayca ulaşılabilir. Deneyim önemli bir yer tutar, kişi zamanla uzmanlaşır ve daha severek maker faaliyetlerine devam eder.
  • Para yerine yetenek önemlidir. Bir maker projesinde hoparlör kullanacak kişi, istediği güçte hoparlör alacak bütçesi olmasa dahi; o hoparlörü eski bir laptop, telefon vb. cihazlardan çıkararak kullanabilir. Böylece hem maliyetten tasarruf etmiş, hem de geri dönüşüme katkı sağlamış olur. Bu durum bir maker için en zevkli anlardan birisidir.
Facebook Yorumları