Arduino ve Processing ile RGB LED Kontrolü
Arduino ile temel işleri ilerlettikten sonra bir arayüzle kontrol edilebilen projeler dikkat çekmeye başlar. Arduino’da bulunan seri haberleşme birimi ile herhangi bir programlama dili ile hazırlanmış ve bilgisayardaki seriport üzerinden haberleşen arayüzleri birbirleriyle konuşturmak mümkün.
Bu yazımda sizlere Arduino için kolayca arayüzler hazırlayabileceğiniz bir programlama dili ve aynı zamanda geliştirme ortamı olan Processing’den bahsedeceğim. Processing tümleşik geliştirme ortamını (IDE) indirdikten sonra Arduino IDE’si ile oldukça benzediğini göreceksiniz. Bunun sebebi Processing’in Arduino’ya esin kaynağı olması ve altyapı olarak Processing benzeri bir yapı kullanmasıdır. Yani Arduino programlamayı öğrendiğinizde aynı dili Processing programlama için de kullanabilirsiniz.
Processing programlamaya yeni başlayanlar ve değişik görsel tasarımlar oluşturmak isteyenlere yönelik geliştirilmiş açık kaynaklı bir programlama dili ve geliştirme ortamıdır. Programlamaya giriş eğitimi, görsel tasarım ve yazılım protoipleme gibi birçok alanda yaygın olarak kullanılmaktadır.
Processing‘i http://www.processing.org web sitesinden ücretsiz olarak indirebilirsiniz.
Örnekte kullandığımız Control5p kütüphanesini de http://www.sojamo.de/libraries/controlP5/ adresinden indirebilirsiniz. Kütüphaneyi kullanabilmek için indirdiğiniz zip dosyasını içerisinde gelen control5p klasörünü bilgisayarınızdaki “Belgelerim\Processing\libraries” klasörü altına koymalısınız.
Aşağıda Processing, Contol5p kütüphanesi, Arduino ve Arduino Türkiye Protoshield kullanılarak hazırlanmış bir RGB LED Kontrolü örneğini görüyorsunuz. Bu arada Protoshield’imizin de üzerindeki ufak devre tahtası (breadboard) ile kullanıldığında ne kadar kullanışlı olduğunu görebilirsiniz 🙂
Bu örneğimizle beraber Processing‘in kullanılmasını, kütüphanelerin eklenmesini ve seri haberleşme üzerinden kontrolü görmüş olacağız. İlerleyen yazılarda Processing ve Arduino ile seri haberleşmenin ayrıntılarına da gireceğiz. Bizi izlemeye devam edin…
Projemizin Processing kodları:
/** * Processing ver ControlP5 Kütüphanesi ile * RGB LED Kontrolü * Arduino Türkiye * https://arduinoturkiye.com */ import controlP5.*; import processing.serial.*; ControlP5 controlP5; Serial myPort; // Create object from Serial class ColorPicker cp; int redDeger; int greenDeger; int blueDeger; void setup() { size(400,100); controlP5 = new ControlP5(this); cp = controlP5.addColorPicker("picker",0,0,255,20); String portName = Serial.list()[0]; myPort = new Serial(this, portName, 9600); } void draw() { background(cp.getColorValue()); redDeger = int(red(cp.getColorValue())); greenDeger = int(green(cp.getColorValue())); blueDeger = int(blue(cp.getColorValue())); println("RED "+redDeger + " GREEN "+greenDeger + " BLUE "+blueDeger); RGBGonder(); delay(50); } void RGBGonder() { myPort.write('R'); myPort.write(redDeger); myPort.write(greenDeger); myPort.write(blueDeger); }
Projenin Arduino kodları:
/* Seriport üzerinden RGB (red-green-blue) LED kontrolü Arduino Türkiye https://arduinoturkiye.com */ // LED bağlatı pinleri int rpin = 11; // kırmızı int gpin = 10; // yeşil int bpin = 9; // mavi float h = 0; //hue (ton) değeri int red=0, green=0, blue=0; // renk değerleri int durum = 1; int gelen = 0; void setup() { Serial.begin(9600); } void loop() { while(Serial.available()>0) { gelen = Serial.read(); switch(durum) { case 1: if(gelen == 'R'){ durum = 2; } break; case 2: red = gelen; durum = 3; break; case 3: green = gelen; durum = 4; break; case 4: blue = gelen; durum = 1; break; } } // Ortak katot için analogWrite(rpin, 255 - red); analogWrite(gpin, 255 - green); analogWrite(bpin, 255 - blue); // Ortak anot için /* analogWrite(rpin, r); analogWrite(gpin, g); analogWrite(bpin, b); */ delay(20); }
LED Bağlantıları:






