Go Down

Topic: Aanzetten laatste waarde array ruïneert functionaliteit, please help (Read 617 times) previous topic - next topic

Tsjompie

Beste lezer,

Afgelopen weken heb ik een "deep dive" in Arduino en Nextion gedaan. Met mijn VB/VBA achtergrond kom ik een heel eind, alhoewel C of C++ niet echt mijn ding is  :o
Desondanks heb ik aardig voortgang geboekt, alhoewel ik nu tegen een heel weerbarstig dingetje aanloop.

Onderstaande code werkt "uitstekend" totdat ik de comment regel activeer.
<CODE>
int airpressureRAW[3][maxairpressureReadings];
const int maxairpressureReadings = 10;
              airpressureRAW[0][intairpressureReadings] = analogOne.getValue();
            memset(buffer, 0, sizeof(buffer));
            itoa(analogOne.getValue(), buffer, 10);
            tavrLV.setText(buffer);
                airpressureRAW[1][intairpressureReadings] = analogTwo.getValue();
            memset(buffer, 0, sizeof(buffer));
            itoa(analogTwo.getValue(), buffer, 10);
            tavrLA.setText(buffer);
                airpressureRAW[2][intairpressureReadings] = analogThree.getValue();
            memset(buffer, 0, sizeof(buffer));
            itoa(analogThree.getValue(), buffer, 10);
            tavrRV.setText(buffer);
//              airpressureRAW[3][intairpressureReadings] = analogFour.getValue();
                                memset(buffer, 0, sizeof(buffer));
            itoa(analogFour.getValue(), buffer, 10);
            tavrRA.setText(buffer);
<EIND CODE>

Code interpretatie:
  • Met de code analogxxx.getValue(); haal ik een analoge waarde op waarbij de noise is weggehaald
  • De xxxxx.setText(buffer); functie is in gebruik een Nextion scherm te vullen.
  • De variabele intairpressureReadings loopt mee om aan de hand van millis de array te vullen. Die array wordt naderhand gebruikt om het gemiddelde over langer periode te kunnen terugrekenen.


Het optellen van de intairpressureReadings:
intairpressureReadings = intairpressureReadings + 1;
if (intairpressureReadings >= maxairpressureReadings) {
   intairpressureReadings = 0;     //Dus na 10 keer lezen de array vanaf 0 weer vullen
}

Activatie van die comment regel heeft op een of andere manier invloed op de waarde van intairpressureReadings. Zodra ik die ook aanzet springt die intairpressureReadings (lijkt wel) naar de waarde van de analogFour.getValue().

Dit is al dagen lang een issue wat ik niet weet te vinden.
Het zou er fijn zijn als iemand me een zetje in de juiste richting kan geven.

Dank alvast,

Tsjompie

PieterP

Welke output verwacht je van het volgende stukje code?
int myArray[3] = {1, 2, 3};
Serial.println(myArray[0]);
Serial.println(myArray[1]);
Serial.println(myArray[2]);
Serial.println(myArray[3]);

Hoe groot is je array, en wat is de minimale en de maximale index? Hoeveel elementen probeer je erin te steken? Met welke indices?

Pieter


robtillaart

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

nicoverduin

Logisch dat hij fout gaat. Google eens op arrays en c en je vindt het
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Tsjompie

Hebben!!!

Mijn dank voor de juiste richting.
Ik ga het corrigeren.

Er blijkt een verschil in de Arrays tussen VB(A) en C(++).

Nooit geweten; was me ook nooit opgevallen in alle voorbeelden die ik heb bekeken (en dat zijn er nogal wat  :o ).

Mijn eerste kennismaking met Arduino is geweldig.
In het bijzonder de community eromheen heeft mij positief verrast. De hoeveelheid leesvoer in het begin is overweldigend, het resultaat straks nog beter  :D

Nogmaals mijn dank voor dit zetje,

Tsjompie

nicoverduin

Er blijkt een verschil in de Arrays tussen VB(A) en C(++).
Nou dat valt nog wel mee hoor. Bij Basic (back in the seventies) alsmede de late VB en VBA is de default index base dat hij altijd begint bij 0. Je moet expliciet in een module opgeven
Code: [Select]

option base 1

om de eerste entry op index 1 te krijgen.
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Go Up