Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

The Summer of 69 door Ronald Halma
Vandaag om 14:22:40
BNLS-Module: "Rvbr-Btk, Ringvaartbrug Haarlemmermeer nabij Buitenkaag" NS H0 door Hans van de Burgt
Vandaag om 13:31:50
't Boemeltje door Sam
Vandaag om 13:26:11
Nieuwe ruimte voor baan na ca. 30 jaar door NS264
Vandaag om 13:22:05
Met welke tang knip je verenstaal? door Montanbahn
Vandaag om 13:14:53
Göhrener Viaduct door saskia
Vandaag om 13:07:45
Hoe een Train-O-Matic lokdecoder voorzien van een lang adres ? door bellejt
Vandaag om 12:58:15
Bauarbeiten im gange door 741230
Vandaag om 12:42:50
booster vraag door 1200blauw
Vandaag om 12:42:01
Van British Railways Class 58 naar ACTS 5814 in 0 door jan47
Vandaag om 12:41:51
ICM 4444 op basis van Marklin 37421 door ES44C4
Vandaag om 12:20:47
BR-18.6 Schaal-0. door FritsT
Vandaag om 12:11:32
De fabriek - Spoor 0 door Ronald Halma
Vandaag om 11:52:05
Waldbrunn an der Veluwe. Romantiek in H0 (2R) door Jeronimos
Vandaag om 11:42:25
Wat was jullie allereerste loc? door puntenglijder
Vandaag om 10:43:11
Update: baan in de tropen door Eric v C
Vandaag om 10:41:52
Op zoek naar ns-seinvleugels in ho door Hans Reints
Vandaag om 10:30:51
Modelbaan Beltheim. door Hollandserhbfan
Vandaag om 10:25:33
Grootspoor in Frankrijk door Wouter W
Vandaag om 10:09:15
Onlangs gespot - gefotografeerd, de foto's door Montanbahn
Vandaag om 09:01:55
Terugverende koppeling door Trein033
Vandaag om 08:29:02
BMB-Module: “Corfe Castle Station” door MOVisser
Vandaag om 08:22:44
Her-(her-)beginnen door Ronaldk
Vandaag om 08:02:11
Noorwegen - interessante spoorzaken langs vakantieroute door Benjamin92
Vandaag om 01:36:24
Acherntal 2.0 H0 TP III/IV door Joz
Vandaag om 00:04:18
Module vliegveld Jan van Mourik door Wim Vink
06 August 2025, 22:36:12
Spoor op industrieterrein Lage Weide door Vislijn
06 August 2025, 22:02:52
US diorama in H0 door 741230
06 August 2025, 21:07:12
Nederland jaren 50 op basis van mijn roots door 741230
06 August 2025, 21:06:11
Ombouw/Pimpen Bolle neuzen door Montanbahn
06 August 2025, 15:46:25
  

Auteur Topic: Neo Pixel ring (24 leds) aansturen met arduino  (gelezen 3495 keer)

tuurtje

  • Offline Offline
  • Berichten: 4695
Neo Pixel ring (24 leds) aansturen met arduino
« Gepost op: 31 March 2018, 17:42:50 »
Goedemiddag,

Ik hoop dat iemand mij de goede kant op kan sturen.

Ben bezig met de Faller Frei Fall Turm en helemaal boven in een Neo Pixel ring met 24 leds geplaatst.
En dan moet het toch simpel zijn om deze via Arduino Uno aan te sturen.
Klopt, knippert, draait, maar het gaat niet vloeiend, kleuren verspringen.

Wat ik op Internet las is dat de strandtest moet werken

#include <Adafruit_NeoPixel.h>

