<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Библиотека ESP32_TM1637_4LED]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=434&amp;type=atom" />
	<updated>2022-01-04T10:30:07Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=434</id>
		<entry>
			<title type="html"><![CDATA[Библиотека ESP32_TM1637_4LED]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=5021#p5021" />
			<content type="html"><![CDATA[<p><span class="attention-yellow"></span> </p><br /><p>ESP32_TM1637_4LED.h</p><div class="codebox"><pre><code>//  ESP32_TM1637_4LED
//  Alexander Liman
//  liman324@yandex.ru
//  rcl-radio.ru

#ifndef  ESP32_TM1637_4LED_H
#define  ESP32_TM1637_4LED_H

#include &lt;Arduino.h&gt;

#define CODE0    0b10001000
#define CODE1    0x40
#define ADDR0    0xC0

class  ESP32_TM1637_4LED
  {
    public:

  ESP32_TM1637_4LED(uint8_t, uint8_t);
  void print(int t, byte pd_t,   int h0, int h1, int h2, int h3);
  void brig(byte br);
  
    private:
  
  void dec(byte dig);
  void stop();
  void start();
  void del();
  byte qwer;
  uint8_t DIO;
  uint8_t CLK;
  };
#endif</code></pre></div><p>ESP32_TM1637_4LED.cpp</p><div class="codebox"><pre><code>#include &lt;ESP32_TM1637_4LED.h&gt;

ESP32_TM1637_4LED::ESP32_TM1637_4LED(uint8_t clk, uint8_t dio){
         CLK = clk;
         DIO = dio;
};

void ESP32_TM1637_4LED::brig(byte br){
     qwer = br + CODE0;
  }

void ESP32_TM1637_4LED::del(){delayMicroseconds(100);}


void ESP32_TM1637_4LED::dec(byte dig){
       for(int i = 0; i &lt; 8; i++) {
         pinMode(CLK,OUTPUT);del();
       if (dig &amp; 0x01)
         pinMode(DIO,INPUT);
       else
         pinMode(DIO,OUTPUT);del();
         pinMode(CLK,INPUT);del();
         dig = dig &gt;&gt; 1;
  }
         pinMode(CLK,OUTPUT);
         pinMode(DIO,INPUT);del();
         pinMode(CLK,INPUT);del();

       
       if (digitalRead(DIO) == 0)
         pinMode(DIO,OUTPUT);del();
         pinMode(CLK,OUTPUT);del();
  }
            
void ESP32_TM1637_4LED::stop(){
         pinMode(DIO,OUTPUT);del();
         pinMode(CLK,INPUT);del();
         pinMode(DIO,INPUT);del();
  }  

void ESP32_TM1637_4LED::start(){
         pinMode(DIO,OUTPUT);del();
  }


void ESP32_TM1637_4LED::print(int t, byte pd_t,   int h0, int h1, int h2, int h3){
        start();dec(qwer);stop();start();
        dec(CODE1);stop();start();
 
        int data0 = t / 1000 % 10;
        int data1 = t / 100 % 10;
        int data2 = t / 10 % 10;
        int data3 = t % 10;
 
      for(byte n = 0; n &lt; 4; n++){
        int data;
      switch(n){
        case 0: data = data0;break;
        case 1: data = data1;break;
        case 2: data = data2;break;
        case 3: data = data3;break;
        }
 
      switch(data){    // XGFEDCBA
        case 0:  data = 0b00111111;break;     // 0
        case 1:  data = 0b00000110;break;     // 1
        case 2:  data = 0b01011011;break;     // 2
        case 3:  data = 0b01001111;break;     // 3
        case 4:  data = 0b01100110;break;     // 4
        case 5:  data = 0b01101101;break;     // 5
        case 6:  data = 0b01111101;break;     // 6
        case 7:  data = 0b00000111;break;     // 7
        case 8:  data = 0b01111111;break;     // 8
        case 9:  data = 0b01101111;break;     // 9
        }
 
        if(n == 0){data0 = data;}
        if(n == 1){data1 = data;}
        if(n == 2){data2 = data;}
        if(n == 3){data3 = data;}
        }
      switch(pd_t){
        case 1 : data2 = data2+0b10000000;break;
        case 2 : data1 = data1+0b10000000;break;
        case 3 : data0 = data0+0b10000000;break;
        }
        if(h0&gt;=0){data0 = h0;}
        if(h1&gt;=0){data1 = h1;}
        if(h2&gt;=0){data2 = h2;}
        if(h3&gt;=0){data3 = h3;}
      dec(0xC0);dec(data0);dec(data1);dec(data2);dec(data3);stop();
}  </code></pre></div><p>test.ino</p><div class="codebox"><pre><code>#include &lt;ESP32_TM1637_4LED.h&gt;
  ESP32_TM1637_4LED  tm(12,13);// CLK, DIO

void setup() {
  delay(100);
  tm.brig(7); // яркость 0...7
  
}

void loop() {
  tm.print(100,0,  0b01111000,-1,-1,-1);
  delay(100);

}</code></pre></div><p>tm.print(x, dp,&nbsp; &nbsp; h0, h1, h2, h3);<br />x — число от 0 до 9999<br />dp — положение запятой от 0 до 3<br />h0-h3 — замена цифры на символ<br />h0-h3 = -1 замена цифры не происходит</p> <br /><br /><p>Для замены цифры символом можно использовать следующие значения:<br />0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp; (пусто)<br />0b01000000&nbsp; // — (минус)<br />0b01110111&nbsp; &nbsp;// A<br />0b01111100&nbsp; &nbsp;// b<br />0b00111001&nbsp; // C<br />0b01011110&nbsp; // d<br />0b01111001&nbsp; // E<br />0b01110001&nbsp; // F<br />0b01111000&nbsp; // t<br />0b01110011&nbsp; // P</p><p>****************************<br />XGFEDCBA<br />0b00000000</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2022/01/7649cff9e1cb48cee7ef17c8980aca12.png" alt="http://forum.rcl-radio.ru/uploads/images/2022/01/7649cff9e1cb48cee7ef17c8980aca12.png" /></span></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-01-04T10:30:07Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=5021#p5021</id>
		</entry>
</feed>
