Vraag


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Als hobby project heb ik samen met een huisgenoot bij de Ikea een Dioder led strip gekocht om deze vervolgens aan een arduino aan te sluiten. Op de laptop een stukje software geschreven die wat RGB waardes uitspuugt en dan naar de arduino te zenden. Dit werkt allemaal, echter krijgen we de led strips niet helemaal goed werkend.

Hoe zit het zooitje in elkaar:
Afbeeldingslocatie: http://ikennd.ac/pictures/for_posts/2011/09/ArduinoDioderWiring.png

Zoals te zien gebruiken we de originele controller niet omdat we een soort van Ambilight willen creëren, zodoende willen we de 4 led strips individueel aan kunnen sturen. Om het op het begin simpel te houden hebben we bovenstaand schema aangehouden, alleen maar een led strip aangesloten.

Het probleem is het volgende: Rood, Groen en Blauw laten zien is geen probleem, dit werkt. Ook kunnen we de kleuren die precies tussen deze kleuren inzitten laten zien. Het probleem zit er echter in dat Rood(127) en Groen(128) exact hetzelfde uitziet als Rood(200) en Groen(55). Hij fade dus niet/mengt niet.

Code voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
 
#define FADESPEED 5     // make this higher to slow down
 
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
}
 
 
void loop() {
  int r, g, b;
 
  // fade from blue to violet
  for (r = 0; r < 256; r++) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from violet to red
  for (b = 255; b > 0; b--) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from red to yellow
  for (g = 0; g < 256; g++) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
  // fade from yellow to green
  for (r = 255; r > 0; r--) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from green to teal
  for (b = 0; b < 256; b++) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from teal to blue
  for (g = 255; g > 0; g--) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
}

Ook een simpel (copy pasta) stuk code als dit, zet geen zode aan de dijk. We zetten ook 12V op de lijnen, al veel geprobeerd en we zien beide door de bomen het bos niet meer, volgens ons zou dit moeten werken. Iemand een idee?

Beste antwoord (via Marco1994 op 28-05-2016 22:42)


  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Per arduino zijn er andere pinnen die PWM via analogwrite ondersteunen. Kloppen de pinnummers bij jou?
https://www.arduino.cc/en/Reference/AnalogWrite

Alle reacties


Acties:
  • +1 Henk 'm!

  • Kaalus
  • Registratie: Januari 2010
  • Niet online
Wat je getekend hebt komt niet overeen met de code die je post.
De code die je post kun je gebruiken met een MOSFET per kanaal voor de strip, dan gaat dat werken.
Heb je de strip ook goed zitten? Sommige strips zijn common annode, andere common kathode, oftewel wissel de + en - eens om op de strips.

Acties:
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Klopt het dat je vergeten bent om de ground van de arduino en de led's met elkaar te verbinden?
http://electronics.stacke...ommon-ground-and-voltages

Of probeer je de led's te voeden met de arduino?

Normaal gesproken voed je de led's met een afzonderlijke voeding en zijn de grounds met elkaar verbonden.

[ Voor 66% gewijzigd door Sepio op 28-05-2016 22:19 ]


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 10:31

Damic

Tijd voor Jasmijn thee

je weet dat je nu 5ms wacht tussen elke kleur aanpassing, om het echt te zien zou ik al eens beginne met >50ms
Kaalus schreef op zaterdag 28 mei 2016 @ 22:10:
Wat je getekend hebt komt niet overeen met de code die je post.
De code die je post kun je gebruiken met een MOSFET per kanaal voor de strip, dan gaat dat werken.
Heb je de strip ook goed zitten? Sommige strips zijn common annode, andere common kathode, oftewel wissel de + en - eens om op de strips.
uln2003 kun je er ook voor gebruiken als je maar de limitaties in het achterhoofd houd:
http://electronics.stacke...ead-of-multiple-tip120-tr bwt als een strip werkt werkt een strip en moet je + en - zeker neit omwisselen of bedoel je de aansturing ervan. De meeste strips zijn - gestuurd.

