/** * test_pca9685.c * 简单的PCA9685测试程序 * 编译:gcc -o test_pca9685 test_pca9685.c pca9685.c -lm * 运行:sudo ./test_pca9685 */ #include #include #include "pca9685.h" int main(int argc, char *argv[]) { pca9685_t pca; const char *i2c_dev = "/dev/i2c-0"; uint8_t addr = PCA9685_DEFAULT_ADDR; if (argc > 1) i2c_dev = argv[1]; if (argc > 2) addr = (uint8_t)strtol(argv[2], NULL, 0); printf("PCA9685 Test Program\n"); printf("====================\n"); printf("Device: %s, Address: 0x%02X\n\n", i2c_dev, addr); printf("Initializing...\n"); if (pca9685_init(&pca, i2c_dev, addr) < 0) { fprintf(stderr, "Initialization failed!\n"); return 1; } pca9685_print_status(&pca); printf("Testing Channel 0...\n"); printf(" Full ON\n"); pca9685_led_on(&pca, 0); sleep(1); printf(" 50%% brightness\n"); pca9685_led_brightness(&pca, 0, 128); sleep(1); printf(" 25%% brightness\n"); pca9685_led_brightness(&pca, 0, 64); sleep(1); printf(" Full OFF\n"); pca9685_led_off(&pca, 0); sleep(1); printf("Testing all channels...\n"); for (int i = 0; i < 16; i++) { pca9685_led_on(&pca, i); usleep(100000); } sleep(1); printf("All OFF\n"); pca9685_all_off(&pca); printf("\nClosing...\n"); pca9685_close(&pca); printf("Test completed.\n"); return 0; }