/**
******************************************************************************
* @file : ShiftRegGPIOXpander_Example02.cpp
* @brief : Code example of the use of the ShiftRegGPIOXpander_ESP32 library
*
* Repository: https://github.com/GabyGold67/ShiftRegGPIOXpander_ESP32
*
* Framework: Arduino
* Platform: ESP32
*
* @author : Gabriel D. Goldman
* mail <gdgoldman67@hotmail.com>
* Github <https://github.com/GabyGold67>
*
* @date First release: 16/02/2025
* Last update: 02/04/2025 13:40 GMT+0200 DST
******************************************************************************
* @warning **Use of this library is under your own responsibility**
*
* @warning The use of this library falls in the category described by The Alan
* Parsons Project (c) 1980 "Games People play" disclaimer:
*
* Games people play, you take it or you leave it
* Things that they say aren't alright
* If I promised you the moon and the stars, would you believe it?
*
* Released into the public domain in accordance with "GPL-3.0-or-later" license terms.
******************************************************************************
*/
#include <Arduino.h>
#include <ShiftRegGPIOXpander.h>
//==============================================>> General use definitions BEGIN
//================================================>> General use definitions END
//======================================>> General use function prototypes BEGIN
void Error_Handler();
//========================================>> General use function prototypes END
//====================================>> Task Callback function prototypes BEGIN
//======================================>> Task Callback function prototypes END
//===========================================>> Tasks Handles declarations BEGIN
//=============================================>> Tasks Handles declarations END
uint8_t ds{33};
uint8_t sh_cp{26};
uint8_t st_cp{25};
uint8_t srQty{4};
uint8_t strtngVals [4] {0x00, 0x00,0x00,0x00};
uint8_t* stVlsPtr = strtngVals;
uint8_t mask_1 [] {0b10001000, 0b00100010, 0b00110011, 0b01110111};
uint8_t mask_2 [] {0b01010101, 0b01010101, 0b01010101, 0b01010101};
uint8_t pinUpdtd{0};
uint8_t setVal{};
ShiftRegGPIOXpander srgx(ds, sh_cp, st_cp, srQty, stVlsPtr);
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Example starts");
Serial.println("--------------");
Serial.println("digitalWriteSrAllSet() method rises all pins");
srgx.digitalWriteSrAllSet();
vTaskDelay(1000);
Serial.println("digitalWriteSrAllReset() method clears all pins");
srgx.digitalWriteSrAllReset();
vTaskDelay(1000);
Serial.println("digitalWriteSr() method writing HIGH pin by pin");
setVal = HIGH;
for(uint8_t pinNum{0}; pinNum <= srgx.getMaxPin(); pinNum++){
srgx.digitalWriteSr(pinNum, setVal);
vTaskDelay(200);
}
Serial.println("digitalWriteSr() method writing LOW pin by pin");
setVal = LOW;
for(uint8_t pinNum{0}; pinNum <= srgx.getMaxPin(); pinNum++){
srgx.digitalWriteSr(pinNum, setVal);
vTaskDelay(200);
}
vTaskDelay(1000);
Serial.println("digitalWriteSrToAux() method writing TO THE BUFFER HIGH pin by pin and 'move & flush automatic' every 3rd pin ");
setVal = HIGH;
for(uint8_t pinNum{0}; pinNum <= srgx.getMaxPin(); pinNum++){
if((pinNum+1) % 3 != 0)
srgx.digitalWriteSrToAux(pinNum, setVal);
else
srgx.digitalWriteSr(pinNum, setVal);
vTaskDelay(200);
}
srgx.moveAuxToMain();
vTaskDelay(1000);
Serial.println("digitalWriteSrToAux() method writing TO THE BUFFER LOW pin by pin and 'move & flush automatic' every 4th pin");
setVal = LOW;
for(uint8_t pinNum{0}; pinNum <= srgx.getMaxPin(); pinNum++){
if((pinNum+1) % 4 != 0)
srgx.digitalWriteSrToAux(pinNum, setVal);
else
srgx.digitalWriteSr(pinNum, setVal);
vTaskDelay(200);
}
srgx.moveAuxToMain();
vTaskDelay(1000);
Serial.println("digitalWriteSrMaskSet() method sets pins using the mask {0b10001000, 0b00100010, 0b00110011, 0b01110111}");
srgx.digitalWriteSrMaskSet(mask_1);
vTaskDelay(5000);
Serial.println("digitalWriteSrMaskReset() method resets pins using the mask {0b01010101, 0b01010101, 0b01010101, 0b01010101}");
srgx.digitalWriteSrMaskReset(mask_2);
vTaskDelay(5000);
Serial.println("digitalWriteSrAllReset() method clears all pins");
srgx.digitalWriteSrAllReset();
vTaskDelay(2000);
Serial.println("stampOverMain() method overwrites the Main Buffer with the value {0b01010101, 0b01010101, 0b01010101, 0b01010101}");
srgx.stampOverMain(mask_2);
vTaskDelay(5000);
Serial.println("digitalWriteSrAllReset() method clears all pins before restarting tests");
Serial.println("-----------------------------------------------------------------------");
srgx.digitalWriteSrAllReset();
vTaskDelay(3000);
}
//================================================>> General use functions BEGIN
//==================================================>> General use functions END
//=======================================>> User Functions Implementations BEGIN
/**
* @brief Error Handling function
*
* Placeholder for a Error Handling function, in case of an error the execution
* will be trapped in this endless loop
*/
void Error_Handler(){
for(;;)
{
}
return;
}
//=========================================>> User Functions Implementations END
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
r20:1
r20:2
r21:1
r21:2
r22:1
r22:2
r23:1
r23:2
r24:1
r24:2
r25:1
r25:2
r26:1
r26:2
r27:1
r27:2
vcc3:VCC
sr4:Q1
sr4:Q2
sr4:Q3
sr4:Q4
sr4:Q5
sr4:Q6
sr4:Q7
sr4:GND
sr4:Q7S
sr4:MR
sr4:SHCP
sr4:STCP
sr4:OE
sr4:DS
sr4:Q0
sr4:VCC
led2:A
led2:C
led4:A
led4:C
led5:A
led5:C
led7:A
led7:C
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
led11:A
led11:C
DS
STCP
SHCP
GND
r9:1
r9:2
r10:1
r10:2
r11:1
r11:2
r12:1
r12:2
r13:1
r13:2
r14:1
r14:2
r15:1
r15:2
r16:1
r16:2
vcc4:VCC
sr3:Q1
sr3:Q2
sr3:Q3
sr3:Q4
sr3:Q5
sr3:Q6
sr3:Q7
sr3:GND
sr3:Q7S
sr3:MR
sr3:SHCP
sr3:STCP
sr3:OE
sr3:DS
sr3:Q0
sr3:VCC
led1:A
led1:C
led3:A
led3:C
led6:A
led6:C
led12:A
led12:C
led13:A
led13:C
led14:A
led14:C
led15:A
led15:C
led16:A
led16:C
DS
STCP
SHCP
GND
sw0:1
sw0:2
sw0:3
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
vcc1:VCC
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
led17:A
led17:C
led18:A
led18:C
led19:A
led19:C
led20:A
led20:C
led21:A
led21:C
led22:A
led22:C
led23:A
led23:C
led24:A
led24:C
DS
STCP
SHCP
GND
sw1:1
sw1:2
sw1:3
r17:1
r17:2
r18:1
r18:2
r19:1
r19:2
r28:1
r28:2
r29:1
r29:2
r30:1
r30:2
r31:1
r31:2
r32:1
r32:2
vcc2:VCC
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
led25:A
led25:C
led26:A
led26:C
led27:A
led27:C
led28:A
led28:C
led29:A
led29:C
led30:A
led30:C
led31:A
led31:C
led32:A
led32:C
DS
STCP
SHCP
GND
sw2:1
sw2:2
sw2:3
R00 - b00~07
R01 - b08~15
R02 - b16~23
R03 - b34~31
sw2
sw0
sw1