[ Voor 78% gewijzigd door Damic op 28-05-2016 22:14 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Kaalus
  • Registratie: Januari 2010
  • Niet online
De meeste strips zijn inderdaad - gestuurd, maar toch niet allemaal, dus vandaar.
De ULN ken ik niet direct, maar in de code worden maar 3 pinnen aangestuurd, in de tekening worden 11 pinnen gebruikt. Dat klopt dus niet.

Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Kaalus schreef op zaterdag 28 mei 2016 @ 22:10:
Wat je getekend hebt komt niet overeen met de code die je post.
De code die je post kun je gebruiken met een MOSFET per kanaal voor de strip, dan gaat dat werken.
Heb je de strip ook goed zitten? Sommige strips zijn common annode, andere common kathode, oftewel wissel de + en - eens om op de strips.
Als ik het goed begrijp hebben we om alles netjes te laten faden, MOSFETs nodig?
Onderstaande code geeft overigens hetzelfde resultaat.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Init the Pins used for PWM
const int redOne = 2;
const int greenOne = 3;
const int blueOne = 4;
// Init our Vars
byte RedValueOne = 0;
byte GreenValueOne = 50;
byte BlueValueOne = 200;


 
void setup()
{
  Serial.begin(9600);
  Serial.println("Start");
  pinMode(redOne, OUTPUT);
  pinMode(greenOne, OUTPUT);
  pinMode(blueOne, OUTPUT);
  
}
 
void loop()
{
  delay(1000);
  Colour();
}

void Colour(){
  // Write the color to each pin using PWM and the value gathered above
  analogWrite(redOne,RedValueOne);
  analogWrite(blueOne, BlueValueOne);
  analogWrite(greenOne, GreenValueOne);
}
Sepio schreef op zaterdag 28 mei 2016 @ 22:10:
Klopt het dat je vergeten bent om de ground van de arduino en de led's met elkaar te verbinden?
http://electronics.stacke...ommon-ground-and-voltages
Nope, ground is aangesloten
Damic schreef op zaterdag 28 mei 2016 @ 22:10:
je weet dat je nu 5ms wacht tussen elke kleur aanpassing, om het echt te zien zou ik al eens beginne met >50ms
Dit hebben we overigens ook al geprobeerd. Hij springt echt over naar kleuren, je ziet hem niet faden(ook niet heel snel)
Kaalus schreef op zaterdag 28 mei 2016 @ 22:16:
De meeste strips zijn inderdaad - gestuurd, maar toch niet allemaal, dus vandaar.
De ULN ken ik niet direct, maar in de code worden maar 3 pinnen aangestuurd, in de tekening worden 11 pinnen gebruikt. Dat klopt dus niet.
Zoals in de originele vraag aangegeven hebben we om het op het begin simpel (lees nog geen bordje laten maken -> kabel spaghetti) te houden 1 strip aangesloten. Dus alleen ground, 12V en RGB aangesloten

Dank allemaal voor de snelle reacties :)

[ Voor 12% gewijzigd door Marco1994 op 28-05-2016 22:21 ]


Acties:
  • 0 Henk 'm!

  • Kaalus
  • Registratie: Januari 2010
  • Niet online
Aarggh, had beter moeten lezen - ik dacht dat het helemaal niet werkte. NVM :)

Zet als je de code start eerst alle uitgangen eens op 255. Je probeert in die code namelijk te veranderen door maar 1 kleur om te zetten, als de rest dan nog 0 is dan zie je dat niet. En zeker de delay rond 50ms proberen te houden, 50ms * 256 = 2.5e seconde.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Per arduino zijn er andere pinnen die PWM via analogwrite ondersteunen. Kloppen de pinnummers bij jou?
https://www.arduino.cc/en/Reference/AnalogWrite

Acties:
  • +1 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 10:31

Damic

Tijd voor Jasmijn thee

ik zou van setup het volgende maken
C:
1
2
3
4
5
6
7
8
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
analogWrite(REDPIN, 0);
analogWrite(GREENPIN, 0);
analogWrite(BLUEPIN, 255);
}
Sepio schreef op zaterdag 28 mei 2016 @ 22:25:
Per arduino zijn er andere pinnen die PWM via analogwrite ondersteunen. Kloppen de pinnummers bij jou?
https://www.arduino.cc/en/Reference/AnalogWrite
De standaard dev bordjes hebben normaal allemaal 2->13 analoog sorry de oudere en de kleinere niet

[ Voor 46% gewijzigd door Damic op 28-05-2016 22:29 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Het enige aan je code dat ik vreemd vind is dat je aan het begin van je loop functie vergeten bent om de rood, groen, blauw waardes te initialiseren. Je begint wel rood te verhogen, maar blauw en groen hebben nog geen waarde.

De post hierboven bevat een voorbeeld.

[ Voor 34% gewijzigd door Sepio op 28-05-2016 22:38 ]


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Kaalus schreef op zaterdag 28 mei 2016 @ 22:25:
Aarggh, had beter moeten lezen - ik dacht dat het helemaal niet werkte. NVM :)

