25 meter eenvoydige RGB ledstrip.

Toon hier Uw afgeronde projecten aan anderen.
Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 06 Mrt 2015, 23:57

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]

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor nicoverduin » 07 Mrt 2015, 08:32

Wat voor LEDS zitten op die strip eigenlijk?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 07 Mrt 2015, 10:27

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.

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor shooter » 07 Mrt 2015, 21:23

goed bezig, je kunt zelfs PWM sturen en mooie lichtovergangen maken.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 07 Mrt 2015, 21:49

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:
Afbeelding
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.
Afbeelding

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:
Afbeelding

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor shooter » 08 Mrt 2015, 12:15

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.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 08 Mrt 2015, 12:53

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

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor shooter » 08 Mrt 2015, 19:31

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.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 08 Mrt 2015, 19:42

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.
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.

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: 25 meter eenvoydige RGB ledstrip.

Berichtdoor pjh » 08 Mrt 2015, 19:53

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 --

Volgende

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten