Задание HTML-Термометр (N°14) [РЕШЕНО]

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Swordific, 13 май 2017.

  1. Swordific

    Swordific Нуб

    Здравствуйте,
    Дошёл до 14 проекта (HTML-Термометр) на Йодо но не смог сделать задание (менять единицы измерения с градусов Цельсия на градусы Фаренгейта и Кельвина с помощью кнопки), получился такой код (он не рабочий и без Кельвинов):

    Код (Javascript):
    var btn = require('@amperka/button').connect(P0);
    var thr = require('@amperka/thermometer').connect(A0);
    var temp = false;

    function celsius() {

    setInterval(function() {
      var c = thr.read('C');
       console.log(
        '<div style="font-size: 0.5em">',
        'Температура',
        '</div>',
        c.toFixed(1),
        '°C'
        );
    }, 1000);
    }

    function fahr() {
      var fahr = thr.read('C') * 9/5 + 32;
     
      console.log(
        '<div style="font-size: 0.5em">',
        'Температура',
        '</div>',
        fahr.toFixed(1),
        '°F'
        );
      setInterval(fahr, 1000);
    }
     

    function inv() {
      temp = !temp;
    }

    btn.on('release', inv);

    if (temp) {
      clearInterval();
      fahr();
    } else {
      clearInterval();
      celsius();
    }
    Хотел бы узнать как всё таки это сделать.
    Заранее Спасибо.

    P.S.: Я новичок поэтому прошу строго не судить за ошибки и тупость))
     
  2. Mihay

    Mihay Гик

    Код (C++):

    var termo = require('@amperka/thermometer').connect(A2);
    var button = require('@amperka/button').connect(P2);

    var count = 0;

    function pressButton()
    {
      count++;
      if (count>2) count = 0;
    }

    button.on('press', pressButton);

    function temp()
    {
      var celsius = termo.read('C');
      if (count == 0)
      {
      console.log(
      '<div style="font-size: 0.5em">',
      'Температатура',
      '</div>', celsius.toFixed(1), 'C');
      }  
      if (count == 1)
      {
      console.log(
      '<div style="font-size: 0.5em">',
      'Температатура',
      '</div>', (celsius+273).toFixed(1), 'K');
      }  
      if (count == 2)
      {
      console.log(
      '<div style="font-size: 0.5em">',
      'Температатура',
      '</div>', (celsius*9/5+32).toFixed(1), 'Ф');
      }  

    }

    setInterval(temp, 1000);
     
     
    Kirill080808080808080, Error407, sys и ещё 1-му нравится это.
  3. Mihay

    Mihay Гик

    Внимательно смотри на переключение кнопки.... она скажет сама за себя
     
    AlexeyQuartz и Swordific нравится это.
  4. Swordific

    Swordific Нуб

    Спасибо огромное, не додумался))
     
  5. Добрый вечер!
    Подскажите пожалуйста два вопроса.
    1. Почему вместо Температура выводится цифры и буквы?
    2. Почему температура измерения ровна 96.1С? Схему собрал при обычной комнатной температуре.
     

    Вложения:

  6. AlexeyQuartz

    AlexeyQuartz Нуб

    Всем привет!
    Я совсем не знаю JS, но решил начать учить его с помощью Йодо. Столкнулся с тем, что о многих функциях просто не знаю. Например вот это решение...
    Код (Javascript):
    {
      count++;
      if (count>2) count = 0;
    }
    ... в самой книге отсутствует описание таких функций как "++" и о них не удается догадаться, а самостоятельные поиски ничего не дают. Приходится подсматривать именно на форуме готовые решения.
    Код понятен, мысль ясна. Но сам бы до такого не додумался, потому что не знал о подобной возможности решения и опираюсь на тот материал что встречаю в книге.

    Вопрос знатокам — Куда подсматривать за различными выражениями и возможностями JS чтобы самостоятельно решать подобные задачки?
     
    Последнее редактирование: 12 апр 2019
  7. В учебник по js, очевидно. И не подсматривать, а читать от корки до корки
     
    AlexeyQuartz нравится это.
  8. ИгорьК

    ИгорьК Гуру

  9. AlexeyQuartz

    AlexeyQuartz Нуб

    Спасибо!
     
  10. wildblack

    wildblack Нуб

    если пользоваться материалами по книге, то данное выражение будет выглядеть как:
    count = (count + 1) % 3
    т.е. он будет прибавлять единицу и брать ответ по модулю 3 (брать остаток от деления на 3). об этом написано в 6 и 7 заданиях.