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.
TFT LCD zaslon (SPI):
Potenciometri (Sredinska nogica):
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);
}