İçindekiler:

Arduino RGB LED Şerit Kontrol Cihazı: 4 Adım
Arduino RGB LED Şerit Kontrol Cihazı: 4 Adım

Video: Arduino RGB LED Şerit Kontrol Cihazı: 4 Adım

Video: Arduino RGB LED Şerit Kontrol Cihazı: 4 Adım
Video: Akıllı RGB Şerit Led Yapımı (Ucuz Şerit Ledlerinizi bile Bu Ürünle Akıllı Yapabilirsiniz) 2024, Kasım
Anonim
Arduino RGB LED Şerit Kontrol Cihazı
Arduino RGB LED Şerit Kontrol Cihazı

Genellikle insanlar bir Arduino ile RGB LED şeritlerini kontrol etmek istediklerinde, kırmızı, yeşil ve mavi renkleri karıştırmak için üç potansiyometre kullanılır. Bu işe yarar ve ihtiyaçlarınız için gayet iyi olabilir, ancak ben daha sezgisel bir şey yapmak istedim, renk tekerleği gibi bir şey.

Bu proje, bir döner kodlayıcı için mükemmel bir uygulama gibi görünüyor. Bu, milinin hareketini dijital çıkışa çeviren bir cihazdır. Mil döndürüldüğünde, kodlayıcı bir Arduino tarafından ölçülebilen bir sinyal (darbe) gönderir. Döner kodlayıcılar hakkında daha fazla bilgi için, onu daha derinlemesine açıklayan bu videoyu izleyebilirsiniz.

Bu Eğitilebilir Kitapta size bir döner kodlayıcı kullanarak bir Arduino RGB LED şerit denetleyicisinin nasıl yapıldığını göstereceğim. Bu Eğitilebilir Tablo, devrenin bir devre tahtası üzerindeki yapısını kapsar. Ancak bir Arduino kalkanı oluşturmak için kendi PCB'nizi üretebilirsiniz!

Adım 1: Parçalar

Parçalar
Parçalar
Parçalar
Parçalar

RGB LED şerit denetleyicisi için aşağıdaki malzemelere ihtiyacınız olacak:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, herhangi bir N-kanal mantık seviyesi MOSFET, minimum 12V olarak derecelendirildiği ve LED şeridinizin tükettiği akım olduğu sürece yapacaktır.
  • 1x Döner kodlayıcı
  • 1x 12V 2A güç kaynağı, güç kaynağının vermesi gereken akım, kullanılan LED şeridin uzunluğuna bağlı olabilir.
  • 16x Erkekten erkeğe atlama telleri
  • 1x Lehimsiz devre tahtası, yeterince büyük olduğu sürece herhangi bir devre tahtası yapacaktır.

2. Adım: Devre

Devre
Devre
Devre
Devre

Arduino'yu breadboard'un 12V ve GND rayına bağlayın. Ardından diğer parçaları aşağıdaki gibi bağlayın:

Döner kodlayıcı

Pim A - D4

Pim B - D3

GND - GND

MOSFET Kırmızı

Kapı - GND

Drenaj - LED şerit kırmızı tel

Kaynak - D11

MOSFET GreenGate - GND

Drenaj - LED şerit yeşil tel

Kaynak - D9

MOSFET BlueGate - GND

Dren - LED şerit mavi tel

Kaynak - D6

3. Adım: Kodlayın

// Arduino PWM pinleri

int redPin = 11; int yeşilPin = 6; int bluePin = 9; // Arduino kodlayıcı pinleri int kodlayıcıPinA = 3; int kodlayıcıPinB = 4; // Renk değişkenleri int colorVal; int redVal; int greenVal; int blueVal; // Kodlayıcı değişkenleri int kodlayıcıPos; int kodlayıcıPinACurrent; int kodlayıcıPinALast = YÜKSEK; // Diğer int sayacı; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode(encoderPinB, INPUT_PULLUP); } geçersiz döngü(){ readEncoder(); encoder2rgb(sayaç); analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal); } int readEncoder(){ encoderPinACurrent = digitalRead(encoderPinA); if ((encoderPinALast == DÜŞÜK) && (encoderPinACurrent == YÜKSEK)){ if (digitalRead(encoderPinB) == DÜŞÜK){ encoderPos = encoderPos - 1; } else { encoderPos = encoderPos + 1; } } kodlayıcıPinALast = kodlayıcıPinACurrent; sayaç = kodlayıcıPos*8; if (sayaç 1535){ sayaç = 0; } dönüş sayacı; } int encoder2rgb(int counterVal){ // Kırmızıdan sarıya if (counterVal <= 255){ colorVal = counterVal; kırmızıVal = 255; greenVal = colorVal; maviVal = 0; } // Sarıdan yeşile başka if (counterVal <= 511){ colorVal = counterVal - 256; redVal = 255 - colorVal; yeşilVal = 255; maviVal = 0; } // Yeşilden camgöbeğine else if (counterVal <= 767){ colorVal = counterVal - 512; kırmızıVal = 0; yeşilVal = 255; blueVal = colorVal; } // Cyan to blue else if (counterVal <= 1023){ colorVal = counterVal - 768; kırmızıVal = 0; greenVal = 255 - colorVal; maviVal = 255; } // Maviden macenta'ya başka if (counterVal <= 1279){ colorVal = counterVal - 1024; redVal = colorVal; yeşilVal = 0; maviVal = 255; } // Macenta'dan kırmızıya başka{ colorVal = counterVal - 1280; kırmızıVal = 255; yeşilVal = 0; blueVal = 255 - colorVal; } redVal, greenVal, blueVal döndür; }

Önerilen: