16x2 Oregon THN

Тема в разделе "Arduino & Shields", создана пользователем Максим B, 26 янв 2016.

  1. Максим B

    Максим B Гуру

    В идеале как в этом архиве, цифры -22.2 - знак градуса не получиться вывести ,т.к. мест нет под свободыне символы, точка будет в том месте, после точки 1 знак
     

    Вложения:

    • 16x2.zip
      Размер файла:
      17,7 КБ
      Просмотров:
      80
  2. lerik2703

    lerik2703 Оракул

    а?
    Код (C++):
    byte block[8] =
    {
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111,
      B11111
    };
    по сути это закрашенный квадратик (который если память не изменяет,присутствует во всех кодовый страницах встроенного знакогенератора) и для чего он нужен не ясно...
    последний символ обрезается?
     
  3. Максим B

    Максим B Гуру

  4. Максим B

    Максим B Гуру

    Спасибо за наводку- уже исправил
     
  5. lerik2703

    lerik2703 Оракул

    логически рассчитать положение курсора (иходя из .xlsx)
    Код (C++):
    byte SetCuror(int a, int MinusFind, byte lenString) {

      int var = (lenString - 3) + MinusFind;

      if  (!var or var == 2)
        return  (a) <= (1) ? (7) : (11);
      else
        return (a) <= (!(MinusFind)) ? (3) : ((a) <= (2) ? (7) : (11));


    }
    ещё в блок расклада строки добавить
    Код (C++):
    int MinusFind = floatToString.indexOf("-");
    вызов функции
    Код (C++):

        for (int a = 0; (lenString - 1) > a; a++) {
          if (charBuf[a] == '-')
            printDigits(MINUS, 0);
          else if (charBuf[a] == '.')
            printDigits(POINT, 10);
          else {
            printDigits((int)(charBuf[a] - '0'), SetCuror(a, MinusFind, lenString));
          }
        }
     
     
    Последнее редактирование: 30 янв 2016
    Максим B нравится это.
  6. Максим B

    Максим B Гуру

    Добавил условие затирания 1-й цифры (вручную), но не хочет, т.е. если было -15,0 - стало -5,0 -то 1 остается, а у меняпо условию должна быть удалена. И с + также - где я не прав?

    Код (Text):

     for (int a = 0; (lenString - 1) > a; a++) {
          if (charBuf[a] == '-')
            printDigits(10, 0);
          else if (charBuf[a] == '.')
            printDigits(11, 10);
          else
            printDigits((int)(charBuf[a] - '0'), SetCuror(a, MinusFind, lenString));


            if ((charBuf[a]<0) && (charBuf[a]>-10)) printDigits(13, 3);
            else
             if ((charBuf[a]>0) && (charBuf[a]<10)) printDigits(13, 3);    // удалить
         
        }
       
       
        }
     
     
  7. Максим B

    Максим B Гуру

    Еще 1 вариан - то просто затирать дисплей каждые 30 мс.
     
  8. lerik2703

    lerik2703 Оракул

    идея по сути верная но в цикле она не может быть реализована!
    можно и так ну или очищать дисплей при поступлении новой информации
     
    Максим B нравится это.