Работа с переменными

Тема в разделе "Arduino & Shields", создана пользователем arssev1, 21 дек 2017.

  1. arssev1

    arssev1 Гик

    Помогите с кодом
    Есть числа типа
    int hours = 9;
    int minutes = 7;
    как из этого получить long time = 09.07;
     
  2. DIYMan

    DIYMan Guest

    Во-первых, long - целочисленный тип, и 09.07 вы никак из него не получите. Во-вторых, подозреваю, что вам надо вывести эти числа в виде строки, на дисплей, например. Тогда так:

    Код (C++):
    String formatTime(uint8_t hours, uint8_t minutes)
    {
        String result;
     
        if(hours < 10)
            result += '0';
        result += hours;
     
        result += ':';
     
        if(minutes < 10)
            result += '0';
     
        result += minutes;
     
        return result;
    }

    void setup()
    {
        Serial.begin(9600);
        Serial.println(formatTime(9,7));
    }

    void loop()
    {
     
    }
     
  3. arssev1

    arssev1 Гик

    Спасибо, но проблема в том, что на QuadDisplay так не вывести информацию, там слишком скудная библиотека для такого...
     
  4. DIYMan

    DIYMan Guest

    Так что вам надо? Если во float, а не в long перевести два числа - это же арифметика простая:
    Код (C++):
    float time = hours + minutes/100;
     
  5. DIYMan

    DIYMan Guest

    Если же надо выводить куда-то, без использования всяких String и пр. - то это тоже банальная арифметика:
    Код (C++):

    void sendDigitToDisplay(int digit)
    {
        // тут отображаете переданное число
    }

    void showTime(int hours, int minutes)
    {
            if(hours < 10)
                sendDigitToDisplay(0);
            sendDigitToDisplay(hours);
           
            if(minutes < 10)
                sendDigitToDisplay(0);
           
            sendDigitToDisplay(minutes);
    }
     
  6. b707

    b707 Гуру

    не пишите ерунды, вам показывают, как вывести в виде символов - это умеет любой дисплей....
     
  7. arssev1

    arssev1 Гик

    Ну-ну, он умеет выводить только float и int
     
  8. b707

    b707 Гуру

    Прежде чем писать "ну-ну" - заглянули бы в бибилиртеку QuadDisplay.
    Функция
    void QuadDisplay::displayScore(int hour, int minute, bool blink)
    делает ровно то, что вы хотите - выводит часы с минутами, дополняя их спереди нулями, если нужно.

    Нафига писать в конференции., не разобравшись в крохотной либе с пятком функций? или только вопросы задавать умееете, а думать кто-то другой должен?
     
    arssev1 и DIYMan нравится это.
  9. arssev1

    arssev1 Гик

    Действительно, моя вина :(
    Нужно было решить проблему, времени не много было. Но спасибо, очень выручили...