Arduino ile Buzz Wire Oyunu Yapımı

Arduino hobi projeleri ve oyunları oluşturmak çok popilerdir. Sizlerle bu yazımızda Buzz Wire Oyunu Yapımına değineceğiz.

Bu proje için Arduino Uno, Buzzer ve iki Alüminyum tel kullanacağız. Oyun durumunu görüntülemek için 16×2 LCD kullanılacaktır. Labirent telin her iki ucu Arduino’nun dijital pim 2 ve 3’üne bağlanacak ve tutamak teli Arduino’nun Toprak pimine bağlanacaktır. Dijital pinler INPUT_PULLUP pinleri olarak tanımlanır. Böylece tutma teli labirent teline dokunduğunda, dijital pim durumunu düşük olarak değiştirir ve zil sesi çalacaktır.

Labirent telinin sonuna bir diyot bağlanır, bu yüzden bu diyotun yanından geçtiğinizde ve labirent teline yuvarlak saplı tel ile dokunduğunuzda, sadece bir pim (Pin 3) alçalır. Bu durumda, LCD’de bir tebrik metni (Kazandınız) görüntülenir.

Gerekli Bileşenler
Arduino Uno
Alüminyum Tel
16×2 LCD
I2C Modülü
Breadboard
Buzzer
Diyot

Arduino ile Buzz Wire Oyunu Yapımı 1
Devre Şeması

Arduino Buzz Tel Oyunu için devre şeması yukarıda verilmiştir. I2C modülünün SCL ve SDA pinleri Arduino’nun A5 ve A4 pinlerine, I2C modülünün VCC ve GND pinleri Arduino’nun 5V ve GND pinlerine bağlanır. Buzzer’ın pozitif rayı Arduino’nun dijital pimi 4’e ve negatif rayı GND’ye bağlıdır. Bir alüminyum tel kesin ve Zig-Zag şeklinde bükün. Telin bir ucuna bir diyot lehimleyin. Daha sonra bir tutamak yapmak için bir tel daha kesin ve bir ucunu bir ilmek içine bükün.

Arduino ile Buzz Wire Oyunu Yapımı 2

Arduino Kodları :

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int startPin = 2;
const int endPin = 3;
const int buzzer = 4;
int start, end_;
void setup(void)
{
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  pinMode(buzzer, OUTPUT);
  pinMode(startPin, INPUT_PULLUP);
  pinMode(startPin, INPUT_PULLUP);
}
void loop(void)
{  
  start = digitalRead(startPin);
  end_ = digitalRead(endPin); 
  Serial.print(start);
  Serial.print("\n");
  Serial.print(end_);  
  if (start == LOW && end_== LOW ){
    digitalWrite(buzzer, HIGH);
    delay(1000); 
    digitalWrite(buzzer, LOW); 
    lcd.setCursor(0,0);
    lcd.print("Try Again");     
    Serial.print("Try Again");        
  }
  else if (start == HIGH && end_== LOW){
    lcd.setCursor(0,0);
    lcd.print("Well Done");
    Serial.print("Well Done");
  }
 delay(500); 
}

Read More

Arduino ile 8×8 led matris kullanımı

Arduino ile 8×8 led matris kullanımı bu yazımızda nerede ise her yerde kullanılan LED matris displayleri ele alacağız ve Arduino ile nasıl kullanacağınıza değineceğiz.Modern LED displayler çeşitli mikrodenetleyiciler ve çeşitli tiplerde matrislerle yapılırlar.

8×8 led matris 64 tane led içeriyor. Bunlara piksel de diyebiliriz. LEDler toplamda 16 pinle bağlanıyor. Aşağıdaki devre ile bağlantı yapabiliriz:

Arduino ile 8×8 led matris kullanımı 3

 

C1 – C8 – Sütun Pinleri

R1 – R8 – Satır Pinleri

Şekilden de görüldüğü gibi, aynı satırın bütn anod uçları birleştirilmiş. Böylece 8 satır ve 8 sütun pini çıkartılmış. R1 pinine pozitif gerilim uygulanırsa ve C1 pinine negatif gerilim uygulanırsa, ilk pikselin yandığını görürüz. Eğer C2 pinine negatif gerilim uygulanırsa 2. piksel (led) yanacaktır. Bu şekilde her ledi yakabiliriz. Bu pinlerin kontrol edilmesi manuel olarak pek de mümkün olmadığından, arduino ile kontrol etmek daha kolaydır.

her sütun arduino ile 220 ohm direnç üzerinden bağlıdır. Satır pinleri, shift register entegresinin çıkışına bağlanacak. Karakterler ise multiplekser yöntemi ile yazdırılıyor. Shift register entegresi, arduino ile data, latch ve clock pinleri ile bağlanıyor.

Arduino Kodları :

int clockPin = 5;
int dataPin = 3;
int pins [8] = {6, 7, 8, 9, 10, 11, 12, 13}; // common cathode pins
byte A[8] = {   B00000000, // Letters are defined
                B00011000,// you can create your own
                B00100100,
                B01000010,
                B01111110,
                B01000010,
                B01000010,
                B00000000
            };
 
byte B[8] = {     B00000000,
                  B11111100,
                  B10000010,
                  B10000010,
                  B11111100,
                  B10000010,
                  B10000010,
                  B11111110
            };
 
byte blank[8] = { B00000000,
                  B00000000,
                  B00000000,
                  B00000000,
                  B00000000,
                  B00000000,
                  B00000000,
                  B00000000
                };
byte R[8] = {  B00000000,
               B01111000,
               B01000100,
               B01000100,
               B01111000,
               B01010000,
               B01001000,
               B01000100
            };
 
 
void setup() {
  Serial.begin(9600); // Serial begin
  pinMode(latchPin, OUTPUT); // Pin configuration
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  for (int i = 0; i < 8; i++) { // for loop is used to configure common cathodes
    pinMode(pins[i], OUTPUT);
    digitalWrite(pins[i], HIGH);
  }
 
}
 
void loop() {
 
 
 
  for (int k = 0; k < 1000; k++) { // showing each letter for 1 second
    display_char(A);
 
  }
 
  for (int k = 0; k < 1000; k++) {
    display_char(B);
 
  }
  for (int k = 0; k < 1000; k++) {
    display_char(R);
 
  }
 
  // add more letters show method here
 
 
 
 
 
 
}
void display_char(byte ch[8]) { // Method do the multiplexing
  for (int j = 0; j < 8; j++) {
    digitalWrite(latchPin, LOW);
    digitalWrite(pins[j], LOW);
 
    shiftOut(dataPin, clockPin, LSBFIRST, ch[j]);
    digitalWrite(latchPin, HIGH);
    //delay(1);
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, B00000000); // to get rid of flicker when
    digitalWrite(latchPin, HIGH);
    digitalWrite(pins[j], HIGH);
 
  }
 
 
}

 

Read More