Hallo,
ich bin Gitarrenbauer und habe ein Gemma M0 Board (weil es so schön klein ist) die in einer Gitarre eingebaut werden muss (wird mit LiPo betrieben) und damit wird eine LED Streifen mit insgesamt 30 LEDs betrieben. Es gibt 3 LED Programmen die mittels eines Drehschalters aufgerufen werden (1 polig, 3 Positionen, analog). Eins davon ist sound reactive und wird mit einem Mikro angesteuert.
Weil Gemma nicht viele Eingänge hat, bin ich den Reistance Ladder-Weg gegangen. Es gibt Widerstände zwischen den Positionen und diese werden gemessen und darauf basierend wird ein LED Program aufgerufen.
Als blutiger Anfänger, habe ich folgendes schreiben und auf Gemma M0 hochladen können (Arduino IDE 2.1.1):
#include <FastLED.h>
const int switchPin = A0; // Analog input pin for the 3-position switch
const int microphonePin = A1; // Analog input pin for the microphone
const int ledPin = A2; // Digital output pin for the LED strip
#define NUM_LEDS 30 // Number of LEDs in strip
#define LED_DATA_PIN 2 // Pin where LED data line is connected
CRGB leds[NUM_LEDS];
void setup() {
//Serial.begin(9600);
pinMode(ledPin, OUTPUT);
FastLED.addLeds<WS2812, LED_DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.show(); // Initialize LED strip
}
void loop() {
int switchValue = analogRead(switchPin); // Read switch value
int microphoneValue = analogRead(microphonePin); // Read microphone value
int switchPosition = map(switchValue, 0, 1023, 0, 2); // Map switch value to 3 positions
int brightness = map(microphoneValue, 0, 1023, 0, 255); // Map microphone value to LED brightness
switch (switchPosition) {
case 0:
soundReactiveRainbow(brightness);
break;
case 1:
rollercoasterEffect(brightness); // Execute the rollercoaster effect for position 1
break;
case 2:
pulsedFadeEffect(brightness);
break;
default:
// Handle unknown position
break;
}
}
void soundReactiveRainbow(int brightness) {
uint8_t beat = beatsin8(50, 0, 255);
fill_rainbow(leds, NUM_LEDS, beat, 8);
FastLED.show();
}
void rollercoasterEffect(int brightness) {
int hue = beatsin8(20); // Vary the speed of color change
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV(hue + i * 10, 255, brightness);
}
FastLED.show();
}
void pulsedFadeEffect(int brightness) {
uint8_t beat = beat8(90); // 90 bpm beat
int fadeValue = map(beat, 0, 255, 0, brightness);
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB(fadeValue, 0, 0); // Red color
}
FastLED.show();
delay(10); // Adjust delay for desired fade in/out effect
}
Ich habe keine Probleme oder Fehlermeldungen. Es kompiliert und lädt hoch. Allerdings läuft es nicht oder es läuft, irgendwas fehlt oder stimmt nicht und ich merke es nicht. Jedenfalls keins von den LED Programmen können aufgerufen werden.
Ich füge auch mal Bilder dazu um die Verbindungen zu zeigen, vielleicht mache ich hier einen Fehler.
Habt ihr vielleicht einen Hinweis für mich? Ich wäre euch sehr dankbar wenn ihr helfen könntet!
Vielen Dank im Voraus!