Salü Zusammen
Gerne wollte ich mein erstes "brauchbares" Projekt in Angriff nehmen.
Die Idee stammt von hier:
https://www.instructables.com/id/Rainbow-LED-Headband-WS2812-ATTiny85/Ich würde das ganze gerne für mein Götti-Meitli zum Geburtstag basteln.
Den vorgeschlagenen Sketch "strandtest" habe ich durch einen anderen ausgetauscht.
Ein laufender Regenbogen sollte für den Anfang reichen.
Auf dem Breadboard hat alles auch prima geklappt.
Nun steh ich aber definitiv an. Mir erscheint die "Rotphase" des Regenbogens
in "meinem" Sketch doch recht, wenn nicht sogar verschwindend kurz.
Wie kann ich die verlängern damit auch rot besser zur Geltung kommt
und nicht nur Blau/Grün. Geht das mit diesem Sketch überhaupt?
Ich probier seit bald 4 Tagen erfolglos herum und komme nicht weiter.
Der Code sieht somit auch entsprechend verbastelt aus.
Zugegeben, ich versteh noch recht wenig vom programmieren.
Bisher reichte es für meine Breadboardexperiment immer eines meiner
sieben Bücher zum Thema Arduino zur Hand zu nehmen oder aber die
Suchmaschine anzuwerfen. Diesmal haben mich beide im Stich gelassen.
Es würde mir vorerst auch schon reichen, wenn mir Jemand einen
Wink mit dem Zaunpfahl gibt, wo ich ansetzen muss. Wenn ich's selbst
herausfinde habe ich mehr gelernt, als wenn mir Jemand die Lösung
meines Problems vorkaut. Dankbar wäre ich für beide Arten von Hilfe..
Zum Technischen:
Die Neopixel sind probeweise mit 0.05 mm² Litzen zusammengelötet.
Zwischen ATtiny85 und dem ersten Pixel habe ich einen 470 Ohm-Widerstand gesetzt,
und an +5V und Gnd einen 1000µF-Kondensator.
Der ganze Code:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__ //Wird benötigt für ATtiny85, weglassen für normalen Arduino
#include <avr/power.h> //Wird benötigt für ATtiny85, weglassen für normalen Arduino
#endif //Wird benötigt für ATtiny85, weglassen für normalen Arduino
const int steuerpin = 1; // physischer Pin5
const int anzahlNeopixel = 11; // z.Z. nur 11 verfügbar
const int helligkeit = 100;
const int Pause1 = 1;
const int Pause2 = 11;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(anzahlNeopixel, steuerpin, NEO_GRB + NEO_KHZ800);
void setup() {
#if defined (__AVR_ATtiny85__) //Wird benötigt für ATtiny85, weglassen für normalen Arduino
if (F_CPU == 8000000) clock_prescale_set(clock_div_1); //Wird benötigt für ATtiny85, weglassen für normalen Arduino
#endif //Wird benötigt für ATtiny85, weglassen für normalen Arduino
strip.begin();
strip.setBrightness(helligkeit);
}
void loop() {
rainbow(50);
delay(Pause1);
}
void rainbow(uint8_t wait) {
uint8_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i*25+j) & 255));
}
strip.show();
delay(Pause2);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
Zum Schluss noch dies:
Ich hab nirgends gesehen, das sich Forenmitglieder vorgestellt haben, falls gewünscht stell ich mich kurz vor, wenn mir gesagt wird, wo ich das tun soll und darf.
Liebe Gruess Daniel