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, ki ju namestite preko Library Manager. Koda bere analogne vhode in jih pretvori v barvni format za zaslon.
// Projekt: Arduino Nano RGB Color Picker s TFT zaslonom
// Avtor: Borut Bukovnik - vadnica.org
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_CS 10
#define TFT_DC 8
#define TFT_RST 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
const int pinR = A0;
const int pinG = A1;
const int pinB = A2;
void setup() {
tft.begin();
tft.setRotation(2);
tft.fillScreen(ILI9341_BLACK);
tft.invertDisplay(true);
tft.setCursor(50, 10);
tft.setTextColor(ILI9341_WHITE, ILI9341_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);
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(ILI9341_WHITE, ILI9341_BLACK);
tft.setTextSize(2);
tft.print(buffer);
sprintf(buffer, "HEX: 0x%04X ", barva);
tft.setCursor(65, 210);
tft.setTextColor(ILI9341_YELLOW, ILI9341_BLACK);
tft.print(buffer);
delay(50);
}
Hvala za obisk! Dodajam politiko zasebnosti.
© 2024 Vse pravice pridržane.
Vam je koda pomagala? Če želite podpreti moj trud pri pripravi vodičev in vzdrževanju strani, mi lahko namenite donacijo za kavo.