back to top

PicoBricks ile RGB LED Projesi

RGB nedir? “Red” (Kırmızı), “Green” (Yeşil) ve “Blue” (Mavi) renklerinin birleşimini temsil eden büyülü bir dünyadır! Bu üç temel renk, farklı yoğunluklarda birleşerek milyonlarca renk tonu oluşturabilir. Bir pikselin rengini tanımlamak için kullanılan RGB modeli, her bir rengin 0 ile 255 arasında bir değeri temsil ettiği bir sistemdir ve dijital görüntülerin oluşturulmasında kilit rol oynar.

RGB LED’ler ve potansiyometrelerin kullanımı, analog ve dijital giriş/çıkışları kontrol etmeyi öğretir. Aynı zamanda, kodlama becerilerini geliştirmek için harika bir fırsat sunar. Projenin anlaşılması ve özelleştirilmesi, elektronik devrelerin işleyişini ve bileşenlerin nasıl kullanılacağını öğrenmeye yardımcı olur. Bu tür projeler, STEM (Bilim, Teknoloji, Mühendislik ve Matematik) eğitimi için mükemmel bir başlangıç noktasıdır ve elektronik ve programlama becerilerini geliştirmek isteyenler için ilginç bir deneyim sağlar.

LED teknolojisi, yaratıcı ve dinamik aydınlatma seçenekleri sunarak aydınlatmayı dönüştürür. İç tasarım, eğlence ve günlük kullanım gibi alanlarda, RGB LED’ler ambiyans yaratma, çarpıcı görseller oluşturma ve çevremizi kişiselleştirme imkanı sunar. Bu teknolojinin potansiyelini daha fazla keşfettikçe, RGB LED’lerin modern aydınlatmada temel bir rol oynadığı ve yaşamımıza renk, canlılık ve uyarlanabilirlik kattığı açıktır. Sürekli ilerlemelerle, gelecekte RGB LED’lerin daha heyecan verici fırsatlarla öne çıkması bekleniyor.

Bu projede, bir RGB LED kullanarak potansiyometrelerle renk kontrolü yapacağız. PicoBricks ile gerçekleştirdiğimiz bu eğlenceli projede, üç potansiyometre RGB bileşenlerini (kırmızı, yeşil, mavi) bağımsız olarak kontrol eder. Her potansiyometre, ilgili renk bileşeninin parlaklığını ayarlar. Bu sayede, farklı renkler ve tonlar oluşturmayı kolaylaştırır. RGB LED’in bağlantıları ve kodu basittir, bu da projeyi özelleştirmek veya daha karmaşık uygulamalar için temel oluşturmak için idealdir. Potansiyometreleri çevirerek LED’in rengini gerçek zamanlı olarak değiştirebilirsiniz.

Gelin başlayalım!

Detaylar ve Algoritma 

RGB LED kontrol projesi, potansiyometreler aracılığıyla RGB LED’lerin (kırmızı, yeşil, mavi) renk kombinasyonlarını özelleştirmenizi sağlar. İlk adım, potansiyometrenin değerini 0 ile 1023 arasından 0 ile 255 arasına dönüştürmektir. Bu dönüşüm, renk bileşenlerinin parlaklığını kontrol etmek için gereklidir. Her potansiyometre, kırmızı, yeşil ve mavi bileşenlere bir değer atar. Son adımda, bu değerler RGB LED’in ilgili bileşenlerine atanarak istenen renk ve parlaklık kombinasyonu oluşturulur. Potansiyometreyi çevirerek LED’in renk ve parlaklığını gerçek zamanlı olarak ayarlayabilirsiniz.

Gerekli Bileşenler: 

PicoBricks

Bağlantı Şeması

RGB Kodları

PicoBricks’in MicroBlocks Kodları

PicoBricks’in MicroPython Kodları

from time import sleep
from machine import Pin
from picobricks import WS2812
import time
from machine import I2C
from picobricks import SSD1306_I2C
import machine
import math

ws2812 = WS2812(6, brightness = 1)
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000)
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
pin_button = machine.Pin(10, machine.Pin.IN)
import math
pot = machine.ADC(26)

