expected identifier before numeric constant

Ik heb een sketch gemaakt om 2 NeoPixel ringen tegengesteld aan elkaar te laten draaien.
Ik heb alles zo ingevuld zoals Adafruit dat ook heeft gedaan bij Multi-Tasking the Arduino deel III.
Wat niet nodig was, heb ik weggedaan, dus alleen de TheaterChase overgehouden.
Maar bij het verifiëren/compileren krijg ik de foutmelding “expected identifier before numeric constant”
Ik heb van alles bekeken en kom er maar niet uit. Ik heb geen ervaring met programmeren cq Arduino. Wie kan mij hiermee op weg helpen …
In de sketch heb ik de onderste delen ook uitgeschakeld met // daar ik verwacht dat deze niet noodzakelijk zijn om de sketch, wanneer het werkt, te laten draaien.

_2x24NeoPixel.ino (3.62 KB)

Je hebt wel een open { voor je loop maar je hebt de sluit } commented met //

Ook heb je de laatste twee functies commended maar je wil ze wel gebruiken. Je doet namelijk

NeoPatterns Ring1(24, 10, NEO_GRB + NEO_KHZ800, &Ring1Complete);
NeoPatterns Ring2(24, 11, NEO_GRB + NEO_KHZ800, &Ring2Complete);

Dus nodig heb je ze :) Of ze doen wat je wilt kan ik zo even niet beoordelen.

Ik heb je code ook even bekeken en geprobeerd te compilen. Er zitten nog heel veel erros in. Er zitten ook Syntax errors in. Probeer deze er eerst eens uit te halen.

Ik heb het originele programma van Multi-Tasking the Arduino gebruikt, en alles wat niet nodig is weggestreept door middel van de // om de niet nodige programmalijnen uit te schakelen. Hiermee heb ik wel het resultaat behaald wat ik voor ogen had. Maar ik snap niet hoe …
Door mijn gebrekkige kennis van Arduino kan ik helaas de boel niet ontleden om hiermee de sketch op te bouwen. En ik heb helaas nergens op het net of in Forums een sketch gezien wat lijkt op de sketch die ik wil maken.
Ik wil namelijk 2 tot 8 NeoPixel ringen aansturen, met op elke uitgang van de Arduino een ring.
Ik wil deze laten oplichten in de TheaterChase mode van Strandtest. Met zelfde kleurenpalet in de tegengestelde richting, of wisselend kleurenpalet …

Ik heb al een paar pogingen gedaan om zelf een sketch te maken, maar deze komen vol errors te zitten, welke ik niet begrijp, en daardoor dus niet kan oplossen…

Ik heb de sketches waar ik aan probeerde te werken hierheen geüpload. Deze zitten dus vol met errors, ik vraag mij af waar ik verkeerd zit, en of ik überhaupt wel ergens op de goede weg zit …

Is er iemand die mij op weg kan helpen, of iemand die weet waar er ergens op het net een goed werkende sketch met 2 of meer Neo-Pixel ringen staan die bijna hetzelfde, cq hetzelfde doen als wat ik beoog te maken.

NeoPixelStudie.ino (2.26 KB)

_2x24-2.ino (1.98 KB)

_2x24.ino (1.39 KB)

Het is jammer dat de kennis nog zo gebrekkig is van de Arduin. Mijn voorstel zou zijn om alle ringen gewoon in serie te zetten. Dus de OUT pin van de ene doorlussen naar de IN pin van de volgende. Dan kom je weg met een enkele data pin van de Arduino. Alle leds worden in een keer aangemaakt als voorbeeld:

NeoPatterns Ring1(120, 10, NEO_GRB + NEO_KHZ800);  // 5 ringen van 24

Je kan de stream van 120 leds opdelen in 5 segmenten (net als een tabel van 5 regels met 24 kolommen. En dan kun je je helemaal uitleven. Een alternatief is de FastLED library (fastled.io), daar maak je je eigen tabel van RGB leds. Je loopt dan alle segmenten door, kijk of er iets veranderd en aan het einde van de 5 segmenten dos je de show() functie. Daarmee kan je alle segmenten tegelijkertijd verwerken en is de doorloop van een update slechts 10mS bij 300 leds. Dat scheelt een enorme hoeveelheid datapinnen, bedrading enz.

Helaas kan ik dan niet de verschillende acties toevoegen aan de ringen, zoals gewenst.
Ik heb een hele hoop tutorials bekeken, maar op de een of andere manier valt de het kwartje niet.

Ik heb ergens weer iets gevonden, maar met iets simpels uitbreiden lukte mij niet.

Ik heb dit bestand AvoidUsingDelay genoemd, en uit de strandsketch de colorwipe functie gehaald.
Maar wanneer ik deze met de colorwipe functie opstart krijg ik een soort stroboscoop …

Doe ik dus weer eens iets fout, maar dan zonder foutmeldingen.

AvoidUsingDelay.ino (892 Bytes)

AvoidUsingDelay2.ino (1.18 KB)

Twindummy: Helaas kan ik dan niet de verschillende acties toevoegen aan de ringen, zoals gewenst. Ik heb een hele hoop tutorials bekeken, maar op de een of andere manier valt de het kwartje niet.

Ik heb ergens weer iets gevonden, maar met iets simpels uitbreiden lukte mij niet.

Ik heb dit bestand AvoidUsingDelay genoemd, en uit de strandsketch de colorwipe functie gehaald. Maar wanneer ik deze met de colorwipe functie opstart krijg ik een soort stroboscoop .....

Doe ik dus weer eens iets fout, maar dan zonder foutmeldingen.

Als ik je nu vertel dat ik een project gedaan heb van één ledstrip met ruim 300 leds opgedeeld in virtuele segmenten (13 stuks. Allemaal met verschillende aantallen waarvan er zelfs een de volume regelt van een video. Waarbij door sommige een komeet loopt (soms) en bij andere een fading plaatsvind, de kometen verschillende patronen geven en snelheden enz... En allemaal gewoon in een UNO. Dus zeg niet dat het niet kan.. Maar je moet ruimer denken... Alle ringen hebben hun eigen functionaliteit. Die worden niet in microseconden uitgevoerd want je ogen zijn niet snel genoeg. Je hoeft maar 25 x per seconden te updaten. Dus elke 40mSec. als je bedenkt dat 300 Leds ongeveer 10mSec nodig hebben, betekent dat 25% van de tijd is hij de strip aan het updaten. Dus 75 procent niet. De Uno werkt op 16Mhz. Je hebt dus een waanzinnige hoeveelheid mogelijkheden om allerlei software aanpassingen te doen zonder dat je leds daar wat van merken. Jouw proces zou bij 3 ringen kunnen zijn:

setup()
loop()
   UpdateRing1();             // werk met timers en doe alleen iets als er iets moet gebeuren
   UpdateRing2();
   UpdateRing3();
   Fastled.Show();             // toon de laatste stand van de ledstrip

Als je de ringen in serie plaatst, dan weet je (kun je gewoon berekenen) wat de eerste en de laatste led is de array. De processor denkt met een grote array te maken te hebben alleen door de stukjes apart te bekijken heb je gewoon toegang tot de individuele ringen. Zoals ik al zeg ga weer boven het bos staan.... Dan zie je zowel de bomen als het bos.

Bedankt Nico, ik ga me er weer in verdiepen in de verschillende mogelijkheden die er zijn. Ik hoop dat ik wat aan de tip(s) heb. Ik ben eigenlijk wel nieuwsgierig naar die door jouw beschreven sketch, kun jij deze delen of is deze copyrighted ? Ik laat het wel weten of er iets gelukt is.

Dat kan niet. Die is van een klant. Maar bedenk: - elke cirkel heeft een begin en eind (zo werken die WS2812's nu eenmaal) - als je de achter elkaar door verbind heb je in feite een grote stream - een stream wordt pas geupdate als show() wordt uitgevoerd. Tot dat moment kun je continu elk ledje aanpassen zonder dat je de verandering ziet. - zo lijkt het alsof het allemaal tegelijk gebeurt.