25 meter eenvoydige RGB ledstrip.
12 berichten
• Pagina 1 van 2 • 1, 2
25 meter eenvoydige RGB ledstrip.
Ben een grote vlinder ssn het maken voor een praalwagen van de school van mijn drie dochters.
Elke vleugel krijgt 10 meter RGB en het lijf 5 meter.
De controller heb ik gemaskt met een arduino, een TLC5940 LED driver-ic en 15 x een TIP122.
foto's: https://www.dropbox.com/sh/a0uq37t2jlbty09/AAATfn1X7P9QMmpYINt7p-8Ya?dl=0
video: [url]Arduino Mico, TLC5940, 15 x TIP122, 5x5m LED strip: http://youtu.be/-pb7cr6cVPM[/url]
Elke vleugel krijgt 10 meter RGB en het lijf 5 meter.
De controller heb ik gemaskt met een arduino, een TLC5940 LED driver-ic en 15 x een TIP122.
foto's: https://www.dropbox.com/sh/a0uq37t2jlbty09/AAATfn1X7P9QMmpYINt7p-8Ya?dl=0
video: [url]Arduino Mico, TLC5940, 15 x TIP122, 5x5m LED strip: http://youtu.be/-pb7cr6cVPM[/url]
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: 25 meter eenvoydige RGB ledstrip.
Wat voor LEDS zitten op die strip eigenlijk?
Re: 25 meter eenvoydige RGB ledstrip.
goedkoopste ledstrips. hebben geen RGB's, maar individueel gekleurde led's. Daardoor relatief dicht op elkaar.
NB: deze < 10 euro strips zijn volgens mij gerefurbished restjes.
NB: deze < 10 euro strips zijn volgens mij gerefurbished restjes.
Re: 25 meter eenvoydige RGB ledstrip.
goed bezig, je kunt zelfs PWM sturen en mooie lichtovergangen maken.
paul deelen
shooter@home.nl
shooter@home.nl
Re: 25 meter eenvoydige RGB ledstrip.
Ik ben nu bezig met de input voor deze module.
Een electret microfoon (uit een oude telefoon) heb ik met een LM358 OpAmp naar 0-5V gebracht (of beter: 0-4V).
Hiervoor dit schema gebruikt:
De output (V_OUT_UC) gaat naar een Analoge Pin v.d. Arduino. Nummer 2 in mijn geval.
Allemaal mooi en prachtig. Levert getallen op via de seriële poort, die met een [invoegen][lijn][2D lijn] in Excel eenvoudig is te visualiseren.
En zo was ik lekker aan het klungelen in een poging de BEAT uit de info te halen. Daarmee kan ik dan die LEDstrips aansturen.
==> maar toen kwam ik het volgende tegen: Het volgende programma geeft bij mij geen output op de seriele monitor. Iemand een idee waarom? Als je de regelel met links = ... eruit laat, gaat het goed.
▬▬▬▬▬▬▬
De TIP122 'power transistor' heb ik op de TLC5940 aangesloten via deze internet link:
Een electret microfoon (uit een oude telefoon) heb ik met een LM358 OpAmp naar 0-5V gebracht (of beter: 0-4V).
Hiervoor dit schema gebruikt:
De output (V_OUT_UC) gaat naar een Analoge Pin v.d. Arduino. Nummer 2 in mijn geval.
Allemaal mooi en prachtig. Levert getallen op via de seriële poort, die met een [invoegen][lijn][2D lijn] in Excel eenvoudig is te visualiseren.
En zo was ik lekker aan het klungelen in een poging de BEAT uit de info te halen. Daarmee kan ik dan die LEDstrips aansturen.
==> maar toen kwam ik het volgende tegen: Het volgende programma geeft bij mij geen output op de seriele monitor. Iemand een idee waarom? Als je de regelel met links = ... eruit laat, gaat het goed.
- Code: Alles selecteren
int meet_waarde;
const int buffer_grootte =1000;
int buffer[buffer_grootte];
int teller ;
long int links;
long int rechts;
void setup() {
Serial.begin(9600);
}
void loop() {
meet_waarde = abs(analogRead(A2)-512);
buffer[teller] = meet_waarde;
teller++;
if (teller > buffer_grootte) teller=0;
for (int i = 0; i < buffer_grootte/2; i++){
links = links + buffer[i];
rechts = rechts + buffer[buffer_grootte/2 + i];
};
Serial.print(links);
Serial.print(", ");
Serial.println(rechts);
links = 0;
rechts = 0;
delay(10);
};
▬▬▬▬▬▬▬
De TIP122 'power transistor' heb ik op de TLC5940 aangesloten via deze internet link:
Re: 25 meter eenvoydige RGB ledstrip.
ik zie wel een ; te veel net achter de }
je gebruikt een soort laagdoorlaatfilter van 1000 nu.
daar heb ik toch wel een paar opmerkingen bij.
Het is veel handiger om je filter elektronisch te maken, dus in de schakeling van de versterker. (een diode doet wonderen) en dan een condensator erbij voor het filteren, dan kun je met een weerstand het filter aanpassen.
volgende is dat er in de software een nullijn ligt op 512, maar dat hoeft helemaal niet zo te zijn, beter is een gemiddelde pakken en die telkens aftrekken. (als je dat filter gebruikt dan heb je dat allemaal niet meer nodig.
een beat zijn topwaarden die tussen 80 en 150 keer terugkomen.
en zijn lage tonen dus je hebt eigenlijk drie filters nodig. een om de tonen te laten zien, een om de lage tonen <100 Hz te filteren en dan nog een die onder de 5 Hz is voor de lage tonen (de drum)
Deze hele sequence is te langzaam. je zult het realtime moeten gaan doen ofwel niet met een array maar gewoon met simpele filters.
nu wordt er hooguit 100 keer per seconde een waarde genomen dan wordt er elke keer ook nog een for loop gedaan (van 500) dat vreet tijd, en om het nog langer te maken een delay van 10.
dus nodig om anders te denken.
In de loop een sample pakken, is prima, maar dat moet dan wel heel vaak ofwel 20000 /seconde minimum hier is 4000.
je gebruikt een soort laagdoorlaatfilter van 1000 nu.
daar heb ik toch wel een paar opmerkingen bij.
Het is veel handiger om je filter elektronisch te maken, dus in de schakeling van de versterker. (een diode doet wonderen) en dan een condensator erbij voor het filteren, dan kun je met een weerstand het filter aanpassen.
volgende is dat er in de software een nullijn ligt op 512, maar dat hoeft helemaal niet zo te zijn, beter is een gemiddelde pakken en die telkens aftrekken. (als je dat filter gebruikt dan heb je dat allemaal niet meer nodig.
een beat zijn topwaarden die tussen 80 en 150 keer terugkomen.
en zijn lage tonen dus je hebt eigenlijk drie filters nodig. een om de tonen te laten zien, een om de lage tonen <100 Hz te filteren en dan nog een die onder de 5 Hz is voor de lage tonen (de drum)
Deze hele sequence is te langzaam. je zult het realtime moeten gaan doen ofwel niet met een array maar gewoon met simpele filters.
nu wordt er hooguit 100 keer per seconde een waarde genomen dan wordt er elke keer ook nog een for loop gedaan (van 500) dat vreet tijd, en om het nog langer te maken een delay van 10.
dus nodig om anders te denken.
In de loop een sample pakken, is prima, maar dat moet dan wel heel vaak ofwel 20000 /seconde minimum hier is 4000.
paul deelen
shooter@home.nl
shooter@home.nl
Re: 25 meter eenvoydige RGB ledstrip.
Super bedankt voor de respons.
Realiseerde me ook dat ik het hardwarematig moet oplossen.
Te lage sample frequentie.
Daarom gisteravond een MSGEQ7 uit een doos opgediept.
Denk dat ik de output van deze ic gebruik om de kleuren van de LEDstrips te maken.
Wordt vervolgd.
http://youtu.be/lQmtzfqCMro
Realiseerde me ook dat ik het hardwarematig moet oplossen.
Te lage sample frequentie.
Daarom gisteravond een MSGEQ7 uit een doos opgediept.
Denk dat ik de output van deze ic gebruik om de kleuren van de LEDstrips te maken.
Wordt vervolgd.
http://youtu.be/lQmtzfqCMro
Re: 25 meter eenvoydige RGB ledstrip.
je kunt de uitgangen van de msgeq7 heel goed naar de arduino zetten, en dan kun je de 7 banden combineren nou ja 6 want meer heb je nieet op de uno. maar je hebt de hoge tonen toch niet nodig.
kun je combineren en kleuren vrschuiven.
bijv. de onderste voor de helderheid dan krijg je mooie boomlichten.
de kleuren lekker mengen.
als er geen geluid is dan een looplicht.
automatisch niveau regeling is wel nodig.
kun je combineren en kleuren vrschuiven.
bijv. de onderste voor de helderheid dan krijg je mooie boomlichten.
de kleuren lekker mengen.
als er geen geluid is dan een looplicht.
automatisch niveau regeling is wel nodig.
paul deelen
shooter@home.nl
shooter@home.nl
Re: 25 meter eenvoydige RGB ledstrip.
Hey. dat is precies wat ik gedaan heb.
Alleen heb ik wel alle 7 kanalen gebruikt. Heb ze alleen over 5 RGB LEDstrips verdeeld.
Heb vandaag lang nagedacht over schema omzetting 7 naar 5 x 3 (RGB).
Gekozen voor 'behoud van data'.
hier resultaat:
http://youtu.be/9B4-2UI23bY?list=UUU8UR0Dc28uGxKrs9zq4vKA
Sketch is EERSTE VERSIE.
Alleen heb ik wel alle 7 kanalen gebruikt. Heb ze alleen over 5 RGB LEDstrips verdeeld.
Heb vandaag lang nagedacht over schema omzetting 7 naar 5 x 3 (RGB).
Gekozen voor 'behoud van data'.
hier resultaat:
http://youtu.be/9B4-2UI23bY?list=UUU8UR0Dc28uGxKrs9zq4vKA
Sketch is EERSTE VERSIE.
- Code: Alles selecteren
#include "Tlc5940.h"
int analogPin=0;
int strobePin=2;
int resetPin=4;
int spectrumValue[7];
float outputValue[5];
int output[15];
int filter=120;
void setup(){
Tlc.init();
Serial.begin(9600);
pinMode(analogPin, INPUT);
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
}
void loop(){
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW);
for (int i=0;i<7;i++){
digitalWrite(strobePin, LOW);
delay(30);
spectrumValue[i]=analogRead(analogPin);
spectrumValue[i]=constrain(spectrumValue[i], filter, 1023);
spectrumValue[i]=map(spectrumValue[i], filter,1023,0,4095);
digitalWrite(strobePin, HIGH);
}
outputValue[0] = (5 * spectrumValue[0]/7) + ( 2 * spectrumValue[1]/7);
if (outputValue[0] < 0x555){
output[0]= 3*outputValue[0];
output[1]= 0x000;
output[2]= 0x000;
}
else if (outputValue[0] > 0xAAA){
output[0]= 0xFFF;
output[1]= 0xFFF;
output[2]= outputValue[0];
}
else {
output[0]= 0xFFF;
output[1]= 3*outputValue[0]/2;
output[2]= 0x000;
}
outputValue[1] = (3 * spectrumValue[1]/7) + (4 * spectrumValue[2]/7);
if (outputValue[1] < 0x555){
output[3]= 3*outputValue[1];
output[4]= 0x000;
output[5]= 0x000;
}
else if (outputValue[1] > 0xAAA){
output[3]= 0xFFF;
output[4]= 0xFFF;
output[5]= outputValue[1];
}
else {
output[3]= 0xFFF;
output[4]= 3*outputValue[1]/2;
output[5]= 0x000;
}
outputValue[2] = (spectrumValue[2]/7) + (5 * spectrumValue[3]/7) + (spectrumValue[4]/7);
if (outputValue[2] < 0x555){
output[6]= 3*outputValue[1];
output[7]= 0x000;
output[8]= 0x000;
}
else if (outputValue[2] > 0xAAA){
output[6]= 0xFFF;
output[7]= 0xFFF;
output[8]= outputValue[2];
}
else {
output[6]= 0xFFF;
output[7]= 3*outputValue[2]/2;
output[8]= 0x000;
}
outputValue[3] = (4 * spectrumValue[4]/7) + (3 * spectrumValue[5]/7);
if (outputValue[3] < 0x555){
output[9]= 3*outputValue[1];
output[10]= 0x000;
output[11]= 0x000;
}
else if (outputValue[3] > 0xAAA){
output[9]= 0xFFF;
output[10]= 0xFFF;
output[11]= outputValue[3];
}
else {
output[9]= 0xFFF;
output[10]= 3*outputValue[3]/2;
output[11]= 0x000;
}
outputValue[4] = (2 * spectrumValue[5]/7) + (5 * spectrumValue[6]/7);
if (outputValue[4] < 0x555){
output[12]= 3*outputValue[4];
output[13]= 0x000;
output[14]= 0x000;
}
else if (outputValue[4] > 0xAAA){
output[12]= 0xFFF;
output[13]= 0xFFF;
output[14]= outputValue[4];
}
else {
output[12]= 0xFFF;
output[13]= 3*outputValue[4]/2;
output[14]= 0x000;
}
Tlc.clear();
for(int i =0; i<15; i++){
Tlc.set(i+1, output[i]);
}
Tlc.update();
}
Laatst gewijzigd door pjh op 08 Mrt 2015, 20:28, in totaal 1 keer gewijzigd.
Re: 25 meter eenvoydige RGB ledstrip.
En wat het regelen betreft: ik heb de electret op een LM358 gezet. Als ik nu een pot over pin 1 en 2 zet, ipv de 100K weerstand nu, kan ik de gain zelf regelen.
Wat jij zegt is ook waar: indien output van MSGEQ7 laag blijft voor - zeg - 10 seconden, dan automatische "lichtshow".
-- ben weer even bezig met arduino en ik vind het LEUK --
Wat jij zegt is ook waar: indien output van MSGEQ7 laag blijft voor - zeg - 10 seconden, dan automatische "lichtshow".
-- ben weer even bezig met arduino en ik vind het LEUK --
12 berichten
• Pagina 1 van 2 • 1, 2
Terug naar Afgeronde projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten