йодо задание 15 ультразвуковая линейка.

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем prosha/programer, 2 янв 2017.

  1. как в №15 выполнить задание:
    В проект кнопку добавь. На экране до следующего клика показание нажмите её пусть заморозит.
     
  2. Jeremy Blum

    Jeremy Blum Нерд

    Читайте пояснения к кодам предыдущих проектов и всё поймёте
     
    RGB-светодиод нравится это.
  3. там нечего полезного я не нашёл
     
  4. Jeremy Blum

    Jeremy Blum Нерд

    Тогда просто не делайте это задание
     
    RGB-светодиод нравится это.
  5. blackbars1408

    blackbars1408 Нерд

    почитайте это:http://wiki.amperka.ru/js:start
    там есть в разделе "встроенные функции и константы" прекрасная функция - clearInterval();
    попробуйте с ней что-нибудь сделать.
    (допустим, при нажатии кнопки останавливать функцию setInterval(); )
     
  6. Малика

    Малика Нуб

    Код (Javascript):
    var sonic = require('@amperka/ultrasonic')
    .connect({trigPin: P10, echoPin: P11});

    var button = require('@amperka/button')
    .connect(P3);

    var mes = true;

    setInterval(function() {
      button.on ('press', function () {
      mes = !mes;
      });
      if (mes) {
       sonic.ping(function (err,val) {
          if (err) {
            console.log(err.msg);
          } else {
            console.log(val.toFixed(0),'mm');
          }
       },'mm');
      }
    },100);
     
    ejdme нравится это.
  7. Vizzerdrix

    Vizzerdrix Нуб

    Код (Java):
    var sonic = require('@amperka/ultrasonic')
      .connect({trigPin: P10, echoPin: P11});

    var button = require('@amperka/button').connect(P1);

    var count = 0;

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

    button.on('press', pressButton);

    if (count === 0)
    {
    setInterval(function() {
      sonic.ping(function(err, val)
       {
        if (err) {
          console.log(err.msg);
        } else {
          console.log(val.toFixed(0), 'mm');
        }
      }, 'mm');
      }, 1000);
     
    }

    if (count === 1)
      {
      clearInterval();
      }
     
    Такая же проблема, не могу разобраться как остановить функцию setInterval. Помогите пожалуйста
     
  8. Vizzerdrix

    Vizzerdrix Нуб

    Скрин, где переменной count должно выполняться то или иное условие
     

    Вложения:

    • 15.PNG
      15.PNG
      Размер файла:
      95,7 КБ
      Просмотров:
      605
  9. Mitrandir

    Mitrandir Гуру

    Метод setInterval имеет синтаксис, аналогичный setTimeout.

    var timerId = setInterval(func / code, delay[, arg1, arg2...])
    Смысл аргументов – тот же самый. Но, в отличие от setTimeout, он запускает выполнение функции не один раз, а регулярно повторяет её через указанный интервал времени. Остановить исполнение можно вызовом clearInterval(timerId).
     
    Vizzerdrix, ИгорьК и arkadyf нравится это.
  10. ИгорьК

    ИгорьК Гуру

    Фгасе! Откуда эти тайные знания? Этого не может быть!
     
    Mitrandir нравится это.
  11. Mitrandir

    Mitrandir Гуру

    Это тайные знания секретного ордена.
     
  12. Vizzerdrix

    Vizzerdrix Нуб

    Код (Java):
    var sonic = require('@amperka/ultrasonic')
      .connect({trigPin: P10, echoPin: P11});

    var button = require('@amperka/button').connect(P1);

    var count = 0;

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

    button.on('press', pressButton);

    if (count === 0)
    {
    var xx = setInterval(function() {
      sonic.ping(function(err, val)
       {
        if (err) {
          console.log(err.msg);
        } else {
          console.log(val.toFixed(0), 'mm');
        }
      }, 'mm');
      }, 1000);
     
      if (count === 1) {
      clearInterval(xx);
      }
    }
    Мне кажется, что я так и делаю? Сейчас задал переменную для setInterval с именем xx. Если кнопка срабатывает, счетчик переключается в 1 и должна выполняться функция clearInterval(xx); Но это не помогает, лог продолжает бежать..
     
  13. ИгорьК

    ИгорьК Гуру

    Крестись...
    upload_2018-7-10_17-9-16.png
     
  14. Vizzerdrix

    Vizzerdrix Нуб

    15_1.PNG

    ИгорьК, я сделал вот так, но результат такой же.. Что я не так делаю?
     
  15. Mitrandir

    Mitrandir Гуру

    *facepalm*
     
    Vizzerdrix нравится это.
  16. Mitrandir

    Mitrandir Гуру

    Хз сделать глобальным

    if(count ===1){
    clearInterval(xx);
    }
    Перенести в обработчик кнопки

    В вашем исполнении
    if(count ===1){
    clearInterval(xx);
    } Никогда не выполнится
     
  17. ИгорьК

    ИгорьК Гуру

    Не понимаешь сути программирования на JS, полагаю.
    Не читал книг, думаю. Того же Вахтурова.

    Там прочитать первую главу - и уже молоток.
    upload_2018-7-10_17-29-42.png
     
    Последнее редактирование: 10 июл 2018
  18. Mitrandir

    Mitrandir Гуру

    Не вкурсе какую версию js искра поддерживает?

    ES8 тянет?
     
  19. ИгорьК

    ИгорьК Гуру

    Да вроде ES-2015 почти все, промисы - точно.
     
    Mitrandir нравится это.
  20. Vizzerdrix

    Vizzerdrix Нуб

    Так и есть. Спасибо, изучу!