digitalWrite uitgangen dmv array (Arduino)

Ik heb een probleem waar ik niet uitkom.



int myPins100[7] = {47,48,49,50,51,52,53};
// hier definieer ik mijn 7 uitgangen 47 t/m53 in een array.
 

pinMode (myPins100[7], OUTPUT);   // honderdtal      100,00   Display 
// hier geef ik aan dat het uitgangen zijn.


digitalWrite (myPins100[7] == (1,1,1,1,1,1,0));
// ergens in mijn programma wil ik de uitgangen met digitalWrite aansturen.
// 47 = 1, 48 = 1 enz.

Maar blijkbaar is dit niet de juiste weg.
Wie kan me naar de uitgang helpen?
Ik heb al vele Youtube filmpjes gezien maar dit lukt maar niet.

daandc

Golden Member

Moet het ipv van de curly braces {} geen () zijn?

Dus: Int myPins100[7] = (47,48,49,50,51,52,53);

Maar onderin in je balk geeft ie toch aan wat er mis gaat.

Niet storen a.u.b ben al gestoord genoeg!
benleentje

Golden Member

De eerste keer bij het initialiseren van de aray kan je de hele array vullen met waardes maar daarna moet je dat een voor een doen. Een array is wat dat betreft maar enkel een verzameling van variabelen.


pinMode (myPins100[7], OUTPUT);

Nu heb je maar een enkele pin op output gezet en dat is de pin nr 7 van je array, de rest van de pinnen heb je niets mee gedaan.

digitalWrite (myPins100[7] == (1,1,1,1,1,1,0))

Nu vergelijk maar een enkel waarde van enkel pin nummer 7 met een hele reeks aan waarden.

Zoiets kan wel dan ga je met een for loop lang alle elementen van de array

int x=0
int dataArray[7] = {1,1,1,1,1,1,0}

for(x=0; x <= 6; x++){
  digitalWrite (myPins100[x] = DataArray[x]
  }

Moet het ipv van de curly braces {} geen () zijn?

Alle je de array declareert en dan initialiseert dan kan dat enkel de {} te gebruiken. Maar volgens mij kan je een array later dan niet meer compleet
declareren maar moet je dat 1 voor 1 doen.

[Bericht gewijzigd door benleentje op maandag 30 december 2024 20:12:20 (15%)

buckfast_beekeeper

Golden Member

Op maandag 30 december 2024 20:06:05 schreef benleentje:
De eerste keer bij het initialiseren van de aray kan je de hele array vullen met waardes maar daarna moet je dat een voor een doen. Een array is wat dat betreft maar enkel een verzameling van variabelen.


pinMode (myPins100[7], OUTPUT);

Nu heb je maar een enkele pin op output gezet en dat is de pin nr 7 van je array, de rest van de pinnen heb je niets mee gedaan.
[...]
Nu vergelijk maar een enkel waarde van enkel pin nummer 7 met een hele reeks aan waarden.

Zoiets kan wel dan ga je met een for loop lang alle elementen van de array

[...]

Krijg je geen out of bounds exceptie. Array loopt toch van index 0 tot 6.

Van Lambiek wordt goede geuze gemaakt.


int myPins100[7] = {47,48,49,50,51,52,53};

// dit array heeft 7 plaatsen. Hier dus 7 output pins.

//
//Display nummer: 1  2  3  4  5

pinMode (myPins100[0], OUTPUT);   // honderdtal      100,00   Display 1
pinMode (myPins100[1], OUTPUT);
pinMode (myPins100[2], OUTPUT);
pinMode (myPins100[3], OUTPUT);
pinMode (myPins100[4], OUTPUT);
pinMode (myPins100[5], OUTPUT);
pinMode (myPins100[6], OUTPUT);

// nu elke pin op output gezet.

//Nu het aansturen van de uitgangen.



digitalWrite (myPins100[] == (1,1,1,1,1,1,0));
  
// Eigenlijk zou de bovenstaande regel het onderstaande moeten vervangen.
// Dit om de code compacter te kunnen maken.

    //digitalWrite(47, HIGH); //a
    //digitalWrite(48, HIGH); //b
    //digitalWrite(49, HIGH); //c
    //digitalWrite(50, HIGH); //d
    //digitalWrite(51, HIGH); //e
    //digitalWrite(52, HIGH); //f
    //digitalWrite(53, LOW);  //g       


benleentje

Golden Member

Ik heb hierboven al laten zien hoe je met een for loop langs de hele array kan gaan.

digitalWrite (myPins100[] == (1,1,1,1,1,1,0));

Dit gaat op 2 manieren fout.

JE gebuikt een ==. Dit is heel wat anders dan =

== gebruik je in C enkel en alleen als je 2 waarden links en recht met elkaar wilt vergelijken.

Je kan in C niet een hele array in zijn geheel gebruiken maar je moet altijd dat 1 voor 1 doen.

Ondestaand kan dus wel dan kan je met een for loop eerst alles als uitgang zetten en daarna in een 2de for loop de uitgangen aan en uit zetten.

int x = 0
int dataArray[7] = {1,1,1,1,1,1,0}

for(x=0; x <= 6; x++){
  pinMode (myPins100[x] = OUTPUT[x]
  }

for(x=0; x <= 6; x++){
  pinMode (myPins100[x] = dataArray[x]
  }
pcb_nl

Golden Member

[
digitalWrite (myPins100[7] == (1,1,1,1,1,1,0));
// ergens in mijn programma wil ik de uitgangen met digitalWrite aansturen.
// 47 = 1, 48 = 1 enz.

[/code]

met = geef je een waarde aan iets
met == vergelijk je waarde met andere waarde