Zet als je de code start eerst alle uitgangen eens op 255. Je probeert in die code namelijk te veranderen door maar 1 kleur om te zetten, als de rest dan nog 0 is dan zie je dat niet. En zeker de delay rond 50ms proberen te houden, 50ms * 256 = 2.5e seconde.
Als ik in de code van de TS analogWrite doe op alle 3 de pinnen naar 255 veranderd er helaas niets.
Sepio schreef op zaterdag 28 mei 2016 @ 22:25:
Per arduino zijn er andere pinnen die PWM via analogwrite ondersteunen. Kloppen de pinnummers bij jou?
https://www.arduino.cc/en/Reference/AnalogWrite
Dit klinkt tot nu toe het meest logische, ga het zo testen

Edit: tot nu toe lijkt het te werken, we hebben overigens een arduino UNO
EDIT2: Sterker nog hij fade als een beauty, we willen er uiteindelijk zelf een bord voor maken, welke Atmega moeten we gebruiken om wel alle pinnen te gebruiken?

[ Voor 11% gewijzigd door Marco1994 op 28-05-2016 22:38 ]


Acties:
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Op deze tekening zie je welke poorten PWM ondersteunen.
https://arduino-info.wiki...496636/ArduinoUNO-900.jpg
Op de uno tel ik er zo te zien 6.

Ken je deze? De arduino mega mini.
http://www.ebay.com/itm/N...0ef92c:g:-9cAAOSwyQtVnMbp

Bij de mega heb je voldoende PWM pinnen.
https://arduino-info.wiki...g/421499040/Mega2-900.jpg

[ Voor 48% gewijzigd door Sepio op 28-05-2016 22:46 ]


Acties:
  • +1 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 11:14
Marco1994 schreef op zaterdag 28 mei 2016 @ 22:06:
Het probleem zit er echter in dat Rood(127) en Groen(128) exact hetzelfde uitziet als Rood(200) en Groen(55). Hij fade dus niet/mengt niet.
Dat hoort.
https://learn.sparkfun.com/tutorials/light/visible-light

Je moet de 0-255 waarden door een logaritme halen om de helderheid linear te maken.
INT{[2^(x/r)] + 0.5} - 1 als ik het mij goed herinner.
Dat kan je arduino alleen met een lookup table.
 2x/r - 1
where
x = 1, 2, 3, ..., m-1, m
m = integral number of duty cycle values required.
r is chosen such that 2m/r = maximum duty cycle value

[ Voor 12% gewijzigd door jeroen3 op 28-05-2016 22:46 ]


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Sepio schreef op zaterdag 28 mei 2016 @ 22:42:
Op deze tekening zie je welke poorten PWM ondersteunen.
https://arduino-info.wiki...496636/ArduinoUNO-900.jpg

Op de uno tel ik er zo te zien 6.
Super, deze tekening ga ik bewaren, ben zelf een software engineer student, arduino's zijn niet helemaal nieuw, maar ook niet bekend. Dit was inderdaad de oplossing, we gaan waarschijnlijk voor de chip van de arduino Mega. Zo moeten we er wel uitkomen. Hartelijk dank allen :) _/-\o_

Acties:
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Ik had mijn post hierboven nog aangevuld met de tekening van de mega en een linkje naar de mega mini.
De tekeningen kun je vinden door te zoeken op "arduino pinout" en dan naar de afbeeldingen gaan.

[ Voor 32% gewijzigd door Sepio op 28-05-2016 22:49 ]


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Sepio schreef op zaterdag 28 mei 2016 @ 22:47:
Ik had mijn post hierboven nog aangevuld met de tekening van de mega en een linkje naar de mega mini.
De tekeningen kun je vinden door te zoeken op "arduino pinout" en dan naar de afbeeldingen gaan.
Heb het gezien inderdaad, ga het verder bestuderen.

Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 03-07 22:24
Mocht er iemand anders op dit topic stuiten, om de volledige helderheid te behalen is het ook nodig om 12V op de RGB te zetten. Dus het schema uit de TS is niet helemaal 100% compleet.

Acties:
  • 0 Henk 'm!

  • Sepio
  • Registratie: Oktober 2007
  • Laatst online: 05-07 09:18
Inderdaad dat stond in mijn eerste post. Vergeet dan niet beide grounds met elkaar te verbinden.

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 10:31

Damic

Tijd voor Jasmijn thee

Moest je willen je kan ook serieel gaan met de tl5971 ofzo

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag

Pagina: 1