arrays
18 berichten
• Pagina 1 van 2 • 1, 2
arrays
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,
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arrays
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
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
Re: arrays
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 .
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 .
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arrays
Arduino.cc staat ergens een uitgebreide uitleg over arrays
Re: arrays
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arrays
lijkt me een goed plan......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
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: arrays
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.
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.
Re: arrays
Heb ik net een verhaaltje gemaakt om het op mijn manier uit te leggen,
kom je met het volgende:
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
En om het gemiddelde te berekenen tel je de waarden bij elkaar op en deel je de som door het aantal.
cpp code
En eenvoudiger kan ik het niet uitleggen...
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...
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: arrays
Dat je er nog zoveel energie in steek. Ik ben al klaar met hem....
18 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten