/*
  oneDisplayExample.ino - Example file to demonstrate TM74HC595LedTube class use with a single display
  Created by Gabriel D. Goldman, May, 2023.
  Updated by Gabriel D. Goldman, October, 2023.
  Released into the public domain in accordance with "GPL-3.0-or-later" license terms.
*/
#include <Arduino.h>
#include <FourBitLedDigitalTube.h>

// Pin connected to DS of 74HC595 AKA DIO
const uint8_t dio8 {A3}; // // Board pin # of Arduino Nano dev Board
// Pin connected to ST_CP of 74HC595 AKA RCLK
const uint8_t rclk8 {A4}; // Board pin # of Arduino Nano dev Board
// Pin connected to SH_CP of 74HC595 AKA SCLK
const uint8_t sclk8 {A5}; // Board pin # of Arduino Nano dev Board

//Set of variables and constants needed just for Demo purposes
bool testResult{false};

//Display instance creation
// Creating the instance of the display, the only parameters needed are
// the pins that will be connected to the display module, usually marked as:
// SCLK
// RCLK
// DIO
TM74HC595LedTube myLedDisp8(sclk8, rclk8, dio8, true, 8);

uint8_t diyMore8Bits[8] {3, 2, 1, 0, 7, 6, 5, 4};
uint8_t standard[8] {0, 1, 2, 3, 4, 5, 6, 7};
bool sortedToggle{false};


void setup(){
//FTPO
// myLedDisp8.setDigitsOrder(diyMore8Bits);  //Sort to the DIY More (R) wiring
myLedDisp8.setDigitsOrder(standard);
myLedDisp8.begin();
}

void loop(){
  myLedDisp8.clear();
  delay(1000);

  testResult = myLedDisp8.print("0.");
  delay(1000);

  testResult = myLedDisp8.print("0.1.");
  delay(1000);

  testResult = myLedDisp8.print("0.1.2.");
  delay(1000);

  testResult = myLedDisp8.blink();
  testResult = myLedDisp8.print("0.1.2.3.");
  delay(1000);

  testResult = myLedDisp8.print("0.1.2.3.4.");
  delay(1000);

  testResult = myLedDisp8.noBlink ();
  testResult = myLedDisp8.print("0.1.2.3.4.5.");
  delay(1000);

  testResult = myLedDisp8.print("0.1.2.3.4.5.6.");
  delay(1000);

  testResult = myLedDisp8.print("0.1.2.3.4.5.6.7.");
  delay(1000);

  myLedDisp8.clear();
  testResult = myLedDisp8.wait();
  delay(5000);
  testResult = myLedDisp8.noWait();

  testResult = myLedDisp8.print("reSettin");
  delay(1000);

  sortedToggle = !sortedToggle;
  if(sortedToggle)
    myLedDisp8.setDigitsOrder(diyMore8Bits);  //Sort to the DIY More (R) wiring
  else
    myLedDisp8.setDigitsOrder(standard);  ////Sort to the more usual right to left wiring
}

nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg1:DIG1
sevseg1:DIG2
sevseg1:DIG3
sevseg1:DIG4
sevseg1:COM
sevseg1:CLN
74HC595
sr1:Q1
sr1:Q2
sr1:Q3
sr1:Q4
sr1:Q5
sr1:Q6
sr1:Q7
sr1:GND
sr1:Q7S
sr1:MR
sr1:SHCP
sr1:STCP
sr1:OE
sr1:DS
sr1:Q0
sr1:VCC
74HC595
sr2:Q1
sr2:Q2
sr2:Q3
sr2:Q4
sr2:Q5
sr2:Q6
sr2:Q7
sr2:GND
sr2:Q7S
sr2:MR
sr2:SHCP
sr2:STCP
sr2:OE
sr2:DS
sr2:Q0
sr2:VCC
vcc1:VCC
gnd1:GND
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2
DIO
RCLK
SCLK
GND
8-Digit LED Display DIY MORE
sevseg2:A
sevseg2:B
sevseg2:C
sevseg2:D
sevseg2:E
sevseg2:F
sevseg2:G
sevseg2:DP
sevseg2:DIG1
sevseg2:DIG2
sevseg2:DIG3
sevseg2:DIG4
sevseg2:COM
sevseg2:CLN