View Single Post
  #10  
Old 06-25-2019, 03:17 AM
Wombii's Avatar
Wombii Wombii is offline
Green Horn
 
Join Date: Feb 2018
Location: Norway
Posts: 231
Wombii is on a distinguished road
Default Re: Remote LED switching with Arduino examples.

That's great! Sorry for missing your post all last week.

Here's the relevant parts of my program that estimates when the ESC is in brake or reverse mode. Can be configured to work for double pump reverse or delayed reverse depending on the type of ESC.

Code:
// - Global variables - 
//How your hardware is set up:
const byte throttleAxisReversed = 0;        //Is the throttle channel reversed?
const byte reverseType2 = 0;                //Reverse type: 0 for double pump, 1 for delayed.
const int reverseDelayTicks = 100;          //Delay length for delayed reverse. (20ms*100= 2 sec)

//Throttle channel deadband:
const int throttleNeutralLowerLimit = 1480; //Center - 20
const int throttleNeutralUpperLimit = 1520; //Center + 20

//Light variables:
byte brakeLight = 0;                  //This stores the state of the brake lights.
byte reverseLight = 0;                //This stores the state of the reverse lights.


// - for the loop(): - 
// ---- SETTING FLAGS ---- //
    // ----------------------- //

    //Read throttleAxis and set flags. Also check flag for reversed throttle channel.
    // |  brake    | neutral | forward
    // | reverse   |
    //-------------------------------------------------------------------------------
    byte forwardFlag = 0, brakeFlag = 0, reverseFlag = 0, neutralFlag = 0; 


    if (throttleAxisReversed)
    {
        if (throttleAxis < throttleNeutralLowerLimit)
        forwardFlag = 1;
        
        else if (throttleAxis > throttleNeutralUpperLimit){
        brakeFlag = 1;
        reverseFlag = 1;
        }  
        
        else //if (throttleAxis < throttleNeutralUpperLimit && throttleAxis > throttleNeutralLowerLimit)
        neutralFlag = 1;

    }
    else //if not reversed
    {
        if (throttleAxis > throttleNeutralUpperLimit)
        forwardFlag = 1;
        

        else if (throttleAxis < throttleNeutralLowerLimit){
        brakeFlag = 1;
        reverseFlag = 1; 
        } 
        
        else //if (throttleAxis < throttleNeutralUpperLimit && throttleAxis > throttleNeutralLowerLimit)
        neutralFlag = 1;
    }


// --- USING FLAGS --- //
    // ------------------- //

    //Enable or disable reverselights and brakelights based on axis flags.
    //--------------------------------------------------------------------
    if (forwardFlag){
    reverseLight = 0;
    brakeLight = 0;}

    if (neutralFlag){
    brakeLight = 0;}

    if (brakeFlag)
    brakeLight = 1;

    //Reverse logic
    //-------------------------------
    static byte reverseFlag2 = 0;
    
    //Double pump reverse
    if (reverseType2){
        static byte reverseFlagCount = 0;
        static byte lastWasReverseFlag = 0;
        if (reverseFlag)// && !lastReverseFlag)
        {
            if (lastWasReverseFlag == 0){
            reverseFlagCount++;
            lastWasReverseFlag =1;
            }
        }
        else // if reverseflag == 0
            lastWasReverseFlag = 0;
        if (forwardFlag)
            reverseFlagCount = 0;
        if (reverseFlagCount >= 2){
            //Serial.println("rev");
            reverseFlagCount = 2; //prevent overflow
            reverseLight = 1;
            brakeLight = 0;
            
        }
    }

    //Delayed reverse
    else
    {   
        static byte reverseFlagCount = 0;
        if (reverseFlag)
        {
            reverseFlagCount++;
            if (reverseFlagCount > reverseDelayTicks){
                reverseLight = 1;
                brakeLight = 0;
                reverseFlagCount = reverseDelayTicks; //prevent overflow
                }
        }
        else
        {
            reverseFlagCount = 0;
            reverseLight = 0;
        }
    } 


   // Now we should have these correctly set:
   // brakeLight
   // reverseLight
   // Can be used like: digitalWrite(13,brakeLight);

Last edited by Wombii; 06-25-2019 at 03:20 AM.
Reply With Quote