Keresés

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

  • hukhl

    csendes tag

    válasz Aryes #14067 üzenetére

    Köszönöm aryes és neked is Janos250!
    Ez a globális változó ez bejött. :R

    Viszont a funkcióból sajnos nem sikerült kinyernem a return értéket. :W Biztos valami alap nyelvtani hibát vétek ami miatt nem sikerül. Monitorozva a programot, sajnos nem kapom meg kívülre az értéket...
    Lent látató az eddigi kód bejelölve ahova át akarnám másolni a visszatérési értéket majd újra betenni a funkcióba. Így megoldani a LED ki és bekapcsolását...

    Végig gondolva az eddig megírt funkciót, ha többször fogom behívni akkor a "previousMillis" értékeket külön-külön kell nyilvántartani, mivel más időintervallumot fogok megadni az egyes ledekhez és így máskor kapja meg majd az aktális Millis értéket.

    //---------
    //Constans
    //---------
    const int LED1 = 12;
    const int LED2 = 10;
    const int LED3 = 8;
    const int LED4 = 6;
    const int BUTTON1 = 4;
    const int BUTTON2 = 2;
    //---------
    //Variables
    //---------
    unsigned long previousMillis = 0;
    int Button1State = 0;
    int Button2State = 0;
    int Button1LastState = 0;
    int Button2LastState = 0;
    int Button1CountState = 0;
    int Button2CountState = 0;
    bool LedStateResult = LOW;
    //-------------------
    // Start Initializing
    //-------------------
    void setup() {
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    pinMode(LED4, OUTPUT);
    pinMode(BUTTON1, INPUT);
    pinMode(BUTTON2, INPUT);
    Serial.begin(9600);
    }
    //--------------------
    //Main CODE start here
    //--------------------
    void loop() {
    Button1State = digitalRead(BUTTON1);
    unsigned long currentMillis = millis();
    //---------------------------------
    //Button State Reading and Counting
    //---------------------------------
    if (Button1State != Button1LastState) {
    if(Button1State == HIGH){

    Button1CountState = Button1CountState+1;
    Serial.println("BUTTON STATE CHANGED");
    }
    }
    Button1LastState = Button1State;

    Serial.print("LED Result Main Loop : ");
    Serial.println(LedStateResult);
    //-----------------------------------------
    //State machine according to Button 1 State
    //-----------------------------------------
    switch (Button1CountState)
    {
    case 0:
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    digitalWrite(LED4, LOW);
    Serial.println("CASE0");
    break;
    case 1:
    LedMillis(2000, LED1, currentMillis, LedStateResult);
    LedStateResult = LedMillis;
    // Serial.print("Millis Function Reuslt: ");
    // Serial.println(LedMillis);

    Serial.print("LED Result CASE1 : ");
    Serial.println(LedStateResult);
    //LedMillis(500, LED2, currentMillis, LedStateResult);
    // LedMillis(500, LED3, currentMillis, LedStateResult);
    Serial.println("CASE1");
    break;
    case 2:
    Serial.println("CASE2");
    break;

    case 3:
    Serial.println("CASE3");
    break;
    case 4:
    Serial.println("CASE4");
    break;
    case 5:
    Serial.println("CASE5");
    break;
    case 6:
    Serial.println("CASE6");
    Button1CountState = 0;
    break;
    }
    }

    //----------
    //Function
    //-----------
    bool LedMillis(long interval, int LEDPin, unsigned long currentMillis, bool ledState){
    bool LEDStateResultInternal;
    Serial.print("Previous Millis :");
    Serial.println(previousMillis);
    Serial.print("Current Millis :");
    Serial.println(currentMillis);
    if (currentMillis - previousMillis >= interval)
    {

    if(ledState == LOW)
    {
    ledState = HIGH;

    LEDStateResultInternal = ledState;

    Serial.print("LED Result LedState High :");
    Serial.println(LEDStateResultInternal);

    }
    else{
    ledState = LOW;
    LEDStateResultInternal = ledState;
    Serial.print("LED Result LedState Low :");
    Serial.println(LEDStateResultInternal);
    }
    previousMillis = currentMillis;
    digitalWrite(LEDPin, ledState);


    Serial.print("LED Result Final LedState :");
    Serial.println(ledState);
    }
    return LEDStateResultInternal;
    }

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

Hirdetés