ОШИБКА ERROR: Out of Memory!

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем AlexeyDurow, 25 фев 2018.

Метки:
  1. AlexeyDurow

    AlexeyDurow Нуб

    Здравствуйте!Помогите пожалуйста нубу...
    Через 40 секунд после работы в консоль прилетает:
    ERROR: Out of Memory!
    WARNING: Out of memory while appending to array
    ERROR: Ctrl-C while processing interval - removing it.
    Execution Interrupted during event processing.
    at line 1 col 631
    ...ut")))},C.MAX_ROUNDTRIP_MS),digitalPulse(c._trigPin,1,.01),t...
    ^
    in function "ping" called from line 11 col 10
    },'mm');
    ^
    in function called from system
    ERROR: Ctrl-C while processing interval - removing it.
    Execution Interrupted during event processing.
    at line 2 col 20
    serERROR: Ctrl-C while processing interval - removing it.
    Execution Interrupted during event processing.
    at line 3 col 4
    });
    ^
    in func>

    Код:
    Код (Javascript):
    var servo = require('@amperka/servo')
      .connect(P13);

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

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


    var pot = require('@amperka/pot')
    .connect(A0);

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

    var ir = require('@amperka/ir-receiver').connect(P7);


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





    var buzzer = require('@amperka/buzzer')
    .connect(P5);
    var sensor = require('@amperka/light-sensor')
    .connect(A2);




    var mes = true;
    var lx = sensor.read('lx').toFixed(0);

    setInterval(function() {
      ir.on ('receive', 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);

    setInterval(function() {
      ir.on ('receive', function () {
      mes = !mes;
      });
      if (!mes) {
       sonic.ping(function (err,val) {
          if (err) {
            console.log(err.msg);
          } else {
            console.log(lx,'lx');
          }
       },'lx');
      }
    },100);


    setInterval(function() {
      var angle = 180 * pot.read();
      servo.write(angle);
    }, 10);
     
     
  2. sys

    sys Злобный Буратино Модератор

    Советую Вам самим еще раз внимательно просмотреть свой код от начала и до конца. Ибо видна каша недокорректированного копипаста... А лучше всего если Вы вооружившись карандашом попробуете воспроизвести алгоритм на бумаге...

    ir.on() уберите из интервальных циклов и сделайте его одним отдельным обработчиком.

    Ну коль начал, то... Два интервала объедините в один...