def color_code():
    global pot_val, red, green, blue, color_list, i
    while (pin_button.value()) == (0):
        oled.fill(0)
        pot_val = round(round( pot.read_u16() – 0 ) * ( 255 – 0 ) / ( 65535 – 0 ) + 0)
        oled.text(“{}”.format(str(str(color_list[i])+str(”  “))+str(pot_val)), 0, 0)
        oled.show()

    return pot_val

def chosing_red():
    global pot_val, red, green, blue, color_list, i
    red = color_code()
    i += 1

def chosing_green():
    global pot_val, red, green, blue, color_list, i
    green = color_code()
    i += 1

def chosing_blue():
    global pot_val, red, green, blue, color_list, i
    blue = color_code()
    i += 1

while True:
    color_list = [“RED”, “GREEN”, “BLUE”]
    red = 0
    green = 0
    blue = 0
    i = 0
    ws2812.pixels_fill((0 ,0 ,0 ))
    ws2812.pixels_show()
    oled.text(“{}”.format(“Color Code”), 0, 0)
    oled.text(“{}”.format(str(“RED = “)+str(red)), 20, 25)
    oled.text(“{}”.format(str(“BLUE = “)+str(blue)), 20, 35)
    oled.text(“{}”.format(str(“GREEN = “)+str(green)), 20, 45)
    chosing_red()
    time.sleep((1))
    chosing_green()
    time.sleep((1))
    chosing_blue()
    oled.fill(0)
    oled.show()
    ws2812.pixels_fill((red, green, blue))
    ws2812.pixels_show()
    time.sleep((2))

PicoBricks’in IDE Kodları

Görselin büyük halini görmek için görselin üzerine tıklayınız.

PicoBricks’in Arduino C Kodları


#include <Wire.h>
#include "ACROBOTIC_SSD1306.h"
#include <Adafruit_NeoPixel.h>
#define BUTTON_PIN 10
#define LED_PIN 7
#define PIN            6
#define NUMLEDS        1

Adafruit_NeoPixel leds = Adafruit_NeoPixel(NUMLEDS, PIN, NEO_GRB + NEO_KHZ800);
int color_list[0];
int pot_val = 0;
String pot_val_str = " ";
int red = 0;
int green = 0;
int blue = 0;

void color_code(){
  while(digitalRead(BUTTON_PIN) == 0){
    pot_val = analogRead(A0);
    pot_val = map(pot_val,0,1023,0,255);
    oled.setTextXY(0,11);  
    oled.putString(String(pot_val));
    Serial.println(pot_val);
  }
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
  oled.init();
  oled.clearDisplay();
  pinMode(BUTTON_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  randomSeed(analogRead(A0));
  leds.begin();
}

void loop() {
  oled.setTextXY(0,0);  
  oled.putString("Color Code:");
  oled.setTextXY(1,0);  
  oled.putString("----------------");
  oled.setTextXY(2,1);
  oled.putString("RED"); 
  oled.setTextXY(4,1);  
  oled.putString("GREEN");
  oled.setTextXY(6,1);  
  oled.putString("BLUE");

  while (digitalRead(BUTTON_PIN) == LOW) {
    color_code();
    digitalWrite(LED_PIN,HIGH);
    delay(1000);
    digitalWrite(LED_PIN,LOW);
    red = pot_val;
    oled.setTextXY(2,7);
    oled.putString(String(red));
    delay(1000);
    color_code();
    digitalWrite(LED_PIN,HIGH);
    delay(1000);
    digitalWrite(LED_PIN,LOW);
    green = pot_val;
    oled.setTextXY(4,7);
    oled.putString(String(green));
    color_code();
    digitalWrite(LED_PIN,HIGH);
    delay(1000);
    digitalWrite(LED_PIN,LOW);
    blue = pot_val;
    oled.setTextXY(6,7);
    oled.putString(String(green));
    digitalWrite(LED_PIN,LOW);
    delay(1000);

    for(int i=0;i < NUMLEDS;i++) {
      leds.setPixelColor(i, leds.Color(red,green,blue));
      leds.show();
      delay(2000);
      leds.setPixelColor(i, leds.Color(0, 0, 0)); //turn all pixels black 'off'
      leds.show();
    }
  }

  oled.clearDisplay();
}

RGB LED‘ler hakkında daha detaylı bilgi almak için tıklayabilirsiniz!

Son Çıkan Yazılar

CEVAP VER

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