⇧
vadnica-logo
Editor Moj Blog Geselnik Finance Moje storitve O projektu Telegram O meni O meni

RGB Color Picker z Arduino-m Nano in tremi potenciometri

Vezava komponent

V tem projektu uporabljamo klasičen Arduino Nano za branje analognih vrednosti iz treh potenciometrov. Vsak potenciometer predstavlja eno barvno komponento: Rdečo (R), Zeleno (G) in Modro (B). Rezultat mešanja se v realnem času prikaže na 2.0" TFT LCD zaslonu.

Povezave (Nano → TFT & Potenciometri):

TFT LCD zaslon (SPI):

Potenciometri (Sredinska nogica):

Arduino koda

Za delovanje potrebujete knjižnici Adafruit GFX in Adafruit ILI9341. Koda bere analogne vhode in jih pretvori v barvni format za zaslon.

// Projekt: Arduino Nano RGB Color Picker s TFT zaslonom (ST7789)
// Avtor: Borut Bukovnik - vadnica.org

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

#define TFT_CS 10
#define TFT_DC 8
#define TFT_RST 9

// Inicializacija za ST7789 gonilnik
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

const int pinR = A0;
const int pinG = A1; 
const int pinB = A2;

void setup() {
    // Inicializacija zaslona ST7789 (širina: 240, višina: 320)
    tft.init(240, 320);
    tft.setRotation(2); 
    tft.fillScreen(ST77XX_BLACK);
    tft.invertDisplay(true);
    
    tft.setCursor(50, 10);
    tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
    tft.setTextSize(2);
    tft.print("COLOR PICKER");
}

void loop() {
    int vR = analogRead(pinR);
    int vG = analogRead(pinG);
    int vB = analogRead(pinB);
    
    uint8_t r = map(vR, 0, 1023, 0, 255);
    uint8_t g = map(vG, 0, 1023, 0, 255);
    uint8_t b = map(vB, 0, 1023, 0, 255);
    
    uint16_t barva = tft.color565(r, g, b);
    
    // Kvadrat z barvnim predogledom
    tft.fillRect(60, 40, 120, 120, barva);
    
    char buffer[40];
    sprintf(buffer, "R:%3d G:%3d B:%3d", r, g, b);
    
    tft.setCursor(20, 180);
    tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK); 
    tft.setTextSize(2);
    tft.print(buffer);
    
    sprintf(buffer, "HEX: 0x%04X ", barva);
    tft.setCursor(65, 210);
    tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
    tft.print(buffer);
    
    delay(50);
}

Potreben material

  1. Arduino Nano R3: Kompakten mikrokrmilnik.
  2. TFT LCD SPI 2.0": Barvni zaslon z ločljivostjo 240x320.
  3. 3x Potenciometer 10k: Za krmiljenje barvnih kanalov.
  4. Protoboard: Za hitro vezavo brez spajkanja.