Merhaba arkadaşlar. Bugün sizlerle beraber Arduino ile RGB LED kontrolü yapacağız.
Gerekli malzemelerimiz:
- Arduino UNO
- Breadboard
- 1 adet ortak anot veya ortak katot RGB LED
- 3 adet 220 Ω direnç
- İki ucu erkek jumper kablo
RGB LED Nedir?
RGB LED’ler, normal LED’lerden farklı olarak tek paket içerisinde 3 farklı renk (kırmızı, yeşil ve mavi) LED’i bir arada bulundurur. LED yakıp söndürme dersimizden hatırlayacak olursak LED’lerin anot ve katot uçları bulunuyordu. RGB LED’lerde ise LED’in üretim şekline göre anot veya katot bağlantıları ortak olarak bulunmaktadır.
Bizim kullandığımız kitte bulunan RGB LED’imiz ortak anoda sahip. Ama bu yazımızda hem ortak anoda göre hem de ortak katoda göre Arduino kodu ve devre şeması hazırlayacağız. Siz de RGB LED’inize bakarak uygun olan devreyi yapıp, Arduino kodlarınızı yükleyebilirsiniz.
PWM ve Dijitalden Analog’a Dönüşüm
Bildiğimiz gibi Arduino’muzun giriş/çıkış pinlerinde kullanılan voltaj 5V seviyesinde. Bir önceki dersimizde LED’imizi 5V gerilimde 20 mA akım çekecek şekilde kartımıza bağlamıştık. Bu şekilde bağladığımızda LED’imiz olabilecek en parlak şekilde yanmaktaydı. Peki parlaklığı değiştirmek istersek ne yapmamız gerekir?
Sorunun cevabı aslında basit: gerilimi düşürmek. Eğer 5V ile çalışan LED’imizi daha düşük bir gerilimle, örneğin 3V ile çalıştırırsak parlaklığı azalacaktır. Fakat bu sefer de şunu sorabilirsiniz: Arduino çıkış gerilimi 5V değil miydi? Nasıl 3V çıkış alabiliriz?
Burada darbe genişliği modülasyonu (PWM – pulse width modulation) tekniğini kullanmamız gerekiyor. Bu yazıda darbe genişliği modülasyonu yerine kısaca PWM olarak bahsedeceğim. PWM, çıkışta aldığımız 5V gerilimi belirli bir zaman aralığında (Arduino’da genellikle saniyenin 1/500’ü) açıp kapatarak 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlar. Şu şekilde düşünelim: eğer bir LED çok hızlı bir şekilde yanıp sönerse gözümüz bu yanıp sönmeyi tam olarak algılayamaz ve parlaklığı daha düşük olarak algılar.
Yukarıdaki görselde gördüğümüz üzere, 5V’u 2 milisaniyelik sürenin sadece %5’lik kısmında açık olacak şekilde verirsek, elde ettiğimiz değer 5V’un %5’i; yani 0,25V olacaktır. Aynı şekilde eğer 2 ms sürenin yarısında (%50) açık kalacak şekilde ayarlarsak 2,5V elde ederiz.
Arduino UNO kartımızın tüm pinleri PWM çıkış yeteneğine sahip değildir. Kartımızın dijital pinlerinde pin numarasının önünde ~ işareti olan bazı pinler mevcuttur. Eğer PWM çıkış almak istiyorsak, bu pinleri kullanmak zorundayız. Bu pinler Arduino UNO için 3, 5, 6, 9, 10 ve 11 numaralı pinlerdir.
RGB LED İçin Arduino Kodu
İlk dersimizde Arduino yazılımı içinde mevcu olan örnek kodu değiştirmiştik. Bu sefer kodumuzu kendimiz yazıyoruz:
//Ortak Anot RGB LED için Arduino Kodu //RGB LED'imizin bacaklarını Arduino'da bağladığımız pinlere göre global değişken olarak atadık. int kirmiziPin = 9; //Kırmızı bacak 9 numaralı pine int yesilPin = 10; //yeşil bacak 10 numaralı pine int maviPin = 11; //mavi bacak 11 numaralı pine void setup(){ pinMode(kirmiziPin, OUTPUT); //kirmiziPin(9) çıkış pini olarak atadık pinMode(yesilPin, OUTPUT); //yesilPin(10) çıkış pini olarak atadık pinMode(maviPin, OUTPUT);} //mavi(11) çıkış pini olarak atadık void loop(){ renkAyarla(255, 0, 0); //kirmizi delay(1500); //1.5 saniye bekle renkAyarla(0, 255, 0); //yesil delay(1500); //1.5 saniye bekle renkAyarla(0, 0, 255); //mavi delay(1500); //1.5 saniye bekle renkAyarla(255, 255, 0); //sari delay(1500); //1.5 saniye bekle renkAyarla(80, 0, 80); //mor delay(1500); //1.5 saniye bekle renkAyarla(0, 255, 255); //acik mavi delay(1500); //1.5 saniye bekle renkAyarla(255, 255, 255); //beyaz delay(1500); //1.5 saniye bekle } //Renk ayarla fonksiyonu oluşturduk void renkAyarla(int kirmizi, int yesil, int mavi){ kirmizi = 255-kirmizi; yesil = 255-yesil; mavi = 255-mavi; analogWrite(kirmiziPin, kirmizi); analogWrite(yesilPin, yesil); analogWrite(maviPin, mavi); }
RGB LED’imizin kırmızı bacağını 9 numaralı pine, yeşil bacağını 10 numaralı pine ve mavi pinini 11 numaralı pine 220 Ω’luk dirençler ile bağlıyoruz. Kullandığımız LED ortak anot yapıya sahip olduğu için anot bacağını da kartımızın 5V pinine bağlıyoruz.
Kodumuzun setup fonksiyonunda kullanacağımız pinleri çıkış olarak tanımlıyoruz. Ayrıca yazdığımız renkAyarla isimli fonksiyondaki analogWrite komutu, bize her bir PWM çıkış pininden alacağımız voltajın yüksekliğini ayarlamamızı sağlıyor. analogWrite komutu şu şekilde kullanılıyor:
analogWrite(PWM çıkış pin numarası, 0-255 arası sayısal değer);
analogWrite komutunda 255 değeri maksimum çıkış voltajını yani 5V’u temsil ediyor. 0 ile 255 arası tüm değerler 0 – 5V arası voltaj değerlerine denk düşüyor. Örneğin analogWrite(9 , 80) komutu, 9 numaralı pinden 5V x (80/255) = 1,57V geriliminde çıkış almamızı sağlıyor. Farklı parlaklıklardaki kırmızı mavi ve yeşil ışığı karıştırarak istediğimiz renkte ışık elde etmemiz bu sayede mümkün oluyor.
Eğer kullandığımız LED ortak anot yerine ortak katot yapıya sahipse, ortak bacağı +5V yerine GND pinlerine bağlayıp, aşağıdaki kodları Arduino’muza yükleyebiliriz.
//Ortak Katot RGB LED için Arduino Kodu //RGB LED'imizin bacaklarını Arduino'da bağladığımız pinlere göre global değişken olarak atadık. int kirmiziPin = 9; //Kırmızı bacak 9 numaralı pine int yesilPin = 10; //yeşil bacak 10 numaralı pine int maviPin = 11; //mavi bacak 11 numaralı pine void setup(){ pinMode(kirmiziPin, OUTPUT); //kirmiziPin(9) çıkış pini olarak atadık pinMode(yesilPin, OUTPUT); //yesilPin(10) çıkış pini olarak atadık pinMode(maviPin, OUTPUT);} //mavi(11) çıkış pini olarak atadık void loop(){ renkAyarla(255, 0, 0); //kirmizi delay(1500); //1.5 saniye bekle renkAyarla(0, 255, 0); //yesil delay(1500); //1.5 saniye bekle renkAyarla(0, 0, 255); //mavi delay(1500); //1.5 saniye bekle renkAyarla(255, 255, 0); //sari delay(1500); //1.5 saniye bekle renkAyarla(80, 0, 80); //mor delay(1500); //1.5 saniye bekle renkAyarla(0, 255, 255); //acik mavi delay(1500); //1.5 saniye bekle renkAyarla(255, 255, 255); //beyaz delay(1500); //1.5 saniye bekle } //Renk ayarla fonksiyonu oluşturduk void renkAyarla(int kirmizi, int yesil, int mavi){ analogWrite(kirmiziPin, kirmizi); analogWrite(yesilPin, yesil); analogWrite(maviPin, mavi); }
loop fonksiyonunda ise kartımız, oluşturduğumuz renkAyarla kodunu tekrar tekrar çağırarak çıkışlara istediğimiz değerleri yazmamızı sağlıyor. delay fonksiyonu bildiğimiz üzere her komut arasında kartımızın işlem yapmadan beklemesini sağlıyor. Bu fonksiyonun değerini değiştirerek istediğimiz hızda renkler arası geçiş sağlayabiliriz. Sizler de farklı parlaklık değerleriyle oynayarak farklı renkler elde edebilirsiniz. Hatta farklı efektler bile oluşturabilirsiniz.
Setinizi hala almadıysanız, bu video hangisini tercih etmeniz gerektiği konusunu size aktarıyor.
Merhaba Kerem bey;
Arduino meraklıları için harika bir kaynak olmuş.
Elinize sağlık.
Derslerin devamını bekliyoruz.
Saygılar & selamlar
Gökhan Güler
Teşekkür ederiz Gökhan Bey, blogla ilgili çalışmalarımız tüm hızıyla devam etmektedir 🙂
Merak ettigim şudur
Renkler arasi gecisi nasil yumuşatabiliriz
onuda pot larla yapabilrsiniz
selam
bu kadar guzel anlatilabilir tesekkur ederim
Teşekkürler 🙂 derslerinize yeni başladım ve gayet güzel bir kaynak. Neredeyse evdeki 2 Arduino kitabını aldığıma pişman oldum diyebilirim.
buradaki olayın işleme tarzı şu şekilde mi ?
ortak anottan 5v geliyor.
pwm pininden örneğin 3 v çıkış aldık. 5-3=2v
led 2v değerine göre yanıyor ?
Merak ettiğim şudur renkler arası geçişi nasıl yumuşatabiliriz
renkAyarla() komutları arasındaki delay sürelerini değiştirerek veya her bir rengin değerini bir döngü içerisinde (örneğin for döngüsü) kademeli olarak arttırarak yapabilirsiniz.
emeğinize sağlık hocam.sizden ricam ardunyo ile 2 eksen güneş takip sitemi gösterirmisiniz.şimdiden teşekkür ederim.
saygılar
Ben bu konularda daha çok yeniyim de size bir sorum olacaktı acaba ben arduino uno r3 yerine klon olanını kullansam sorun olur mu acaba cevap verirseniz sevinirim
Klon ürünler, orijinal ürünlerin farklı fabrikalar tarafından daha uygun maliyetlerde üretilmiş versiyonlarıdır. İşlevsel olarak hiçbir farkları yoktur. Gönül rahatlığıyla kullanabilirsiniz 🙂
hocam iyi günler
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 – kirmizi;
yesil = 255 – yesil;
mavi = 255 – mavi;
analogWrite(kirmiziPin, kirmizi);
analogWrite(yesilPin, yesil);
analogWrite(maviPin, mavi);
} komutun buradaki işlevini çözemedim açıklayabilirmisiniz ?
Renk ayarlama; yani PWM çıkışına gerekli analog değeri yazma işlemini loop fonksiyonu yerine ayrı bir fonksiyon olarak yazdım. Böylelikle kodun loop kısmında gereksiz kalabalığın önüne geçerek daha net bir şekilde görülebileceğini düşündüm 🙂
Burdaki kodlar ve şemalar çalışıyor ben denedim Çok güzel.
Hocam teşekkür ederim. Ancak anlamadığım bir nokta var. renkAyarla(255, 0, 0) verdiğimiz zaman,
kirmizi = 0
yesil = 255
mavi = 255 oluyor.
Bu durumda kirmiziPin’e 0V giderken diğerlerine 5V gidiyor. Sonuç olarak Mavi + Yeşil yanması gerekmiyor mu ? Neden kırmızı yanıyor ?
LED ortak anot yapıya sahip olduğundan, yanmasını istediğimiz LED’e 5V yerine 0V gönderiyoruz.
error: ld returned 1 exit status
Böyle bir hata verdi nasıl düzeltebilirim.
Merhaba;
Devrede 3 farklı direnci (-) kutuplara koymak yerine, bir tane direnci rgbnin artısına koysak aynı mantık olmaz mı?
Malesef hayır. Her bir LED üzerinden yaklaşık olarak 20mA değerinde akım geçmesi gerekli olduğundan (sebebini detaylı bir şekilde LED Yakıp Söndürme dersinde açıkladım) RGB LED’in içindeki her bir rengi ayrı bir LED olarak almamız gerekli. RGB LED’imizi farklı renklerde yakmak istediğimizde her üç rengin parlaklık değeri farklı olacağından, sadece ortak bacağa bağlayacağımız tek bir direnç yeterli akım sınırlamayı yapamayacaktır.
Aynısnı bende merak ediyordum cevap için teşekkürler Kerem hocam.
ben mesela arduino veya fpga üzerinde bir 8.055ms lik bir kare dalga üretip led yakmak istiyorum bunu 255 üzerinden hesaplayamadım yardımı olursanız ok sevirim
Üreteceğiniz kare dalganın açık kaldığı süreyi (duty cycle) değiştirerek hesaplayabilirsiniz: %50 duty cycle yaklaşık olarak 127/255, veya %20 duty cycle 51/255 yapacaktır.
‘renkAyarla’ was not declared in this scope diye hata alıyorum sebebi nedir acaba?
Kodun tamamını kopyalamamış olabilir misiniz? 🙂 loop fonksiyonunun altında renkAyarla isimli bir fonksiyon daha var, belki atlamış olabilirsiniz.
bende de aynı hata çıkıyor!
void renkAyarla(int kirmizi, int yesil, int mavi) komutunu void setup()dan sonraki satırda göster düzelir.
int kirmiziPin = 9;
int yesilPin = 10;
int maviPin = 11;
void setup()
{
pinMode(kirmiziPin, OUTPUT);
pinMode(yesilPin, OUTPUT);
pinMode(maviPin, OUTPUT);
}
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 – kirmizi;
yesil = 255 – yesil;
mavi = 255 – mavi;
analogWrite(kirmiziPin, kirmizi);
analogWrite(yesilPin, yesil);
analogWrite(maviPin, mavi);
}
void loop()
{
renkAyarla(255, 0, 0); //kirmizi
delay(1500);
renkAyarla(0, 255, 0); //yesil
delay(1500);
renkAyarla(0, 0, 255); //mavi
delay(1500);
renkAyarla(255, 255, 0); //sari
delay(1500);
renkAyarla(80, 0, 80); //mor
delay(1500);
renkAyarla(0, 255, 255); //acik mavi
delay(1500);
renkAyarla(255, 255, 255); //beyaz
delay(1500);
}
çok teşekkürler
Hocam emeğinize sağlık çok sagolun gercekten ☺
Peki birden fazla Led varsa elimizde örnekğin 15 adet ? pin sayısı yetişmiyor böyle tek tek bağlarsak
Bu durumda WS2812 gibi adreslenebilir sürücü çipine sahip LED’leri (örneğin NeoPixel) tercih etmeniz daha mantıklı olacaktır. http://www.robotistan.com/neopixel adresinden farklı çeşitlerde adreslenebilir LED’leri inceleyebilirsiniz.
Arduino herzaman kullanamyanlar için 123d curcits sitesini öneririm. https://circuits.io. Bu sitede hem tasarımı hemde kodlamayı deneyebilirsiniz
Teşekkürler Semih not ettim bu siteyi faydalı bir site.
hocm merhabalar. benim anladığım konu şu. ortak ANOTlu RGB led’de kırmızı, yeşil ve mavi bacaklar eksi iken nasıl olurda bu bacaklara OUTPUT (5V) veriyorsunuz. Bu eksi olan bacaklara OUTPUT veriyorsunuz ve led yanıyor. BU NASIL OLUYOR? merakımdan çatlayacam
Ortak anot LED kullanıldığında, elektrik akımı anot bacağı (+) -> LED -> direnç ve en son olarak direnç üzerinden Arduino pini vasıtasıyla toprak (GND) yolunu izlemiş oluyor. Ortak katot (-) kullandığımızda akımı Arduino sağlamış oluyor (current source); ortak anotta ise akım Arduino üzerinden akıyor (current sink). Her bir mikrokontrolcü için giriş/çıkış pinlerine ait bu değerler datasheet’te belirtilir.
rgb led ile ldr ve ses sensoru kullanımı nasıl olur bunla ilgili internette hic kaynak örnek yok örneğin gunduz ldr yandırmıyıcak rgb yi ama ses sensorunde tepki gelse bile yanmıyacak fakat gece olunca ldr ses sensorunden tepki bekliyicek sonra ldr rgb yi yakıcak bunu nasıl yapabiliriz yardımcı olursanız sevinirim.
lojik VE kapısına ldr ve ses sensörü bağlarsanız çıkışıda ardunio a verirseniz devre çalışır.lojik VEYA kapısına bağlarsanızda sensörlerden biri aktif olunca ardunio çıkış verir ve rgb yanar.
Kerem hocam bu 255 sabit bir değermi arduino kart için eğiştirilebiliyormu ve bu sayının ismi varmı
255 değeri, Arduino’nun PWM çıkışlarının hassasiyetinin 8-bit olmasından kaynaklıdır. 2^8 = 256 adım olduğundan, 0 değeri bize 0V, 255 değeri ise maksimum değer olan 5V’u verecektir. Aradaki değerler ise yazıda anlatıldığı gibi PWM sinyali olarak gerçekleşecektir.
SA Kerem Bey
Ben Arduino Kumanda ile RGB LED Kontrolü ödevim inernette bulduğum şu program ile;
#define red_pin 6
#define green_pin 5
#define blue_pin 3
#define RECV_PIN 11
#include
const int rgb_leds[] = { 6, 5, 3 };
const long r_less = 16724175; // 1
const long r_more = 16743045; // 3
const long g_less = 16716015; // 4
const long g_more = 16734885; // 6
const long b_less = 16728765; // 7
const long b_more = 16732845; // 9
const long randcol = 16726215; //
const long onoff = 16753245; //
const long blinkrgb = 16718055; //
const int interval = 10;
int red = 255;
int green = 255;
int blue = 255;
long ir_signal;
boolean onoff_switch = true;
boolean randcolor_switch = false;
IRrecv irrecv(RECV_PIN);
decode_results results;
void blink_pin( int pin ) {
analogWrite( pin, 100 );
delay( 1000 );
analogWrite( pin, 255 );
delay( 1000 );
}
void blink_rgb() {
for ( int led = 0; led <= 2; led++ ) {
blink_pin( rgb_leds[ led ] );
}
}
void dimm_all() {
for ( int led = 0; led <= 2; led++ ) {
analogWrite( rgb_leds[ led ], 255 );
}
}
void random_color() {
// Randomly draw a color each 500 ms
int val;
for ( int led = 0; led <= 2; led++ ) {
val = random( 0, 255 );
analogWrite( rgb_leds[ led ], val );
}
delay( 500 );
}
int inc_dec_val( char color, char action ) {
int val = interval;
if ( action == 'i' ) { val *= -1; }
switch (color) {
case 'r': val += red; break;
case 'g': val += green; break;
case 'b': val += blue; break;
}
if (val = 255 ) {
val = 255;
}
switch (color) {
case ‘r’: red = val; break;
case ‘g’: green = val; break;
case ‘b’: blue = val; break;
}
return val;
}
void setup() {
pinMode( red_pin, OUTPUT );
pinMode( green_pin, OUTPUT );
pinMode( blue_pin, OUTPUT );
dimm_all();
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if ( irrecv.decode(&results) ) {
ir_signal = results.value;
Serial.println( ir_signal );
switch (ir_signal) {
case r_less:
analogWrite( red_pin, inc_dec_val( ‘r’, ‘d’ ) );
break;
case r_more:
analogWrite( red_pin, inc_dec_val( ‘r’, ‘i’ ) );
break;
case g_less:
analogWrite( green_pin, inc_dec_val( ‘g’, ‘d’ ) );
break;
case g_more:
analogWrite( green_pin, inc_dec_val( ‘g’, ‘i’ ) );
break;
case b_less:
analogWrite( blue_pin, inc_dec_val( ‘b’, ‘d’ ) );
break;
case b_more:
analogWrite( blue_pin, inc_dec_val( ‘b’, ‘i’ ) );
break;
case randcol:
randcolor_switch = ! randcolor_switch;
break;
case onoff:
onoff_switch = ! onoff_switch;
if (! onoff_switch) { dimm_all(); }
break;
case blinkrgb:
blink_rgb();
break;
}
ir_signal = 0;
irrecv.resume(); // Receive the next value
}
if (randcolor_switch) { random_color(); }
}
Ödevi yapmaya çalışıyorum ama bir türlü bu programı arduino ya yükleyemiyorum IRremote.h kütüphanesini indirdim libary klasörüne attım bu sefer de
Arduino:1.8.2 (Windows 7), Kart:”Arduino/Genuino Uno”
Çalışmanız programın 1340 bayt (4 %) saklama alanını kullandı. Maksimum 32256 bayt.
Global değişkenler belleğin 9 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2039 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x1c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c
Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
hatası alıyorum kafayı yiyecem sizce sorun nedir
Arduino’nuzda dijital 0 veya 1 numaralı pinlere herhangi bir bağlantı yaptınız mı? Yaptıysanız bu bağlantıları çıkartıp yükleme yapmayı deneyin.
Kerem bey arduino kodları ingilizce değilmi renkAyarla nasıl oluyor
Ayrı bir fonksiyon olarak yer alan renkAyarla’yı kullanabiliriz. Fonksiyon oluştururken Türkçe karakter kullanmadığımız sürece problem olmayacaktır.
İyi Günler
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 – kirmizi;
yesil = 255 – yesil;
mavi = 255 – mavi;
analogWrite(kirmiziPin, kirmizi);
analogWrite(yesilPin, yesil);
analogWrite(maviPin, mavi);
}
komutunun buradaki işlevini anlayamadım yardımcı olursanız sevinirim
Yazıda da belirttiğim gibi:
“yazdığımız renkAyarla isimli fonksiyondaki analogWrite komutu, bize her bir PWM çıkış pininden alacağımız voltajın yüksekliğini ayarlamamızı sağlıyor. “
iki bacaklı rgb ledler için ne yapmalıyız
İki bacaklı RGB LED’ler genellikle güç verdiğinizde kendiliğinden farklı renklerde yanar. Renkleri kontrol etmeniz mümkün değildir.
Seri porta kirmizi yazinca rgb ledde nasil kirmizi yakabilirim
Kodlatı direk kopyala yapıştır yapsak çalışırmı
bende renkAyarla diye bir komut olmadığını söylüyor
Kodun tamamını kopyalamamış olabilir misiniz?
Ben devreyi kurdum ama çalışmadı. Belki de bağlantıda temassızlık oldu, sebebini bulamadım. Bağlantılar doğruydu, defalarca kontrol ettim ve bozup yeniden yaptım.Dirençleri çıkardım ve çalıştı. 5V yüksek diye 3.3V’a bağladım. Her iki durumda da aynı sonucu elde ettiğime göre, neden direnç ekliyoruz devreye?
Direncin neden eklendiğini Arduino Dersleri serimizin ilk yazısını okuyarak öğrenebilirsiniz: Arduino Ders 1: LED Yakıp Söndürme (Blink)
{
kirmizi = 255 – kirmizi;
yesil = 255 – yesil;
mavi = 255 – mavi;
}
Bu satırların programdaki işlevini kısaca açıklar mısınız?
Ortak katotlu RGB LED’lerde maksimum parlaklığı ilgili pini GND seviyesine çektiğimizde alacağımız için, parlaklık değerini tersine çevirmek için bu satırları ekliyoruz.
Akımı + 5 v yerine +3.3 v den alsak ve dirençleri kullanmasak sorun olur mu?
Elimde fazla rgb led olmadığı için deneyemiyorum.
Arduino üzerindeki 3.3V çıkışı maksimum 150mA civarında akım sağlayabilir ve yine de LED’lerinizi bozmamak için akım sınırlayıcı direnç kullanmanız gereklidir.
Hocam Valla Yazdık yaa ne gerek var bi daha yazmamıza
exit status 1
stray ‘\342’ in program
bu hatayı alıyorum ne yapmalıyım acil
Kodu kopyalarken hata yapmış olabilirsiniz.
Hocam merhaba ben daha çok yeni ve çok genç birisiyim 😀 (11 yaşındayım)
Mesela diyelim yaptıkda biz bu kodu hangi programdan karta geçireceğiz?
Merhabalar 🙂 Arduino dersleri serimizin ilk dersinde programı yazmak ve yüklemek için kullandığımız Arduino IDE’nin nasıl yükleneceğini ve Arduino kartının sürücülerinin yüklenmesini anlattık, buradan inceleyebilirsiniz: Detaylı Arduino Kurulumu – Ders 0
Ben herşeyi yaptığım halde kodumu yüklediğim halde led yanmıyor?
merhaba ben mega 2560 kullanıyorum şerit led için yapmam gerekn nedir acaba ?
hocam sizin bu makalede linklediğiniz led ortak anotlumu ortak katotlumu
Ürün açıklamasında belirtildiği üzere LED ortak anottur.
merhaba abi ampul bacaklarına taktığın dirençleri kaç watt olması lazm
Bu dersimizdeki LED’in aynısını kullanacaksanız 1/4W değerinde dirençler kullanabilirsiniz.
İyi günler , ‘renkAyarla’ was not declared in this scope.hatasinin anlamı nedir hocam.yardimci olursanız sevinirim.
Merhabalar, kodun tamamını kopyalamamış olabilir misiniz? loop fonksiyonunun alt kısmında bir de void renkAyarla() fonksiyonu bulunmaktadır, bu kısmı da kopyalamanız gerekir.
“PWM, çıkışta aldığımız 5V gerilimi belirli bir zaman aralığında (Arduino’da genellikle saniyenin 1/500’ü) açıp kapatarak 0 ile 5V arasında istediğimiz gerilimi Arduino’nun çıkış pininden almamızı sağlar.” satırları hatalı yazılmıştır. Çünkü PWM ile 0-5v gerilim değil ortalaması 0-5v olan kare dalga elde edilmektedir.
Birden fazla LED ile çalışacağım. O zaman kod nasıl olmalıdır???
birden fazla led kullanıyorum. O zaman nasıl bir kod yazmalıyım?
rgb_led:15:1: error: stray ‘\342’ in program
kirmizi = 255 – kirmizi;
^
rgb_led:15:1: error: stray ‘\200’ in program
rgb_led:15:1: error: stray ‘\223’ in program
rgb_led:16:1: error: stray ‘\342’ in program
yesil = 255 – yesil;
^
rgb_led:16:1: error: stray ‘\200’ in program
rgb_led:16:1: error: stray ‘\223’ in program
rgb_led:17:2: error: stray ‘\342’ in program
mavi = 255 – mavi;
^
rgb_led:17:2: error: stray ‘\200’ in program
rgb_led:17:2: error: stray ‘\223’ in program
C:\Users\ILGAZ\Documents\Arduino\rgb_led\rgb_led.ino: In function ‘void renkAyarla(int, int, int)’:
rgb_led:15:19: error: expected ‘;’ before ‘kirmizi’
kirmizi = 255 – kirmizi;
^
rgb_led:16:17: error: expected ‘;’ before ‘yesil’
yesil = 255 – yesil;
^
rgb_led:17:17: error: expected ‘;’ before ‘mavi’
mavi = 255 – mavi;
^
exit status 1
stray ‘\342’ in program
Diye hata çıkıyor.
Ne yapmalıyım?
merhaba yazdığınız kodu kopyalayıp yapıştırdığımda ”renkAyarla’ was not declared in this scope’ hatasını veriyor. nerede hata yapıyorum
Merhaba, aşağıdaki kodu deneyip çalışıp çalışmadığını yazabilir misiniz?
int kirmiziPin = 9;
int yesilPin = 10;
int maviPin = 11;
void setup()
{
pinMode(kirmiziPin, OUTPUT);
pinMode(yesilPin, OUTPUT);
pinMode(maviPin, OUTPUT);
}
void loop()
{
renkAyarla(255, 0, 0); //kirmizi
delay(1500);
renkAyarla(0, 255, 0); //yesil
delay(1500); renkAyarla(0, 0, 255); //mavi
delay(1500);
renkAyarla(255, 255, 0); //sari
delay(1500);
renkAyarla(80, 0, 80); //mor
delay(1500);
renkAyarla(0, 255, 255); //acik mavi
delay(1500);
renkAyarla(255, 255, 255); //beyaz
delay(1500);
}
void renkAyarla(int kirmizi, int yesil, int mavi)
{
kirmizi = 255 – kirmizi;
yesil = 255 – yesil;
mavi = 255 – mavi;
analogWrite(kirmiziPin, kirmizi);
analogWrite(yesilPin, yesil);
analogWrite(maviPin, mavi);
}
maalesef sizin verdiğiniz kodu kullanmamıza rağmen hala bu hatayı alıyoruz
“exit status 1
stray ‘\342’ in program”
int kirmiziPin = 9;int yesilPin = 10;int maviPin = 11;void setup(){ pinMode(kirmiziPin, OUTPUT); pinMode(yesilPin, OUTPUT); pinMode(maviPin, OUTPUT);}void loop(){ renkAyarla(255, 0, 0); //kirmizi delay(1500); renkAyarla(0, 255, 0); //yesil delay(1500); renkAyarla(0, 0, 255); //mavi delay(1500); renkAyarla(255, 255, 0); //sari delay(1500); renkAyarla(80, 0, 80); //mor delay(1500); renkAyarla(0, 255, 255); //acik mavi delay(1500); renkAyarla(255, 255, 255); //beyaz delay(1500);}void renkAyarla(int kirmizi, int yesil, int mavi){ kirmizi = 255 – kirmizi; yesil = 255 – yesil; mavi = 255 – mavi; analogWrite(kirmiziPin, kirmizi); analogWrite(yesilPin, yesil); analogWrite(maviPin, mavi);}
kodlar böyle görünüyor…
hocam merhaba,
tüm kodları denememize rağmen ardunio versiyonundan mı dır nedir (1.8.10)
kodu ardunioya yükleyemiyorum.
In function ‘void renkAyarla(int, int, int)’:
4:30:19: error: expected ‘;’ before ‘kirmizi’
kirmizi = 255 – kirmizi;
^~~~~~~
4:31:17: error: expected ‘;’ before ‘yesil’
yesil = 255 – yesil;
^~~~~
4:32:16: error: expected ‘;’ before ‘mavi’
mavi = 255 – mavi;
^~~~
exit status 1
stray ‘\342’ in program
tüm satırları tek tek kontrol ettim kapanışlar ; ler vs
Bende kırmızı yanmıyor ne yapmalıyım?
Merhaba.
Ben bir projede 60 adet RGB LED kullanacağım.
Ortak anot.
60 ma x 60 adet= 3.6amper yapıyor.
Forumlarda arduino nun 500 ma maximum çıkış verebildiğini okudum.
Benim sorunum harici beslemeyi nasıl yapacağım?
Merhaba,ben ortak anodlu ledin kodundaki
kirmizi = 255-kirmizi;
yesil = 255-yesil;
mavi = 255-mavi;
kısmını anlamadım.Loop fonksiyonunun içinde renkayarla fonksiyonunu çağırdığımızda ilk satır için(255,0,0)yazmışsınız fakat bu değerleri yerine koyup fonksiyonu hesaplarsak
kirmizi=255-255=0
yesil=255-0=255
mavi=255-0=255
olmasını bekliyorum ben yani bana göre ilk renk kırmızı değil mavi ve yeşilin karışımı olmalı fakat led sizin yaptığınız gibi kırmızı yanıyor.Ben nereyi yanlış anlamışım?
ardoino uno led yakma yazılımı için denedim önce (;) ü problem ediyordu sonra kod yazılımını sisteminizden kopyala yapıştır yaptım bu defada sadece hata oluştu diyor, alt cümlede kullanılabilir 2048 byt var diyor.Ne yapmam lazım, bendeki kit biraz eskidemi kalmış yoksa
merhabalar efendim ben rgb şerit led yaktırmak istiyorum ama arduino çıkışı 5 v ve yetersiz geliyor gerilimi başkakaynaktan alıp kontrölü arduino üzerinden yapsak nasıl olur