• Существует ли 1-wire датчик влажности воздуха?

    Так влажности или давления?
    Для влажности есть DS1923. А вообще, никто не не мешает поставить I2C-датчик и подключить его в через мост I2C <-> 1-wire DS2482
    Ответ написан
    Комментировать
  • Поясните, что за магия происходит в этом коде?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ничего "магического" в программировании не бывает:
    В данном случае, вы столкнулись с работой оптимизатора. Оптимизатор, видя что в переменной now особого смысла нет, не стал ее создавать, а банально передал в sprintf то, что получил от процедуры RX (а RX наверняка выдает int).

    Если же вы раскомментируете TX, оптимизатор не сможет выкинуть переменную, выполнит преобразование в тип char и вы получите верный результат.

    Решение: sprintf для перевода байта в шестнадцатиричную строку - выстрел из пушки по воробью:
    unsigned char toAlf(unsigned char c)
    {
          if(c<10)
          {
              return(c+'0');
          }
          return(c-10+'A');
    }
    ...
    char[0]=toAlf(now>>4);
    char[1]=toAlf(now&0x0F);
    Ответ написан
    8 комментариев
  • Почему я получаю 2 лишних нуля?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Два бага сразу:
    Лишняя итерация цикла:
    for(i=0;i<=8;i++){
    i или должна быть <8 или <=7
    Не использован модификатор длины:
    sprintf (ch1, "0x%X", temporary[i]);
    Исправление:
    sprintf (ch1, "0x%2X", temporary[i]);
    Ответ написан
    Комментировать