Guten Spätnachmittag, liebe Community.
Ich habe mir - mithilfe eines 3D-Druckers - die Portal Gun aus dem Videospiel Portal & Portal 2 ausgedruckt.
Was natürlich auch auf keinen Fall fehlen darf, ist die enstprechende Beleuchtung, weshalb ich mir Arduino und Neopixel gekauft habe.
Ich versuche mich nun schon ein Weilchen vertraut zu machen, aber finde leider nichts sonderlich hilfreiches.
Folgendes soll passieren:
Wenn die Portal Gun, bzw. der verbaute Arduino Pro Trinket eingeschaltet wird, sollen die 2 angeschlossenen Ringe und der Streifen Blau aufleuchten. Beim betätigen eines Schalter oder eines Knopfes soll die Farbe dauerhaft auf Orange wechseln, bei erneutem Drücken wieder auf Blau zurück, und so weiter.
Ich bin nicht ganz unerfahren was programmieren angeht, falls jemand also ein Tutorial oder ähnliches für mich hat, wäre das auch schon super.
Ich hab mich testweise mal ein wenig herumgespielt und folgenden Code aus kleinen Stücken zusammengesetzt (großteils in der Hoffnung, dass es dann funktioniert)
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
/*
Button
Turns on and off a light emitting diode(LED) connected to digital pin 13,
when pressing a pushbutton attached to pin 2.
The circuit:
- LED attached from pin 13 to ground
- pushbutton attached to pin 2 from +5V
- 10K resistor attached to pin 2 from ground
- Note: on most Arduinos there is already an LED on the board
attached to pin 13.
created 2005
by DojoDave <http://www.0j0.org>
modified 30 Aug 2011
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Button
*/
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
strip.begin();
strip.show(); // Initialize all pixels to 'off'
strip.setPixelColor(0, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(1, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(2, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(3, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(4, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(5, (255, 127, 0)); //Blue, 60 Pixels
strip.setPixelColor(6, (255, 127, 0)); //Blue, 60 Pixels
strip.show();
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
strip.setPixelColor(1, (255, 127, 0)); //Blue, 60 Pixels
strip.show();
digitalWrite(ledPin, HIGH);
} else {
strip.setPixelColor(0, (255, 127, 0)); //Orange, 60 Pixels
strip.show();
digitalWrite(ledPin, LOW);
}
}
Der Code hat mehr oder weniger auch funktioniert. Zuerst wollte ich das ganze mit colorWipe machen, da kam dann aber immer gleich die Meldung "'colorWipe' not declared in scope" oder irgendwas in die Richtung.
Danach hab ich es mit strip.setPixelColor(...) probiert. Das hat funktioniert. Wenn ich den Code hochgeladen habe, hat der erste Pixel kurz Blau aufgeleuchtet. Beim betätigen des Knopfes hat er, solange der Knopf gedrückt war, Blau geleuchet. Dann hab ich mir den Farbcode für Orange rausgesucht, welcher jetzt überall vertreten ist, allerdings wurden keine Farben angezeigt. Egal auf welche Farbe ich welchen Pixel gesetzt habe, außer Blau wird nichts angezeigt.
Ich bin mit meinem Latein gerade ein wenig am Ende und weiß auch nicht mehr, wo ich nachschauen soll.
Vielen Dank für hilfreiche Antworten und einen schönen Abend euch noch.