Режим глубокого сна iskra js

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Vitaliy-Sh, 19 мар 2020.

  1. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Сделал программку, которая раз в пять минут (setInterval) выводит на десять секунд температуру на экран и по wi-fi отправляет температуру на dweet и через десять секунд отрубает экран (setTimeout запускает отключение экрана).

    В начале программы прописал setDeepSleep(true) включение режима глубокого сна.
    Для контроля прописал setSleepIndicator(P8); При работе выдает 1 на P8, при сне выдает 0.

    При выводе информации загорается светодиод на P8. Потом прога должна заснуть наверное, и через десять секунд как положено экран гаснет, и должен при переходе в сон светодиод гаснуть, но он начинает тускло и часто мигать. Что это может быть такое?

    Код (Javascript):
    I2C1.setup({scl:SCL, sda:SDA});

    var SSID = 'AP_name';
    var PASSWORD = 'xxxxxxxx';
    var NAME = 'Amperka';

    var dweet = require('@amperka/dweetio').connect(NAME);

    var mySensor = require('@amperka/thermometer').connect(A4);

    function start(){
      screen.off();
      screen.clear();
      screen.setFontVector(16);
    }

    var screen = require("SSD1306").connect(I2C1, start, { height : 32, width : 128, contrast : 0});

    setDeepSleep(true);

    function run() {
    setInterval(function() {

      digitalPulse(P9, 1, 5000);
      setSleepIndicator(P8);
     
      screen.clear();

      screen.drawString('Temp: ' + mySensor.read('C').toFixed(0) + ' C', 10, 8);

      screen.flip();
      screen.on();
       
      dweet.send({
        dom: mySensor.read('C').toFixed(0)
      });

      setTimeout("screen.off()", 10000);

    } ,300000);
    }

    var wifi = require('@amperka/wifi').setup(function(err) {
      wifi.connect(SSID, PASSWORD, function(err) {
        print('Click this link', dweet.follow());
        run();
      });
    });
     
     
  2. Daniil

    Daniil Гуру

    А во сне можно управлять выводами? Не знаком с этой искрой, поэтому рекомендую в даташите узнать какие есть режимы сна и где там gpio. И узнать нужно - какой режим сна включается вашей командой.
    Тускло горит, т.к. может быть такой вариант: все выводы переходят в некоторое состояние и через какие-нибудь "утечки" ток доползает до светодиода.
     
  3. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Вот описание команд

    setDeepSleep(enable)
    Если enable — true, разрешает режим глубокого сна, когда микроконтроллеру нечем заняться.

    setSleepIndicator([pin])
    Заставляет платформу подавать логический ноль на пин pin, когда она находится в режиме сна и логическую единицу в обычном режиме.

    Не передавайте параметр pin, чтобы отключить это поведение.

    Даташит поищу. У меня там еще светодиод подключен, но он не мерцает.
     
    Последнее редактирование: 19 мар 2020
  4. Daniil

    Daniil Гуру

    Вот тут почитайте. (англ).
    У искры есть 3 режима: рабочий, сон и глубокий сон.
    В глубоком сне (вы его включаете):
    т.е. все gpio отключаются.
    Причем, если вы включаете индикатор сна, то он сигнализирует только о том, что искра НЕ спит.
    т.е. либо так и предполагалась работа, либо что-то еще.
     
  5. parovoZZ

    parovoZZ Гуру

    Перевёл пин в ноль и заснул. Так делают все МК.