LED Yakala v2, Mete Hoca Panda için hazırlanmış gelişmiş bir LED yakalama oyunudur.
1 oyunculu oyunda çemberde dönen LED ile sabit yanan hedef LED’i yakalamaya çalışırız. Dönen LED tam hedef LED’in üzerine geldiğinde A veya B butonuna basar ve hedefi yakalamış oluruz.
Her başarılı yakalama sonrasında level atlanır ve döngü biraz daha hızlanır.
Hedefi ıskalarsak oyun biter ve hangi levele kadar çıktığımız LED’ler yakılarak gösterilir. Oyuna tekrar başlamak için START butonuna basmalıyız.
ZORLUK SEVİYESİ (AnahtarX):
X anahtarı oyunun kolay ve zor modunu ayarlar.
1 konumundayken oyun kolay, 2 konumundayken zor moda geçer.
RASGELE MODU (AnahtarY):
Y anahtarı 2 konumundayken hedef LED her yeni levelde rasgele bir pozisyona geçer.
Y anahtarı 1 konumundayken hedef LED kodun başında belirlenen LED olarak kalır.
X ve Y anahtarlarının ayarları oyunun en başında okunur. Anahtar konumu değişiminin etkili olabilmesi için oyunun RESET butonu ile yeniden başlatılması gerekir.
Oyunun daha basit sürümü için LED Yakala v1‘i inceleyin.
Arduino Nano
LED Yakala v2’nin Arduino Nano için Arduino IDE sketch kodunu aşağıda görebilir ve buraya tıklayarak indirebilirsiniz.
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
/* LED Yakala v2 (Nano) | Mete Hoca Panda için LED yakalama oyunu Çemberde dönen LED ile sabit yanan hedef LED'i yakalamaya çalışırız. Dönen LED tam hedef LED'in üzerine geldiğinde A veya B butonuna basar ve hedefi yakalamış oluruz. Her başarılı yakalama sonrasında level atlanır ve döngü biraz daha hızlanır. Hedefi ıskalarsak oyun biter ve hangi levele kadar çıktığımız LED'ler yakılarak gösterilir. Oyuna tekrar başlamak için START butonuna basmalıyız. ZORLUK SEVİYESİ (AnahtarX): X anahtarı oyunun kolay ve zor modunu ayarlar. 1 konumundayken oyun kolay, 2 konumundayken zor moda geçer. RASGELE MODU (AnahtarY): Y anahtarı 2 konumundayken hedef LED her yeni levelde rasgele bir pozisyona geçer. Y anahtarı 1 konumundayken hedef LED kodun başında belirlenen LED olarak kalır. X ve Y anahtarlarının ayarları oyunun en başında okunur. Anahtar konumu değişiminin etkili olabilmesi için oyunun RESET butonu ile yeniden başlatılması gerekir. Oyunun daha basit sürümü için LED Yakala v1'i inceleyin. LED Yakala v2 Web Sayfası: https://www.metehoca.com/ -------------------------------------------------------------------------------- Mete Hoca Panda | Eğlendirerek Arduino Kodlama Öğreten Mini Oyun Konsolu Mete Hoca Panda, Arduino Nano veya Raspberry Pi Pico ile kullanılan ve herkesin kendi basit oyunlarını tasarlayıp uygulayabileceği kolay ve esnek bir oyun platformudur. 1 veya 2 kişilik oyunlar geliştirilmesine açık olan Panda, üzerinde barındırdığı 3 programlanabilir buton, 16 LED, 2 anahtar ve 1 buzzer ile biz Arduino ve Raspberry Pi Pico tutkunlarına hayal gücümüz ile sınırlı pek çok eğlence sunuyor. Panda'nın detaylı açıklaması ve örnek oyunlarını web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ const byte LED[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,A0,A1}; // LED'lerin pinleri byte ButonA = A2, ButonB = A3, ButonS = A4; // Buton pinleri byte SwitchX = A6, SwitchY = A7; // Anahtar pinleri byte Buzzer = A5; // Buzzer pini int AnahtarX, AnahtarY; byte ButonA_Basildi, ButonB_Basildi, level, hiz, YananLED; byte Kolay = 100; // Kolay moddaki ilk level bekleme miktarı byte Zor = 50; // Zor moddaki ilk level bekleme miktarı byte Kolay_Fark = 5; // Kolay modun hızlanma miktarı byte Zor_Fark = 2; // Zor modun hızlanma miktarı byte HedefLED = 8; // Oyuna başlarken ilk hedef olacak LED bool Rasgele = false; void setup() { Kurulum(); // LED ve Butonları ayarlar AnahtarOku(); // Anahtar konumlarını okur if (AnahtarX == 2) hiz = Zor; else hiz = Kolay; // X: Zorluk seviyesi ayarlanıyor if (AnahtarY == 2) Rasgele = true; else Rasgele = false; // Y: Rasgele modu ayarlanıyor } void loop() { digitalWrite(LED[YananLED], HIGH); // Döngüde o an yanacak LED yakılıyor if (YananLED == HedefLED) digitalWrite(LED[HedefLED], LOW); else digitalWrite(LED[HedefLED], HIGH); for (int x = 0; x < hiz; x++) { // Döngüdeki LED yanarken buton kontrolü yapılıyor if (digitalRead(ButonA) == 1) ButonA_Basildi = true; if (digitalRead(ButonB) == 1) ButonB_Basildi = true; delay(1); } if (ButonA_Basildi == true || ButonB_Basildi == true) { // Butonlardan birine basılmış! if (YananLED == HedefLED) Yakaladi(); else Yakalayamadi(); ButonA_Basildi = false; ButonB_Basildi = false; YananLED = 0; if (Rasgele == true) HedefLED = random(sizeof(LED)); } digitalWrite(LED[YananLED], LOW); // Döngüde sıradaki LED'e geçiyoruz YananLED++; // Sıradaki LED if (YananLED == sizeof(LED)) YananLED = 0; // Son LED'e geldik. Başa dönüyoruz. } void Yakaladi() { for (int x = 0; x < 3; x++) { // Yakalanan LED'i 3 kere yak söndür ve 3 kere biple tone(Buzzer,500); digitalWrite(LED[HedefLED], LOW); delay(50); noTone(Buzzer); digitalWrite(LED[HedefLED], HIGH); delay(50); } digitalWrite(LED[HedefLED], LOW); if (AnahtarX == 2) hiz -= Zor_Fark; else hiz -= Kolay_Fark; } void Yakalayamadi() { tone(Buzzer,250); for (int x = 0; x < 3; x++) { // Döngüdeki LED'i 3 kere yak söndür digitalWrite(LED[YananLED], LOW); delay(100); digitalWrite(LED[YananLED], HIGH); delay(100); } digitalWrite(LED[YananLED], LOW); noTone(Buzzer); digitalWrite(LED[HedefLED], LOW); if (AnahtarX == 2) level = ((Zor - hiz) / Zor_Fark); // Level hesapla else level = ((Kolay - hiz) / Kolay_Fark); if (level != 0) { // İlkinde yakalayamadıysa skor gösterme for (int x = 0; x < level; x++) digitalWrite(LED[x], HIGH); // level kadar led yak while (!digitalRead(ButonS)); // START butonuna basılana kadar bekle for (int x = 0; x < level; x++) digitalWrite(LED[x], LOW); // LED'leri söndür } if (AnahtarX == 2) hiz = Zor; else hiz = Kolay; } void AnahtarOku() { AnahtarX = analogRead(SwitchX); // Analog değeri oku if (AnahtarX > 900) AnahtarX = 1; else if (AnahtarX < 50) AnahtarX = 2; // 1 veya 2 olarak ayarla AnahtarY = analogRead(SwitchY); // Analog değeri oku if (AnahtarY > 900) AnahtarY = 1; else if (AnahtarY < 50) AnahtarY = 2; // 1 veya 2 olarak ayarla } void Kurulum() { for (int x = 0; x < sizeof(LED); x++) pinMode(LED[x], OUTPUT); // LED'leri çıkış yapıyoruz pinMode(ButonA, INPUT); // Buton pinlerini giriş olarak ayarlıyoruz pinMode(ButonB, INPUT); pinMode(ButonS, INPUT); pinMode(Buzzer, OUTPUT); // Buzzer pinini çıkış olarak ayarlıyoruz for (int x = 0; x < sizeof(LED); x++) digitalWrite(LED[x], HIGH); // Test: Tüm LED'leri yakalım delay(500); for (int x = 0; x < sizeof(LED); x++) digitalWrite(LED[x], LOW); // LED'leri söndürelim delay(500); // Ana kod öncesinde biraz bekleyelim } |
Raspberry Pi Pico
LED Yakala v2’nin Raspberry Pi Pico için Arduino IDE sketch kodunu aşağıda görebilir ve buraya tıklayarak indirebilirsiniz.
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
/* LED Yakala v2 (Pi Pico) | Mete Hoca Panda için LED yakalama oyunu Çemberde dönen LED ile sabit yanan hedef LED'i yakalamaya çalışırız. Dönen LED tam hedef LED'in üzerine geldiğinde A veya B butonuna basar ve hedefi yakalamış oluruz. Her başarılı yakalama sonrasında level atlanır ve döngü biraz daha hızlanır. Hedefi ıskalarsak oyun biter ve hangi levele kadar çıktığımız LED'ler yakılarak gösterilir. Oyuna tekrar başlamak için START butonuna basmalıyız. ZORLUK SEVİYESİ (AnahtarX): X anahtarı oyunun kolay ve zor modunu ayarlar. 1 konumundayken oyun kolay, 2 konumundayken zor moda geçer. RASGELE MODU (AnahtarY): Y anahtarı 2 konumundayken hedef LED her yeni levelde rasgele bir pozisyona geçer. Y anahtarı 1 konumundayken hedef LED kodun başında belirlenen LED olarak kalır. X ve Y anahtarlarının ayarları oyunun en başında okunur. Anahtar konumu değişiminin etkili olabilmesi için oyunun RESET butonu ile yeniden başlatılması gerekir. Oyunun daha basit sürümü için LED Yakala v1'i inceleyin. LED Yakala v2 Web Sayfası: https://www.metehoca.com/ -------------------------------------------------------------------------------- Mete Hoca Panda | Eğlendirerek Arduino Kodlama Öğreten Mini Oyun Konsolu Mete Hoca Panda, Arduino Nano veya Raspberry Pi Pico ile kullanılan ve herkesin kendi basit oyunlarını tasarlayıp uygulayabileceği kolay ve esnek bir oyun platformudur. 1 veya 2 kişilik oyunlar geliştirilmesine açık olan Panda, üzerinde barındırdığı 3 programlanabilir buton, 16 LED, 2 anahtar ve 1 buzzer ile biz Arduino ve Raspberry Pi Pico tutkunlarına hayal gücümüz ile sınırlı pek çok eğlence sunuyor. Panda'nın detaylı açıklaması ve örnek oyunlarını web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ const byte LED[16] = {17,16,18,19,20,21,22,15,14,13,12,11,10,0,1,2}; // LED'lerin pinleri byte ButonA = 3, ButonB = 4, ButonS = 5; // Buton pinleri byte SwitchX = 7, SwitchY = 8; // Anahtar pinleri byte Buzzer = 6; // Buzzer pini int AnahtarX, AnahtarY; byte ButonA_Basildi, ButonB_Basildi, level, hiz, YananLED; byte Kolay = 100; // Kolay moddaki ilk level bekleme miktarı byte Zor = 50; // Zor moddaki ilk level bekleme miktarı byte Kolay_Fark = 5; // Kolay modun hızlanma miktarı byte Zor_Fark = 2; // Zor modun hızlanma miktarı byte HedefLED = 8; // Oyuna başlarken ilk hedef olacak LED bool Rasgele = false; void setup() { Kurulum(); // LED ve Butonları ayarlar AnahtarOku(); // Anahtar konumlarını okur if (AnahtarX == 2) hiz = Zor; else hiz = Kolay; // X: Zorluk seviyesi ayarlanıyor if (AnahtarY == 2) Rasgele = true; else Rasgele = false; // Y: Rasgele modu ayarlanıyor } void loop() { digitalWrite(LED[YananLED], HIGH); // Döngüde o an yanacak LED yakılıyor if (YananLED == HedefLED) digitalWrite(LED[HedefLED], LOW); else digitalWrite(LED[HedefLED], HIGH); for (int x = 0; x < hiz; x++) { // Döngüdeki LED yanarken buton kontrolü yapılıyor if (digitalRead(ButonA) == 1) ButonA_Basildi = true; if (digitalRead(ButonB) == 1) ButonB_Basildi = true; delay(1); } if (ButonA_Basildi == true || ButonB_Basildi == true) { // Butonlardan birine basılmış! if (YananLED == HedefLED) Yakaladi(); else Yakalayamadi(); ButonA_Basildi = false; ButonB_Basildi = false; YananLED = 0; if (Rasgele == true) HedefLED = random(sizeof(LED)); } digitalWrite(LED[YananLED], LOW); // Döngüde sıradaki LED'e geçiyoruz YananLED++; // Sıradaki LED if (YananLED == sizeof(LED)) YananLED = 0; // Son LED'e geldik. Başa dönüyoruz. } void Yakaladi() { for (int x = 0; x < 3; x++) { // Yakalanan LED'i 3 kere yak söndür ve 3 kere biple tone(Buzzer,500); digitalWrite(LED[HedefLED], LOW); delay(50); noTone(Buzzer); digitalWrite(Buzzer, LOW); digitalWrite(LED[HedefLED], HIGH); delay(50); } digitalWrite(LED[HedefLED], LOW); if (AnahtarX == 2) hiz -= Zor_Fark; else hiz -= Kolay_Fark; } void Yakalayamadi() { tone(Buzzer,250); for (int x = 0; x < 3; x++) { // Döngüdeki LED'i 3 kere yak söndür digitalWrite(LED[YananLED], LOW); delay(100); digitalWrite(LED[YananLED], HIGH); delay(100); } digitalWrite(LED[YananLED], LOW); noTone(Buzzer); digitalWrite(Buzzer, LOW); digitalWrite(LED[HedefLED], LOW); if (AnahtarX == 2) level = ((Zor - hiz) / Zor_Fark); // Level hesapla else level = ((Kolay - hiz) / Kolay_Fark); if (level != 0) { // İlkinde yakalayamadıysa skor gösterme for (int x = 0; x < level; x++) digitalWrite(LED[x], HIGH); // level kadar led yak while (!digitalRead(ButonS)); // START butonuna basılana kadar bekle for (int x = 0; x < level; x++) digitalWrite(LED[x], LOW); // LED'leri söndür } if (AnahtarX == 2) hiz = Zor; else hiz = Kolay; } void AnahtarOku() { pinMode(SwitchX, INPUT); pinMode(SwitchY, INPUT); AnahtarX = digitalRead(SwitchX); // Analog değeri oku if (AnahtarX == HIGH) AnahtarX = 1; else AnahtarX = 2; // 1 veya 2 olarak ayarla AnahtarY = digitalRead(SwitchY); // Analog değeri oku if (AnahtarY == HIGH) AnahtarY = 1; else AnahtarY = 2; // 1 veya 2 olarak ayarla } void Kurulum() { for (int x = 0; x < sizeof(LED); x++) pinMode(LED[x], OUTPUT); // LED'leri çıkış yapıyoruz pinMode(ButonA, INPUT); // Buton pinlerini giriş olarak ayarlıyoruz pinMode(ButonB, INPUT); pinMode(ButonS, INPUT); pinMode(Buzzer, OUTPUT); // Buzzer pinini çıkış olarak ayarlıyoruz for (int x = 0; x < sizeof(LED); x++) digitalWrite(LED[x], HIGH); // Test: Tüm LED'leri yakalım delay(500); for (int x = 0; x < sizeof(LED); x++) digitalWrite(LED[x], LOW); // LED'leri söndürelim delay(500); // Ana kod öncesinde biraz bekleyelim } |
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
ÖZGÜN ve KULLANIŞLI projeler yapabilmek için ARDUINO’yu doğru öğrenmek gerekir. Arduino’ya güçlü başlamanın en iyi yolu ARDUINO’YA GÜÇLÜ BAŞLANGIÇ EĞİTİM VE PROJE SETİ‘dir. Arduino Uno üzerine kurulu olan set ile bu müthiş geliştirme platformunu tüm detaylarıyla anlayacak, başka hiçbir yerde bulamayacağınız inceliklerini öğrenecek ve en sık kullanılan Arduino sensör ve modüllerine aşina olacaksınız.