#define PIN 6

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(160, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.setBrightness(30); //adjust brightness here
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  // Some example procedures showing how to display to the pixels:
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue
  rainbow(20);
  rainbowCycle(20);
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

Bij voorbaat mijn dank

Groetjes

Arthur
« Laatst bewerkt op: 31 March 2018, 17:44:25 door tuurtje. Reden: Tekst aanpassingen »
Arthur is helaas in januari 2025 overleden

spock

  • Offline Offline
  • Berichten: 764
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #1 Gepost op: 31 March 2018, 19:08:38 »
Hallo tuurtje,

Ik zou eerst de programmatuur (en methodiek) veranderen zodat er geen gebruik meer gemaakt wordt van de functie delay();
Mijn streven met Arduino progammeren is dat de loop() meer dan 100 keer per seconde wordt doorlopen.
Om de methodiek zonder gebruik te maken van delay() te begrijpen, is het raadzaam om de voorbeeld programma's blink.ino en BlinkWithoutDelay.ino (in de Voorbeeld\02.Digital folder)) door te nemen en te begrijpen voordat je echt iets met Arduino gaat programmeren.

mvg spock

 

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #2 Gepost op: 31 March 2018, 20:29:02 »
Strandtest? ???

Maar ben het met Spock eens, hoofdstuk twee, na hoofdstuk één "Blink, van alle Arduino boeken zou moeten heten "En nu nooit meer delay() gebruiken". ;D Maar goed, aangezien deze code alleen maar de Neopixels stuurt zou het wel prima er uit moeten zien. Met onderstaande code is dat dus niet? Kan je ander een filmpje plaatsen?

En nog paar tips:

Spaties zijn gratis
for(j=0; j<256*5; j++)
//en
for(j = 0; j < (256 * 5); j++)
doen hetzelfde maar ik weet wel welke ik duidelijker vind. :angel:

#define PIN 6C++ kent de mooiere en veiligere (oa betere foutmeldingen) alternatief van const:
const byte NeoPixelPin = 6;
Elke inspring is twee spaties (of in ieder geval gelijk). In de Wheel functie is de eerste inspring twee spaties maar de tweede maar drie.

En probeer een standaard stijl voor variabele namen en functie namen te hebben. Je mag zelf bepalen wat maar het maakt het niet makkelijker als je de ene keer functieVoorA() gebruikt en de andere keer FunctieVoorB(). "Standaard" binnen Arduino is ditVoorVariabeleOfFuncties (camelCase), ConstVariableEnClassesZo (UpperCamelCase) en ALL_CAPS_MET_UNDERSCORE for macro's.

En zelf vind ik FastLed een vele malen mooiere library for NeoPixels dan die van AdaFruit.


Timo
« Laatst bewerkt op: 31 March 2018, 22:04:55 door Timo »
Verzonden vanaf mijn desktop met Firefox

tuurtje

  • Offline Offline
  • Berichten: 4695
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #3 Gepost op: 31 March 2018, 21:55:44 »
Thanks voor jullie reactie's  (y)

Ik heb dit niet zelf geschreven hoor, maar komt van de site van Adafruit af

https://github.com/adafruit/Adafruit_NeoPixel

Dat regels in software altijd beter kunnen snap ik, wat ik niet snap is het onregelmatige oplichten van sommige leds.

Groetjes

Arthur
Arthur is helaas in januari 2025 overleden

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #4 Gepost op: 31 March 2018, 22:01:12 »
Citaat van: Timo
...
for (j = 0; j < (256 * 5); j++)doen hetzelfde maar ik weet wel welke ik duidelijker vindt.
In de FOR voorwaarde moet je ook geen berekening uitvoeren, nu wordt het sommetje 256*5 iedere keer weer uitgevoerd om de test te doen terwijl het gewoon een constante is. Alleen een slimme compiler 'ziet' dat en vult de waarde 1280 in.
El Carrilet
"te dom om te poepen"
MH

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #5 Gepost op: 31 March 2018, 22:06:26 »
@72sonett, waar kwam die t vandaan ??? Zat zeker in me whisky :angel:

Maar alle hedendaagse compilers zijn slim genoeg om een berekening van constanten te vervangen tijdens compiler time. En juist het uitschrijven kan je code verduidelijken.

@tuurtje, zoals ik zei, kan je een filmpje plaatsen?


Timo
Verzonden vanaf mijn desktop met Firefox

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #6 Gepost op: 31 March 2018, 22:29:53 »
Citaat van: Timo
... waar kwam die t vandaan ??? Zat zeker in me whisky
Als ik af moet gaan op jouw reacties dan drink je t veel whisky...   8)
El Carrilet
"te dom om te poepen"
MH

tuurtje

  • Offline Offline
  • Berichten: 4695
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #7 Gepost op: 31 March 2018, 22:48:52 »
Timo,

Ik hoop dat dit een impressie geeft

https://youtu.be/SOgCrZrW6-k

Groetjes

Arthur
Arthur is helaas in januari 2025 overleden

Reinout van Rees

  • Team forummoderators
  • Offline Offline
  • Berichten: 7751
  • Forummoderator
    • Persoonlijke website + weblog
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #8 Gepost op: 31 March 2018, 23:10:07 »
Oh gruwel! Er staat toch wel een preisertje met een snijbrander onderaan die toren de poten door te zagen???

"Frei fall Turm" klinkt als een attractie waar het wel bij past :) Netjes uitgevoerd zo!

Reinout
Bouw v/d EifelBurgenBahn (h0, zijlijn in de Eifel)
Eifelgeschiedenis (verhalen en video's over de Eifelburgenbahn)

spock

  • Offline Offline
  • Berichten: 764
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #9 Gepost op: 01 April 2018, 13:20:12 »
Hoi Arthur,

Nog even naar de code gekeken.

Wat ik niet begrijp is de volgende regel:

// Parameter 1 = number of pixels in strip
..
Adafruit_NeoPixel strip = Adafruit_NeoPixel(160, PIN, NEO_GRB + NEO_KHZ800);

En dan met name het getal 160. In de header staat dat je een 24 pixel ring gebruikt.
Probeer eens 24 ipv 160 in de definitie regel.

mvg spock

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #10 Gepost op: 01 April 2018, 13:38:17 »
Dat is inderdaad wel heftig. 1e parameter zou inderdaad aantal liedjes moeten zijn maar meer dan niet kloppende animaties zou het niet tot gevolg mogen hebben.

Ik zit toch eerder aan iets elektrisch te denken. Hoe ver weg is de Arduino? Hoe dik zijn de voedingsdraden? En heb je netjes een weerstand tussen de Arduino en de ring?


Timo
Verzonden vanaf mijn desktop met Firefox

tuurtje

  • Offline Offline
  • Berichten: 4695
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #11 Gepost op: 01 April 2018, 16:26:05 »
Beste Spock en Timo,

Een oud spreekwoord zegt, krijg nou t**tten  ::)

Ik heb niets aan de sketch veranderd, vanmorgen was nog steeds hetzelfde beeld, net even na een tuincentrum geweest want dat hoort op 1e Paasdag  ;D
Zet net de boel weer aan en het loopt vloeiend.

Getver de getver, hier kan ik dus niet tegen, als iets niet werkt ok, maar niet weten waarom iets niet werkt.

Om toch even de vragen van Timo te beantwoorden.

De Arduino is ca 75 cm verwijderd van de ring, de draad dikte is 0,14 qmm, maar ook met meetsnoeren was het precies hetzelfde.
En de weerstand zit er tussen

In ieder geval wil ik jullie bedanken voor het meedenken  (y)

Groetjes

Arthur
Arthur is helaas in januari 2025 overleden

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Neo Pixel ring (24 leds) aansturen met arduino
« Reactie #12 Gepost op: 02 April 2018, 10:47:13 »
Als het nu opeens wel werkt kan je de code echt wel uitsluiten. :) Klinkt als ouderwetse interferentie.

75cm is best lang voor de gevoelige Neopixels. En 0,14mm2 best dun. 24 Neopixels hebben een piek vermogen van bijna 1,5A ;) Kan je de Arduino dus ook niet laten voeden als je de Arduino niet met 5V voedt (dus 7-12V via de jack). Ik had voor GND en Vcc dus iets dikkers gepakt. Maar gemiddeld genomen zal het wel meevallen en kan je waarschijnlijk wel uit met de 0,142 maar zou ik toch wat maatregelen nemen. Zo zou ik de data en de GND lijn twisten om ze dicht bij elkaar te houden. Ook zou ik iets van 100uF direct naast de ring plaatsen. Als het goed is heeft iedere pixel al 100nF. Samen zou de spanning bij de ring wat stabieler moeten worden en door de draden te twisten minder storing op pikken.


Timo
« Laatst bewerkt op: 02 April 2018, 10:56:38 door Timo »
Verzonden vanaf mijn desktop met Firefox