#include <TM1637.h>
#include "TM1637Display.h"
#include <Arduino.h>


int CLK = 2;
int DIO = 3;

TM1637Display display(CLK,DIO);

const uint8_t line_to_print[] = {B00000000, B01100111, B00111110,
                       B01111001, B00111110, B01111001,
                       B00000000, B01110001, B00111110,
                       B00111000, B00111000};



void task1()
{
  int _delay = 100;
  int step = 1;
  int len = 0;
  bool sign;
  for(int i = -100; i <= 100; i+=step)
  {
    sign = i < 0 ? true: false;
    int abs_i = abs(i);
    
    if (abs_i == 100)
      len = 3;
    else if ( abs_i < 100 && abs_i > 9)
      len = 2;
    else if ( abs_i < 10 && abs_i >= 0)
      len = 1;
    
    len += sign;
    display.showNumberDec(i, false, len, 0);
    delay(_delay);
    display.clear();
  }
}


void task2()
{
  int _delay = 500;
  int whole, decimal, temp;
  float step = 0.25;
  bool sign;
  uint8_t minus[] = {0b01000000};

  for(float i = -3; i <= 3; i+=step)
  {
    sign = i < 0 ? true: false;
    temp = abs(i) * 100;
    whole = temp / 100;
    decimal = temp % 100;
   
    if(sign)
      display.setSegments(minus, 1, 0);
    
    display.showNumberDec(whole, false, 1, 1);
    display.showNumberDecEx(decimal, 0b01000000, true, 2, 2);
    
    delay(_delay);
    display.clear();
  }
}


void task3(uint8_t * str, size_t size)
{
  int _delay = 800;
  int i = 0;
  while(true)
  {
    display.setSegments(&str[i], 1, 0);
    display.setSegments(&str[(i + 1) % size], 1, 1);
    display.setSegments(&str[(i + 2) % size], 1, 2);
    display.setSegments(&str[(i + 3) % size], 1, 3);
    
    i = ( i + 1 ) % size;
    delay(_delay);
  }
}


void setup() {
  display.setBrightness(0xff);
  //task1();
  task2();
  //task3(line_to_print, 11);  
}

void loop() { 
}
4-Digit Display