Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   For-Loop arduino (https://forum.scholieren.com/showthread.php?t=1891968)

DiegoH_Concepts 17-06-2014 10:18

For-Loop arduino
 
Dag lezers!

Ik heb een for-loop nodig die 100 keer analogRead(A0) uitvoert en dan door 100 deelt. Zou de handigert/slimmert die ff kunnen schrijven zodat ik weer vooruit kan?

Ik ben bezig om met een ntc temperatuur te meten, wat ik al heb is de formule:
Code:

 
  int I = analogRead(A0);
  float A = 7.7;
  float B = 265;
  float ans = (I-B)/A;

zo heb ik hem in de code gezet, keuze voor float bij B heeft met afwijkingen te maken, en bij ans om een betere meting te doen.

Hoop op een antwoord! Vast wel actieve C++/Arduino gebruikers hier!

Ciao!

ThomasJu 17-06-2014 14:06

http://arduino.cc/en/Reference/For


Wat moet hij vervolgens met die waarde doen? want alleen die variabelen assignen heeft niet veel nut. Ik heb een voorbeeldje gemaakt waarin hij ze allemaal in een array stopt. (deze zou je daarna kunnen versturen)
Code:

int sensor_values[100];

void setup() {

}

void loop() {
        for (int i=0; i < 100; i++){
                int value = analogRead(A0);
                sensor_values[i] = value;
                delay(10);
  }
}


DiegoH_Concepts 18-06-2014 09:07

Hij moet de uiteindelijke waarde (uit de berekening) Serial.print(en)
alvast bedankt voor dat voorbeeldje van de loop ;)

ThomasJu 18-06-2014 11:11

Maar dan heb je het for loopje helemaal niet nodig.

Alles wat in de loopfunctie ( "void loop() {}") staat wordt elke keer herhaald. Dus als je alleen die sensor waarde wil printen dan kan dat ook zonder for loop.

DiegoH_Concepts 19-06-2014 19:36

Nee, want ik wil een gemiddelde van 100 metingen omdat mijn NTC een beetje afwijkt, maar ik denk dat ik het nu door heb :)

UPDATE:
ben zo dom geweest om mijn Arduino op school te laten, zou dit werken?:
Code:

void setup(){
  Serial.begin(9600);
}

void loop(){
  int noname = forLoop();
  int I = analogRead(A0);
  float A = 7.7;
  float B = 265;
  float ans = (I-B)/A;
}

int forLoop(){
  int waarde = 0;
  for (int waarde; waarde < 100; waarde++){
    return (analogRead(A0))/100;
  }
}


ThomasJu 19-06-2014 21:41

Vast niet. Ik zit momenteel mobiel, dus ik kan het niet compilen.

Maar die metingen zo doet hij binnen een paar milliseconden, dus ik weet sowieso niet hoeveel zin het heeft om daar een gemiddelde uit te nemen.

Maar er staan een aantal rare dingen in je code.
Er wordt nog nergens iets opgeteld voor het gemiddelde. Wel deel je al door 100. Je kan ook sowieso ff dat haakje van die return goed zetten.

Ik zou zelf ook gewoon die extra functie er uit halen. En de initialisatie van 'waarde' zou ik in het argument van de for loop doen.


Alle tijden zijn GMT +1. Het is nu 08:23.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.