Problem: "Arduino" Trinket + APA 106 "Neopixel" LED
Postat: 14 januari 2016, 08:06:53
Jag har en Adafruit Trinket 3,3v modell http://www.electrokit.com/adafruit-trin ... 3-3v.52802 och 4st APA-106-F8 LEDs som fungerar som Neopixel WS2812 kontrollerbara leds.
Men det fungerar inte.. Jag har extern matning Micro USB (telefon laddare 2A) som går in på +BAT & GND på trinket och direkt matar LEDs sedan har jag en styrtråd från #2 på trinket till DIN på första LED och självklart DOUT -> DIN på resterande leds.
Men det händer ingenting, lysdioderna bara lyser jag får ingen respons alls från min kod. Ända tills igår när jag tog fram min multimeter (minns ej märke, ej hemma nu) jag skulle använda den för att mäta hur mycket spänning jag fick in. För att säkerställa att det inte var för lite, men eftersom dom lyser borde det inte varit det. Som jag trodde så hade jag aningens mer än +5V vilket ska räcka då det står min +4,5V för matning till dioderna.
Av någon anledning fick jag för mig att mäta spänning på styrpinnen #2 från trinketen, eftersom den skickar snabba pulser borde jag inte få något vettigt värde. Men jag tänkte kontrollera så den inte låg konstant på 0V eller konstant +3,3v. Så fort jag stoppade dit mina mätpinnar från multimetern på GND och pinne #2 på trinketen började dioderna fungera precis som dom ska. VARFÖR?
Dioderna fungerar oavsett om jag mäter mellan +3,3v & pinne #2 eller GND & pinne #2. Det måste betyda att utgången kräver pullup/pulldown för att kunna skicka 0 och 1 med korrekta tider, pga. störningar eller något? Det fungerar inte med 10k ohm pullup/pulldown, som brukar användas på input.
Varför fungerar dioderna när jag har min multimeter ansluten? men inte annars?
Men det fungerar inte.. Jag har extern matning Micro USB (telefon laddare 2A) som går in på +BAT & GND på trinket och direkt matar LEDs sedan har jag en styrtråd från #2 på trinket till DIN på första LED och självklart DOUT -> DIN på resterande leds.
Men det händer ingenting, lysdioderna bara lyser jag får ingen respons alls från min kod. Ända tills igår när jag tog fram min multimeter (minns ej märke, ej hemma nu) jag skulle använda den för att mäta hur mycket spänning jag fick in. För att säkerställa att det inte var för lite, men eftersom dom lyser borde det inte varit det. Som jag trodde så hade jag aningens mer än +5V vilket ska räcka då det står min +4,5V för matning till dioderna.
Av någon anledning fick jag för mig att mäta spänning på styrpinnen #2 från trinketen, eftersom den skickar snabba pulser borde jag inte få något vettigt värde. Men jag tänkte kontrollera så den inte låg konstant på 0V eller konstant +3,3v. Så fort jag stoppade dit mina mätpinnar från multimetern på GND och pinne #2 på trinketen började dioderna fungera precis som dom ska. VARFÖR?
Dioderna fungerar oavsett om jag mäter mellan +3,3v & pinne #2 eller GND & pinne #2. Det måste betyda att utgången kräver pullup/pulldown för att kunna skicka 0 och 1 med korrekta tider, pga. störningar eller något? Det fungerar inte med 10k ohm pullup/pulldown, som brukar användas på input.
Varför fungerar dioderna när jag har min multimeter ansluten? men inte annars?
Kod: Markera allt
#include <Adafruit_NeoPixel.h>
#incldue <avr/power.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(4, 2, NEO_RGB + NEO_KHZ800);
void setup() {
strip.begin();
}
void loop() {
strip.setPixelColor(0, strip.Color(255,0,0)); // Set color
strip.setPixelColor(1, strip.Color(0,0,0)); // Set color to black => turn off
strip.setPixelColor(2, strip.Color(0,0,0));
strip.setPixelColor(3, strip.Color(0,0,0));
strip.show(); // this sends the timing codes to the leds
delay(50);
strip.setPixelColor(0, strip.Color(0,0,0));
strip.setPixelColor(1, strip.Color(255,0,0));
strip.setPixelColor(2, strip.Color(0,0,0));
strip.setPixelColor(3, strip.Color(0,0,0));
strip.show();
delay(50);
strip.setPixelColor(0, strip.Color(0,0,0));
strip.setPixelColor(1, strip.Color(0,0,0));
strip.setPixelColor(2, strip.Color(255,0,0));
strip.setPixelColor(3, strip.Color(0,0,0));
strip.show();
delay(50);
strip.setPixelColor(0, strip.Color(0,0,0));
strip.setPixelColor(1, strip.Color(0,0,0));
strip.setPixelColor(2, strip.Color(0,0,0));
strip.setPixelColor(3, strip.Color(255,0,0));
strip.show();
delay(50);
}