Hirdetés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz Tomika86 #17104 üzenetére

    Ez is egy lehetséges verzió:

    #include <iostream>
    #include <queue>

    #define mintakSzama 3
    #define csatornakSzama 6

    using namespace std;

    void setup() {

    Serial.begin(115200);
    delay(3000);
    Serial.println();

    for (uint16_t i = 1000 ; i < 2000 ; i+=100 ) {

    // a 0. analog csatornara minta
    uint16_t atlagertek = atlag (0,i) ;
    printf("i= %d atlagertek = %d \n", i,atlagertek);

    } ;

    } ; // end setup

    void loop() {

    } ;



    uint16_t atlag (uint8_t csatorna, uint16_t ertek){

    static queue<uint16_t> analogErtekek[csatornakSzama];
    static uint16_t szumma [csatornakSzama];
    // ha static, akkor nem vesz el kilepeskor az erteke, megtartja

    if ( analogErtekek[csatorna].size() == mintakSzama ){
    szumma[csatorna]-=analogErtekek[csatorna].front() ;
    analogErtekek[csatorna].pop() ;
    } ;
    szumma[csatorna] += ertek ;
    analogErtekek[csatorna].push(ertek) ;

    return szumma[csatorna]/mintakSzama ;
    };

    Ezt írja ki:

    i= 1000 atlagertek = 333
    i= 1100 atlagertek = 700
    i= 1200 atlagertek = 1100
    i= 1300 atlagertek = 1200
    i= 1400 atlagertek = 1300
    i= 1500 atlagertek = 1400
    i= 1600 atlagertek = 1500
    i= 1700 atlagertek = 1600
    i= 1800 atlagertek = 1700
    i= 1900 atlagertek = 1800

    [ Szerkesztve ]

    Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

Új hozzászólás Aktív témák