Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 34 İleri Düzey Uygulamalar / Rastgele Led Yakma için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

İleri Düzey Uygulamalar

Ders Kazanımları:

  • Potansiyometre İle Rgb LED Kontrolü programını yardım almadan başarılı bir şekilde tasarlar.
  • Buton ile rastgele LED yakma programını yardım almadan başarılı bir şekilde tasarlar.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken birtakım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu.” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınızda usb driver yüklenmemiş olabilir. Bu gibi hatalarda “Port bulunamadı.” gibi hatalar almanız muhtemeldir.


Uygulama 1: Potansiyometre ile RGB Led Kontrolü

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

Resim140

  1. Potansiyometreyi breadboard üzerine yatay şekilde yerleştirin.
  2. Sağdaki veya soldaki bacağın herhangi birini Arduino Uno üzerinde 3.3V pinine, diğer bacağını ise yine Arduino Uno üzerinde GND pinine bağlayın. Potansiyometrenin ortadaki bacağını ise Arduino Uno üzerinde A0 pinine bağlayın.
  3. RGB LED’i breadboard üzerinde yatay şekilde yerleştirin.
  4. RGB LED’in uzun bacağını Arduino Uno’nun GND pinine (eğer program bitirip çalıştırdığınızda LED ışık vermezse LEDiniz ortak anottur ve GND yerine 5v (+) pinine) bağlayın.
  5. LED’in hemen solundaki tek olan bacak kırmızı renk sağlayan bacaktır.
  6. Bu bacağı Arduino Uno’nun 9 numaralı pinine, uzun bacağın sağındaki iki bacaktan ilki yeşil rengi sağlar ve Arduino Uno’nun 10 numaralı pinine bağlanır.
  7. Diğer bacak mavi rengi sağlayan pindir ve Arduino Uno’nun 11 numaralı pinine bağlanır.

Kodlar:

Uygulamanın “.ino” dosyasını (kod dosyasını) buradan indirebilirsiniz.

int rgb_r=9; //bağlantı yapılan pinler
int rgb_g=10;
int rgb_b=11;
int pot=0;
int digital_pot,digital_mapr,digital_mapg,digital_mapb,digital_mapm;
void setup() {
Serial.begin(9600);
pinMode(rgb_r, OUTPUT);
pinMode(rgb_g, OUTPUT);
pinMode(rgb_b, OUTPUT);
}
void loop() {
digital_pot=analogRead(pot);
Serial.println(digital_pot);
digital_mapr=map(digital_pot,0,255,0,255);
digital_mapg=map(digital_pot,256,510,0,255);
digital_mapb=map(digital_pot,511,765,0,255);
digital_mapm=map(digital_pot,766,1023,0,255);
if(digital_pot<=255) // kırmızı
{
analogWrite(rgb_r,255-digital_mapr);
digitalWrite(rgb_b,HIGH);
digitalWrite(rgb_g,HIGH);
}
else if(digital_pot>=256 && digital_pot<510) // kırmızı yeşil
{
analogWrite(rgb_r,digital_mapg);
digitalWrite(rgb_b,HIGH);
analogWrite(rgb_g,255-digital_mapg);
}
else if(digital_pot>=511 && digital_pot<765) // yeşil mavi
{
analogWrite(rgb_g,digital_mapb);
analogWrite(rgb_b,255-digital_mapb);
digitalWrite(rgb_r,HIGH);
}
else if(digital_pot>=766 && digital_pot<1023) // yeşil mavi
{
analogWrite(rgb_r,255-digital_mapm);
analogWrite(rgb_b,digital_mapm);
digitalWrite(rgb_g,HIGH);
}
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada potansiyometre ile RGB LEDin renk durumu kontrol edilebilir.
  • RGB LED daha önceki slaytlarda anlatıldığı gibi ana renkleri içinde barındırır.
  • Bu renkleri karıştırarak başka renkler elde edebiliriz.
  • Bu uygulamada da potansiyometre değeri değiştikçe LEDe gelen sinyal değiştiğinden elde edilen renklerde değişecektir.
  • Renkler arası yumuşak geçişleri gözlemleyebilirsiniz.

Uygulama 2: Buton ile Rastgele Led Yakma

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

Resim141

  1. 6 LED’i fotoğraftaki gibi breadboarda yerleştirdikten sonra dirençleri LED’lerin eksi (katot-kısa) bacağına bağlayın.
  2. Dirençlerin boşta kalan bacağını breadboard üzerinde “-” hatta bağlayın.
  3. LED’lerin “+” bacaklarını sırasıyla şekildeki gibi Arduino Uno üzerinde 2 – 3 – 4 – 5 – 6 – 7 numaralı dijital pinlere bağlayın.
  4. Butonu yukarıdaki fotoğraftaki gibi breadboard üzerine yerleştirdikten sonra herhangi bir bacağına direnci bağlayın.
  5. Direncin boşta kalan bacağını breadboard üzerinde “-” hatta bağlayın.
  6. Şekildeki gibi direncin diğer bacağını Arduino Uno üzerinde 12 numaralı dijital pine bağlayın.
  7. Butonun direnç bağlı olmayan bacağını ise breadboard üzerinde “+” hatta bağlayın.
  8. Önemli noktalardan olan ve unutulmaması gereken bir nokta da Arduino Uno’ nun 5V pinini breadboard üzerinde “+” hatta , GND pinini ise breadboard üzerinde “-” hatta bağlanmasıdır.

Kodlar:

Uygulamanın “.ino” dosyasını (kod dosyasını) buradan indirebilirsiniz

#define DEBUG 0
// 6 ledin bağlandığı pinler
int birinci = 2;
int ikinci = 3;
int ucuncu = 4;
int dortuncu = 5;
int bensinci = 6;
int altinci = 7;
// butonun bağlandığı pinler
int button = 12;
// butonun değerini kontrol etmek için değişken
int basilma = 0;
void setup() {
// bütün pinlerin çıkış olarak tanımlanması
for (int i=birinci; i<=altinci; i++) {
pinMode(i, OUTPUT);
}
// butonun giriş olarak tanımlanması
pinMode(button, INPUT);
// rastgele sınıflamanın A0 dan başlaması
randomSeed(analogRead(0));
// hata varsa serial ekrana bağlan
#ifdef DEBUG
Serial.begin(9600);
#endif
}
void buildUpTension() {
// ledlerin sağdan sola yanmasını sağlamak
for (int i=birinci; i<=altinci; i++) {
if (i!=birinci) {
digitalWrite(i-1, LOW);
}
digitalWrite(i, HIGH);
delay(100);
}
// soldan sağa
for (int i=altinci; i>=birinci; i–) {
if (i!=altinci) {
digitalWrite(i+1, LOW);
}
digitalWrite(i, HIGH);
delay(100);
}
}
void gostersayi(int sayi) {
digitalWrite(birinci, HIGH);
if (sayi >= 2) {
digitalWrite(ikinci, HIGH);
}
if (sayi >= 3) {
digitalWrite(ucuncu, HIGH);
}
if (sayi >= 4) {
digitalWrite(dortuncu, HIGH);
}
if (sayi >= 5) {
digitalWrite(bensinci, HIGH);
}
if (sayi == 6) {
digitalWrite(altinci, HIGH);
}
}
int throwDice() {
//1-6 arasında rastgele sayı üretmek
int rastgelesayi = random(1,7);
#ifdef DEBUG
Serial.println(rastgelesayi);
#endif
return rastgelesayi;
}
void setAllLEDs(int value) {
for (int i=birinci; i<=altinci; i++) {
digitalWrite(i, value);
}
}
void loop() {
// eğer butona basılmış ise
basilma = digitalRead(button);
if (basilma == HIGH) {
// önceki sayıyı kaldır
setAllLEDs(LOW);
buildUpTension();
int thrownsayi = throwDice();
gostersayi(thrownsayi);
}
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada butona bastığında LED’ler sırasıyla yanmaya başlayacaktır.
  • Bir süre sonra duracak ve random sayıda LED yanacaktır.
  • Butona her bastığınızda bu işlem tekrarlanacaktır.
  • Reklam ve görsellik gerektiren çalışmalar da kullanılabilir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz