Go Down

Topic: Formule in code (Read 299 times) previous topic - next topic

Jeroentje2212

Apr 17, 2019, 11:16 pm Last Edit: Apr 17, 2019, 11:58 pm by Jeroentje2212
Kan iemand mij helpen.
Ben al een poosje opzoek naar een oplossing voor mijn issue maar krijg op andere forums niet echt het juiste antwoord.

Ik wil in een void het volgende doen.

void led(int Y, int state) {

digitalWrite(Y, 1);}
Nr 1 opgelost met (Y %36);
Nr2 hieronder nog niet!!
Nou wil ik iets maken dat als ik by Y 1 t/m 36 invul
Er 1 t/m 36 word ingevuld.
Bij 37 t/m 72 er ook 1 t/m 36 word ingevuld.
Enz enz
Heb dat nu met if else statement maar zou liever een formule erin hebben om de void kleiner te maken.

Tevens voor een andere void moet ik.
Als ik invoer 1 t/6 arduino +0 doet
Bij 7 t/m 12 +2
Bij 13 t/m 18 +4.
Doet nu met een case statement van 36 cases.
Wil die ook graag verkleinen

MAS3

Hoi Jeroentje2212.

Je hebt een mooi verhaal getypt, met van alles wat je denkt nodig te hebben er in.
Het lijkt er op dat jij denkt dat je weet wat er fout gaat, maar niet weet hoe je dat moet oplossen.
Maar ik heb geen idee wat je eigenlijk wil.

Het is heel belangrijk dat je goed communiceert.
Wanneer je met een mens communiceert, zal die mens proberen te begrijpen wat je te vertellen hebt, ook als je dat niet op de gangbare wijze vertelt.
Natuurlijk kunnen er daarbij misverstanden optreden.
Maar de IDE gooit er dan meteen het bijltje bij neer, of zal iets heel anders gaan doen dan wat jij dacht dat ie zou doen.

Is die eerste nu opgelost ?

Als dat zo is dan had je die niet hoeven laten zien, want dan vind ik het maar verwarrend.
Maar misschien had je die oplossing een half uurtje na het posten gevonden en heb je dat erbij ge-edit.

De 2e das dan weer een ander ding.
Wanneer de eerste voorwaarde voldaan moet worden, dan moet je dat nog wel apart eruit vissen (omdat je anders een fatale rekenfout zou kunnen krijgen).
En wanneer er meer dan 18 kan worden "ingevuld", dan moet je wel precies aangeven wat je daarmee wil doen.
Moet er bij een waarde van 19 dan +6 komen, of moet het dan +8 worden ?
Bij die laatste (dus wanneer het een 8 moet worden) kun je dan gaan kijken hoe lang kan zien of de waarde groter dan (6, 12, 18, 24...) is.
Als je dat controleert met een teller die je vermenigvuldigt met 6, dan kun je wanneer dat niet meer kan, de teller 1 lager maken, en dan 2 tot de macht (teller) doen.
Dus bij een waarde van 19, zie je dat 'ie groter is dan (3*6=18), maar niet dan (4*6=24).
Dus moet waarde 3 genomen worden voor je berekening.
Daarmee doe je dan 2 tot de macht 3, en dat is 8.
Maar dit kan dus vermoedelijk niet wanneer (teller) nu 0 is.

Als dit is wat je wil dus, want ik weet dat niet zeker.

Oh, en een void is niet een void, maar een functie.
Het woord void betekent "leegte", en dat is wat die functie terug geeft (niets dus).

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Jeroentje2212

Idd voor de eerste vond ik al een oplossing.
Heb hem aangepast maar niet verwijder voor het geval iemand mij vertellen oplossing wil weten.

Ik ben een echte noob op dit gebied doe dit sinds 1 1/2 maand.
Heb al een 3x3x3 led kubus gemaakt
En ben nu met een 6x6x6 bezig.

Ik heb 6 schuifregisters hiervoor en heb de anodes verdeeld over die 6.
Om te voorkomen dat ik over de 60mA ga

Daardoor zitten kolom 1 tot 6 op pinnen 1 tot 6.
Kolom 7 tot 12 op 9 tot 14.

En voor 13 tot 18 op 17 tot 22.

Heb hiervoor een functie aangemaakt
Met case 1 tot 36.
Om de pinnen in volgorde te krijgen van 1 tot 36
Maar dat is een beste oppervlakte met tekst.
Zocht dus naar een manier omdat kleiner te maken.


Jeroentje2212

Ik heb deze net van een ander forum verkregen weet niet of dat werkt.

((pinNumber) %36 +1);

Bovenstaand zou pin 1-36 naar 1-36 zetten en 37 tot 72 ook naar 1 tot 36 enz enz

(pin +(((pin-1)/6)*2)

Dit zou van pin 1-6 pin 1-6 maken
En ik heb van 7-12 >> 9 tot 14.
En de 6 daarna 17 tot 22.

shooter

zoek eens uit wat % betekent
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Jeroentje2212

Dat weet ik dat is modulo.
Weet nu ook dat 6%6=0
En niet 6 daar pin 6 op nul gezet

Jeroentje2212

Bedankt allemaal heb pin 36 nu op 0 gezet zodat ik %36 kan gebruiken voor de pins dus 36 en 1 tot 35
Pin 72 laag 2 pin 36  led(37%36) ;=0.

shooter

ja en dat in een functie zetten dus led[lednummer] die zet je dan aan of uit
dan in de loop de hele array van led in een keer op de leds zetten.
dat kan heel snel dus zie je gewoon een directe verandering van je cube.
paul deelen
shooter@home.nl
making controls with codesys PLC and arduino

Go Up