Пример #1
0
void screenEnd(const char * firstLine) {
    lcdSetCursor0_0();
    lcdPrint_P(firstLine);
    lcdPrintTime(Monitor::getTimeSec());
    lcdSetCursor0_1();
    lcdPrint_P(Program::stopReason);
    lcdPrintSpaces();
}
Пример #2
0
void Screen::displayDeltaFirst()
{
    lcdSetCursor0_0();
    printCharge();
    deltaT();

    lcdSetCursor0_1();
    printChar_Time();
    deltaV();
}
Пример #3
0
void Screen::displayScreenTime()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("time:     ")); lcdPrintTime(getTimeSec());
    lcdSetCursor0_1();
    lcdPrint_P(PSTR("b "));
    lcdPrintTime(totalBalanceTime_/1000);
    lcdPrint_P(PSTR("  "));
    lcdPrintTime(totalChargDischargeTime_/1000);
}
Пример #4
0
void Screen::runAskResetEeprom(uint8_t what)
{
    lcdClear();
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("eeprom reset:"));
    lcdPrintUInt(what);
    lcdSetCursor0_1();
    lcdPrint_P(PSTR("            yes"));
    while (waitButtonPressed() != BUTTON_START);
}
Пример #5
0
void Screen::displayScreenReversedPolarity()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("REVERSE POLARITY"));

    if(settings.isDebug()) {
        lcdSetCursor0_1();
        lcdPrint_P(PSTR("Vrev:"));
        lcdPrintUnsigned(analogInputs.getRealValue(AnalogInputs::VreversePolarity), 8);
    }
}
Пример #6
0
void Screen::displayScreenVout()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Vout ="));
    analogInputs.printRealValue(AnalogInputs::Vout, 7);
    lcdPrintSpaces();
    lcdSetCursor0_1();
    lcdPrint_P(PSTR("Vbal.="));
    analogInputs.printRealValue(AnalogInputs::Vbalancer, 7);
    lcdPrintSpaces();
}
Пример #7
0
void Screen::displayScreenVinput()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Vinput="));
    analogInputs.printRealValue(AnalogInputs::Vin, 7);
    lcdPrintSpaces();
    lcdSetCursor0_1();
    lcdPrint_P(PSTR(" limit="));
    lcdPrintAnalog(settings.inputVoltageLow_, AnalogInputs::Voltage, 7);
    lcdPrintSpaces();
}
Пример #8
0
void Screen::displayDeltaVout()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("maxVout="));
    analogInputs.printRealValue(AnalogInputs::deltaVoutMax, 7);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("delta V= "));
    deltaV();
}
Пример #9
0
void Screen::displayScreenFirst()
{
    lcdSetCursor0_0();
    printCharge();
    lcdPrintCurrent(getI(),  7);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    printChar_Time();
    analogInputs.printRealValue(AnalogInputs::VoutBalancer,     7);
    lcdPrintSpaces();
}
Пример #10
0
void ProgramDataMenu::createName()
{
    p_.createName(programIndex_+1);

    lcdClear();
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Name:"));
    lcdSetCursor0_1();
    lcdPrint(p_.name, PROGRAM_DATA_MAX_NAME);
    waitButtonPressed();
    Buzzer::soundSelect();
}
Пример #11
0
void Screen::displayScreenCIVlimits()
{
    lcdSetCursor0_0();
    lcdPrintCharge(ProgramData::currentProgramData.getCapacityLimit(), 8);
    lcdPrintChar(' ');
    lcdPrintCurrent(ProgramData::currentProgramData.battery.Ic, 7);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("Limits: "));
    lcdPrintVoltage(ProgramData::currentProgramData.getVoltage(ProgramData::VCharge), 7);
    lcdPrintSpaces();
}
Пример #12
0
void Screen::displayDeltaTextern()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Text="));
    if(settings.externT_ || settings.isDebug()) {
        lcdPrintTemperature(analogInputs.deltaLastT_, 9);
    } else {
        lcdPrint_P(PSTR("not used"));
    }
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("delta T= "));
    deltaT();
}
Пример #13
0
void Screen::displayDebugBalancerReal0_2()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("0:"));
    analogInputs.printRealValue(AnalogInputs::Vb0_real, 6);
    lcdPrint_P(PSTR("1:"));
    analogInputs.printRealValue(AnalogInputs::Vb1_real, 6);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("2:"));
    analogInputs.printRealValue(AnalogInputs::Vb2_real, 6);
    lcdPrint_P(PSTR(" real"));
    lcdPrintSpaces();
}
Пример #14
0
void Screen::displayScreenR()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("batt. R="));
    lcdPrintResistance(calculateRth_calibrated(theveninMethod.tVout_.Rth_V_, theveninMethod.tVout_.Rth_I_),8);
    lcdPrintSpaces();
    lcdSetCursor0_1();
    if(analogInputs.isConnected(AnalogInputs::Vbalancer)) {
        lcdPrint_P(PSTR("wires R="));
        int16_t Vwires =  analogInputs.getRealValue(AnalogInputs::Vout);
        Vwires -= analogInputs.getRealValue(AnalogInputs::Vbalancer);
        lcdPrintResistance(calculateRth2(Vwires, getI()+1),8);
    }
    lcdPrintSpaces();
}
Пример #15
0
void Screen::displayScreenTemperature()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Text="));
    if(settings.externT_ || settings.isDebug())
        analogInputs.printRealValue(AnalogInputs::Textern,    5);
    else
        lcdPrint_P(PSTR("not used"));
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("Tint="));
    analogInputs.printRealValue(AnalogInputs::Tintern,    5);
    lcdPrintSpaces();
}
Пример #16
0
void Screen::displayScreenTemperature()
{
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Text="));
    if(settings.externT_ || settings.isDebug())
        analogInputs.printRealValue(AnalogInputs::Textern,    5);
    else
        lcdPrint_P(PSTR("-"));
    lcdPrintSpaces();

    lcdSetCursor0_1();
#ifdef ENABLE_T_INTERNAL
    lcdPrint_P(PSTR("Tint="));
    analogInputs.printRealValue(AnalogInputs::Tintern,    5);
#endif
    lcdPrintSpaces();
}
Пример #17
0
void Screen::Cycle::displayCycles()
{
    uint8_t c, time = Blink::blinkTime_/8;
    uint8_t all_scr = ProgramDCcycle::currentCycle/2 + 1;
    c = time % all_scr;
    lcdSetCursor0_0();
    lcdPrintUnsigned(c+1, 1);
    lcdPrintChar(SCREEN_EMPTY_CELL_CHAR);
    lcdPrintTime(cyclesHistoryTime[c*2], 6);
    lcdPrintSpace1();
    lcdPrintChar(SCREEN_FULL_CELL_CHAR);
    lcdPrintTime(cyclesHistoryTime[c*2+1], 6);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrintCharge(cyclesHistoryCapacity[c*2],8);
    lcdPrintCharge(cyclesHistoryCapacity[c*2+1],8);
    lcdPrintSpaces();
}
Пример #18
0
void Screen::displayDebugDelta()
{
    lcdSetCursor0_0();

    lcdPrint_P(PSTR("C="));
    lcdPrintUnsigned(analogInputs.getRealValue(AnalogInputs::deltaLastCount),5);
    lcdPrint_P(PSTR(" L="));
    int x = analogInputs.deltaLastT_;
    lcdPrintSigned(x, 6);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrint_P(PSTR("N="));
    lcdPrintUnsigned(analogInputs.deltaCount_,5);
    lcdPrint_P(PSTR(" L="));
    x = ProgramData::currentProgramData.getDeltaVLimit();
    lcdPrintSigned(x, 6);
    lcdPrintSpaces();
}
Пример #19
0
void Screen::displayDebugI()
{
    AnalogInputs::Name Iset;
    AnalogInputs::Name Iget;
    if(smps.isPowerOn()) {
        Iset = AnalogInputs::IsmpsValue;
        Iget = AnalogInputs::Ismps;
    } else {
        Iset = AnalogInputs::IdischargeValue;
        Iget = AnalogInputs::Idischarge;
    }
    lcdSetCursor0_0();
    lcdPrint_P(PSTR("Iset="));
    analogInputs.printRealValue(Iset, 7);
    lcdPrintSpaces();
    lcdSetCursor0_1();
    lcdPrint_P(PSTR("Iget="));
    analogInputs.printRealValue(Iget, 7);
    lcdPrintSpaces();
}
Пример #20
0
void Screen::displayStartInfo()
{
    lcdSetCursor0_0();
    ProgramData::currentProgramData.printBatteryString(4);
    lcdPrintChar(' ');
    ProgramData::currentProgramData.printVoltageString();
    lcdPrintChar(' ');
    printProgram2chars(Program::programType_);

    lcdSetCursor0_1();
    uint16_t procent = getChargeProcent();
    if(procent == 100) {
        if(getBlinkOff())
            lcdPrintSpaces(4);
        else
            lcdPrint_P(PSTR("FUL "));
    } else {
        lcdPrintUnsigned(procent, 2);
        lcdPrint_P(PSTR("% "));
    }

    int bindex = getBlinkIndex();
    if(bindex & 1) analogInputs.printRealValue(AnalogInputs::Vout, 5);
    else lcdPrintSpaces(5);

    lcdPrintChar(' ');
    if(ProgramData::currentProgramData.isLiXX()) {
        //display balance port
        if(bindex & 2) analogInputs.printRealValue(AnalogInputs::Vbalancer, 5);
        else lcdPrintSpaces(5);

        if(bindex & 4) lcdPrintDigit(analogInputs.getConnectedBalancePorts());
        else lcdPrintChar(' ');
    } else {

        lcdPrintCharge(ProgramData::currentProgramData.battery.C, 6);
        lcdPrintSpaces();
    }
}
Пример #21
0
void Screen::displayDebugRthVth()
{
    lcdSetCursor0_0();

    lcdPrint_P(PSTR("V="));
    //lcdPrintResistance(Rth_, 8);
    lcdPrintSigned(theveninMethod.tVout_.Rth_V_);
    lcdPrint_P(PSTR(" I="));
    //lcdPrintResistance(Rth_, 8);
    lcdPrintSigned(theveninMethod.tVout_.Rth_I_);
    lcdPrintSpaces();

    lcdSetCursor0_1();
    lcdPrintSigned(theveninMethod.tVout_.Vth_);
    lcdPrintChar(' ');
    lcdPrintSigned(theveninMethod.valueTh_, 4);
    lcdPrintChar(' ');
    uint16_t v;
    if(smps.isPowerOn())    v = smps.getValue();
    else                    v = discharger.getValue();
    lcdPrintSigned(v,4);
    lcdPrintSpaces();
}
Пример #22
0
void Screen::displayStrings(const char *s)
{
    lcdClear();
    lcdSetCursor0_0();
    lcdPrint_P(s);
}
Пример #23
0
    void displayBalanceInfo(uint8_t from, AnalogInputs::Type type)
    {
        lcdSetCursor0_0();

#ifdef ENABLE_SCREEN_KNIGHTRIDEREFFECT
        knightRiderCounter += knightRiderDir;
        if (knightRiderCounter==0 || knightRiderCounter>4) knightRiderDir=-knightRiderDir;
#endif
        char c = ' ';
        if(!::Balancer::isWorking()) {
            if(!::Balancer::isStable())
                c = 'm';
        } else {
            if(::Balancer::savedVon)
                c = 'B';
            else
                c = 'b';
        }

        if (::Balancer::balance == 0) {
            lcdPrintChar(c);
#ifdef ENABLE_SCREEN_KNIGHTRIDEREFFECT
            char knightRiderArrow;
            if (knightRiderDir > 0) knightRiderArrow='>'; else knightRiderArrow='<';
            if ((c == 'm') || (c == ' ')) {
                for (uint8_t i=0; i<6; i++ ) {
                    if (knightRiderCounter==i) lcdPrintChar(knightRiderArrow);
                    else lcdPrintChar(' ');
                }
                lcdPrintChar(' ');
            } else {
                lcdPrintSpaces(7);
            }
#else
        lcdPrintSpaces(7);
#endif
        } else {
            uint16_t cell = 1;
            for(uint8_t i = 0; i < MAX_BALANCE_CELLS; i++) {
                if(AnalogInputs::connectedBalancePortCells & cell) {
                    if(i == ::Balancer::minCell) {
                        c = SCREEN_EMPTY_CELL_CHAR; //lowest cell
                    } else {
                        if(::Balancer::balance & cell) {
                            if (Blink::blinkTime_ & 1) {
                                c = SCREEN_FULL_CELL_CHAR; //flash full/empty cells
                            } else {
                                c = SCREEN_EMPTY_CELL_CHAR; //flash full/empty cells
                            }
                        } else {
                         c = SCREEN_AVR_CELL_CHAR; //average cells
                        }
                    }
                } else {
                    c = ' ';
                }
                lcdPrintChar(c);
                cell <<= 1;
            }
            lcdPrintSpaces(8 - MAX_BALANCE_CELLS);
        }
        printBalancer(from++, type);
        lcdPrintSpaces();

        lcdSetCursor0_1();
        printBalancer(from++, type);
        printBalancer(from++, type);
        lcdPrintSpaces();
    }
Пример #24
0
void Screen::displayStrings(const char *s1, const char *s2)
{
    lcdSetCursor0_0(); lcdPrint_P(s1);
    lcdSetCursor0_1(); lcdPrint_P(s2);
}