GY-63_MS5611/libraries/PCA9634/examples/PCA9634_test01/PCA9634_test01.ino
2023-12-11 13:54:15 +01:00

227 lines
4.7 KiB
C++

//
// FILE: PCA9634_test01.ino
// AUTHOR: Rob Tillaart
// PURPOSE: test PCA9634 library
// URL: https://github.com/RobTillaart/PCA9634
#include "Arduino.h"
#include "Wire.h"
#include "PCA9634.h"
PCA9634 ledArray(0x20);
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("PCA9634 LIB version: ");
Serial.println(PCA9634_LIB_VERSION);
Serial.println();
Wire.begin();
ledArray.begin();
testSetLedDriverModeLEDON();
testPWMMode();
testWrite1();
testWrite3();
testWriteN();
testSetGroupPWM_FREQ();
testSetAndReadMode();
testSetLedDriverModeLEDOFF();
Serial.print(millis());
Serial.print("\t");
Serial.println("done...");
}
void testSetLedDriverModeLEDON()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - Switch all on");
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.setLedDriverMode(channel, PCA963X_LEDON);
if (ledArray.getLedDriverMode(channel) != PCA963X_LEDON)
{
Serial.print(millis());
Serial.print("\t");
Serial.print("Channel: ");
Serial.println(channel);
}
}
}
void testPWMMode()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - set pwm mode");
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.setLedDriverMode(channel, PCA963X_LEDON);
delay(200);
ledArray.setLedDriverMode(channel, PCA963X_LEDPWM);
if (ledArray.getLedDriverMode(channel) != PCA963X_LEDPWM)
{
Serial.print(millis());
Serial.print("\t");
Serial.print("Channel: ");
Serial.println(channel);
}
}
}
void testWrite1()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - write1 - I");
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
for (int pwm = 0; pwm < 256; pwm++)
{
ledArray.write1(channel, pwm);
}
}
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - write 1 - II");
for (int pwm = 0; pwm < 256; pwm++)
{
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.write1(channel, pwm);
}
}
}
void testWrite3()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - write3 - random RGB");
for (int channel = 0; channel < ledArray.channelCount() - 3; channel++)
{
uint8_t R = random(256);
uint8_t G = random(256);
uint8_t B = random(256);
ledArray.write3(channel, R, G, B);
}
}
void testWriteN()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - writeN");
uint8_t arr[8] = {16, 32, 64, 96, 128, 160, 192, 255};
ledArray.writeN(0, arr, 8); // 8 == ledArray.channelCount()
}
void testSetGroupPWM_FREQ()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - GroupPWM");
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.setLedDriverMode(channel, PCA963X_LEDGRPPWM);
}
for (int pwm = 0; pwm < 256; pwm++)
{
ledArray.setGroupPWM(pwm);
uint8_t p = ledArray.getGroupPWM();
if (p != pwm)
{
Serial.print(millis());
Serial.print("\t");
Serial.print("pwm: ");
Serial.println(pwm);
}
}
ledArray.setGroupPWM(127);
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - groupFRQ");
for (int frq = 0; frq < 256; frq++)
{
ledArray.setGroupFREQ(frq);
uint8_t f = ledArray.getGroupFREQ();
if (f != frq)
{
Serial.print(millis());
Serial.print("\t");
Serial.print("frq: ");
Serial.println(frq);
}
}
// reset to LEDPWM
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.setLedDriverMode(channel, PCA963X_LEDPWM);
}
}
void testSetAndReadMode()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - readMode");
uint8_t regval = ledArray.readMode(PCA963X_MODE1);
ledArray.writeMode(PCA963X_MODE1, regval); // non destructive;
Serial.print(millis());
Serial.print("\t");
Serial.print("PCA963X_MODE1: ");
Serial.println(regval);
regval = ledArray.readMode(PCA963X_MODE2);
ledArray.writeMode(PCA963X_MODE2, regval);
Serial.print(millis());
Serial.print("\t");
Serial.print("PCA963X_MODE2: ");
Serial.println(regval);
}
void testSetLedDriverModeLEDOFF()
{
Serial.print(millis());
Serial.print("\t");
Serial.println("Test - Switch all off");
for (int channel = 0; channel < ledArray.channelCount(); channel++)
{
ledArray.setLedDriverMode(channel, PCA963X_LEDOFF);
if (ledArray.getLedDriverMode(channel) != PCA963X_LEDOFF)
{
Serial.print(millis());
Serial.print("\t");
Serial.print("Channel: ");
Serial.println(channel);
}
}
}
void loop()
{
}
// -- END OF FILE --