Neopixel - 3 Poti & OLED-Display
Neopixel
... und hier der Sketch mit drei Potis und dem OLED-Display!
OLED-Display anschließen
Die Schaltung mit den drei Potis und den Neopixeln wollte ich um ein Display erweitern, damit nicht immer der Laptop oder PC eingeschaltet werden muss.
Da ich bereits mit dem 0,96 Zoll OLED-Display monochrom sehr gute Erfahrungen gemacht hatte, habe ich dieses Display noch integriert:
VCC an Plus und GND an Ground/GND/Masse
SDA an A4 und SCL an A5 angeschlossen.
Dank I2C ist dieser Anschluß recht unkompliziert und einfach zu ergänzen.
![Ein Band aus Neopixel](neopixel-3.png)
Sketch vom Strandtest3
Hier der Sketch mit 3 Potis und dem OLED-Display:
// Neopixel - Farben mit 3 Potis steuern über Display anzeigen
// OLED an UNO:
// SCL an SCL = A5
// SDA an SDA = A4
// VCC an +5V
// GND an GND
#include Adafruit_NeoPixel.h>
#ifdef __AVR__
#include
#endif
// OLED
#include SPI.h>
#include
#include
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
//
#define PIN 8
#define NUMPIXELS 16
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int i, z;
int PinR = 0;
int PinG = 1;
int PinB = 2;
int WertR, WertG, WertB = 0;
void setup() {
pixels.begin(); // Initialisierung der NeoPixel Bibliothek
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
WertR = map(analogRead(PinR), 0, 1023, 0, 255);
WertG = map(analogRead(PinG), 0, 1023, 0, 255);
WertB = map(analogRead(PinB), 0, 1023, 0, 255);
// OLED
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 5);
display.print("R: ");
display.println(WertR);
display.setCursor(0, 25);
display.print("G: ");
display.println(WertG);
display.setCursor(0, 45);
display.print("B: ");
display.println(WertB);
display.display();
for (int i = 0; i < NUMPIXELS; i++) {
// pixels.Color übernimmt die RGB-Werte, von 0,0,0 bis zu 255,255,255
pixels.setPixelColor(i, pixels.Color(WertR, WertG, WertB, 50)); // Helligkeit: 50 von 255
pixels.show(); // Dies sendet den Werteschlüssel an die Neopixel
delay(10); // Wartezeit (in milliseconds).
}
}