TM1637 и Iskra JS - реально? Да.

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Mlex, 29 янв 2018.

Метки:
  1. Mlex

    Mlex Нерд

    Всем привет, собственно вопрос: как управлять модулем TM1637 с Iskra JS?
    Я обгуглился - но не нашел модуля под искру на js, только CPP или Python. Попытки переписать с этих языков на js - так же не увенчились успехом(да, я знаю - это из за не понимания и недостатка опыта).

    Откуда пытался переписать на js:
    модуль на питоне
    модуль на c++
    datasheet

    Что удалось написать - м.б. кто то посмотрит и скажет что не так
    Код (Javascript):
    var C = {
      I2C_COMM1: 0x40,
      I2C_COMM2: 0xC0,
      I2C_COMM3: 0x80,
      PIN_INPUT: 'input',
      PIN_OUTPUT: 'output',
    };

    var codigitToSegment = [
    // XGFEDCBA
      0b00111111,    // 0
      0b00000110,    // 1
      0b01011011,    // 2
      0b01001111,    // 3
      0b01100110,    // 4
      0b01101101,    // 5
      0b01111101,    // 6
      0b00000111,    // 7
      0b01111111,    // 8
      0b01101111,    // 9
      0b01110111,    // A
      0b01111100,    // b
      0b00111001,    // C
      0b01011110,    // d
      0b01111001,    // E
      0b01110001     // F
    ];


    var TM1637 = function(pinClk, pinDIO){
      this.pinClk = pinClk;
      this.pinDIO = pinDIO;

      this.pinClk.mode(C.PIN_OUTPUT);
      this.pinDIO.mode(C.PIN_OUTPUT);
      digitalWrite([this.pinClk, this.pinDIO]);
    };

    TM1637.prototype.bit_delay = function(cb){
      setTimeout(cb, 0.001);
    };

    TM1637.prototype.start = function(cb){
      this.pinDIO.mode(C.PIN_OUTPUT);
      this.bit_delay(cb);
    };

    TM1637.prototype.stop = function(cb){
      this.pinDIO.mode(C.PIN_OUTPUT);
      this.bit_delay(function(){
        this.pinClk.mode(C.PIN_INPUT);
        this.bit_delay(function(){
          this.pinDIO.mode(C.PIN_INPUT);
          this.bit_delay(cb);
        });
      });
    };

    TM1637.prototype.writeBit = function(value){
      this.pinClk.reset();

      if (value) {
          this.pinDIO.set();
        } else {
          this.pinDIO.reset();
        }

      this.pinClk.set();

      if(LED1.read()){
        LED1.reset();
      }else{
        LED1.set();
      }
    };

    TM1637.prototype.writeByte = function(byte) {
      for (let i = 0; i < 8; i++) {

        this.pinClk.mode(C.PIN_OUTPUT);
        this.bit_delay(function(){
          this.pinDIO.mode( (byte && 0x01) ? C.PIN_INPUT : c.PIN_OUTPUT);
        });

        byte >>= 1;
      }
    };
    Вот как выглядить модуль:
    [​IMG]

    Заранее всем огромное спасибо за любую помощь.
     
    Последнее редактирование: 29 янв 2018
  2. Mlex

    Mlex Нерд

    В общем удалось таки завести дисплей на Iskra JS.
    Вот модуль если кому надо: https://github.com/xMlex/TM1637

    [​IMG]
     
    sys и arkadyf нравится это.
  3. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Что-то затупил. Не работает. Пишет ошибки.

    Снимок.PNG