arrays

algemene C code
Berichten: 10
Geregistreerd: 05 Jun 2018, 08:24
Woonplaats: Frankrijk

arrays

Berichtdoor f8voa » 05 Jun 2018, 08:31

Morgen ,
Dit is mijn eerste post , er zullen nog wel andere volgen ....
Ik ben C++ aan het leren en zoek een oplossing om van een gegeven , na 10 keer gelezen te hebben op A0 , een gemiddelde te maken om nadien in een berekening te gebruiken . Ik snap het gebruik van arrays echter niet zo direct . Graag wat hulp.
Het gegeven op A0 is een gemeten spanning ( float )

Marco,

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arrays

Berichtdoor nicoverduin » 05 Jun 2018, 09:14

Stel je voor:
Je neemt een laden kastje met 10 laadjes.
Elke keer als je een meting doet stop je die inhet volgende laadje
Op een gegeven moment zijn ze allemaal vol.
Tel alle waardes op en deel door 10
Nu heb je het gemiddelde.
Bij de 11e metingbegin je weer bij het eerste laadje.
En tel je weer alles op en deel door 10.
Al je dit consequent doet dan heb je een voortschrijdend gemiddede

En dat ladenkastje. Dat is een array
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 10
Geregistreerd: 05 Jun 2018, 08:24
Woonplaats: Frankrijk

Re: arrays

Berichtdoor f8voa » 05 Jun 2018, 10:01

He , Nico , bedankt voor de uitleg.

Wat ik echter niet zo maar snap ( mijn geest werkt anders ) is het gebruik .

Ik declareer :
float VVolt [10] // hier heb ik dus ( veronderstel ) voorop gezegd dat VVolt 10x moet gebruikt worden .
float VA0=Vin/1024; // de voedingsspanning gemeten op de 5V-pin v/d UNO gedeeld door 1024

in de loop laat ik :

bit_waarde=analogRead(A0); //Uitlezen van de gemeten spanning

nadien print ik deze op het LCD :
lcd.print(bit_waarde*VA0);

omdat dit getal bit-waarde niet constant is ( schommelingen door temperatuur , enz ) zou ik dit dus eerst 10x willen meten alvorens het te gebruiken . ( dus de uitgelezen 10x VVolt / 10 )
en daar loop ik vast . Geen idee ( deze morgen ) hoe dat verder moet .

ps: soms is het eenvoudige erg moeilijk voor mij en omgekeerd .

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arrays

Berichtdoor nicoverduin » 05 Jun 2018, 10:23

Arduino.cc staat ergens een uitgebreide uitleg over arrays
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 10
Geregistreerd: 05 Jun 2018, 08:24
Woonplaats: Frankrijk

Re: arrays

Berichtdoor f8voa » 05 Jun 2018, 10:33

Bedankt Nico , maar ik zal het wel ergens anders gaan vragen .
Na 4 dagen lezen weet ik genoeg over ledjes laten verspringen , lampen laten branden en andere mogelijkheden maar nog steeds niets over hoe ik gemeten gegevens in het geheugen zet .
't Zal wel aan mij liggen .

Wij zullen eens een frans forumgebruiken , misschien zijn ze daar duidelijker .
Marco

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arrays

Berichtdoor nicoverduin » 05 Jun 2018, 11:08

f8voa schreef:Bedankt Nico , maar ik zal het wel ergens anders gaan vragen .
Na 4 dagen lezen weet ik genoeg over ledjes laten verspringen , lampen laten branden en andere mogelijkheden maar nog steeds niets over hoe ik gemeten gegevens in het geheugen zet .
't Zal wel aan mij liggen .

Wij zullen eens een frans forumgebruiken , misschien zijn ze daar duidelijker .
Marco
lijkt me een goed plan......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: arrays

Berichtdoor Gij Kieken » 05 Jun 2018, 12:51

Hey f8voa,
In de IDE onder voorbeelden <analog--smoothing> zit er voorbeeld met gebruik van array's.
Probeer deze code te begrijpen en pas ze dan toe op jou project.


Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: arrays

Berichtdoor FPCUser » 05 Jun 2018, 13:06

Heb ik net een verhaaltje gemaakt om het op mijn manier uit te leggen,
kom je met het volgende:

Wij zullen eens een frans forumgebruiken , misschien zijn ze daar duidelijker .
Marco


Maar toch, laat ik ook eens een poging wagen het uit te leggen.

Je bied een spanning aan op een analoge ingang.
Die kan, als je de referentie niet veranderd, varieren tussen 0V en 5V.
Achter deze ingang zit een analoog naar digitaal omzetter.
De spanning wordt dus omgezet naar een waarde. Deze omzetter is een 10 bits omzetter en kan daarmee 2 tot de macht 10 waarden weergeven.
Dat zijn 1024 mogelijkheden.
Omdat de nummering niet begint met 1 maar met 0, varieert de uitgang van deze omzetter afhankelijk van de aangeboden spanning daarmee tussen 0 en 1023.
En dit is een geheel getal, een integere waarde.
Daarmee staat het type van je array al vast, n.l. int.

Wat is nu een array?
Ik vergelijk een array wel eens met een straat, b.v. Hoofdstraat.
Aan deze straat staan verschillende huizen en elk huis heeft een huisnummer.
Bijvoorbeeld: op nummer 2 woont de fam. Jansen, en op huisnummer 8 woont de fam. de Boer.
We zouden kunner zeggen: bewoner Hoofdstraat[2] = Jansen, en Hoofdstraat[8] = de Boer.

Ook een array heeft een 'huisnummer', dat noemen we een index. En die zetten we tussen rechte haken [].
Een array in de programmeertaal C begint altijd met huisnummer 0.
Het eerste 'huis' in ons array is dus Hoofdstraat[0].
En daarin komen geen namen van bewoners maar getallen.
Stel dat aan de hoofdstraat 10 huizen staan, dan maken (declareren) we eerst een array met 10 elementen van een bepaald type.
In ons geval dus van het type integer: int Hoofdstraat[10].
Vervolgens vullen we deze huizen met de waarden die de A/D omzetter ons levert.
B.v. Hoofdstraat[0] = 512, Hoofdstraat[1] = 513 enz t/m Hoofdstraat[9] = 510

Dat vullen kan je met een FOR/NEXT loop doen, je krijgt dan zoiets als

cpp code
int jouArrayNaam[10];
for(byte i=0; i<10; i++) {
jouArrayNaam[i] = analogRead(A0);
// evt een delay
}


En om het gemiddelde te berekenen tel je de waarden bij elkaar op en deel je de som door het aantal.

cpp code
int som = 0;
for(byte i=0; i<10; i++) {
som += jouArrayNaam[i];
}
int gemiddelde = abs(som/10);



En eenvoudiger kan ik het niet uitleggen...

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: arrays

Berichtdoor nicoverduin » 05 Jun 2018, 15:43

Dat je er nog zoveel energie in steek. Ik ben al klaar met hem....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 18 gasten