test_pca9685.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * test_pca9685.c
  3. * 简单的PCA9685测试程序
  4. * 编译:gcc -o test_pca9685 test_pca9685.c pca9685.c -lm
  5. * 运行:sudo ./test_pca9685
  6. */
  7. #include <stdio.h>
  8. #include <unistd.h>
  9. #include "pca9685.h"
  10. int main(int argc, char *argv[]) {
  11. pca9685_t pca;
  12. const char *i2c_dev = "/dev/i2c-0";
  13. uint8_t addr = PCA9685_DEFAULT_ADDR;
  14. if (argc > 1) i2c_dev = argv[1];
  15. if (argc > 2) addr = (uint8_t)strtol(argv[2], NULL, 0);
  16. printf("PCA9685 Test Program\n");
  17. printf("====================\n");
  18. printf("Device: %s, Address: 0x%02X\n\n", i2c_dev, addr);
  19. printf("Initializing...\n");
  20. if (pca9685_init(&pca, i2c_dev, addr) < 0) {
  21. fprintf(stderr, "Initialization failed!\n");
  22. return 1;
  23. }
  24. pca9685_print_status(&pca);
  25. printf("Testing Channel 0...\n");
  26. printf(" Full ON\n");
  27. pca9685_led_on(&pca, 0);
  28. sleep(1);
  29. printf(" 50%% brightness\n");
  30. pca9685_led_brightness(&pca, 0, 128);
  31. sleep(1);
  32. printf(" 25%% brightness\n");
  33. pca9685_led_brightness(&pca, 0, 64);
  34. sleep(1);
  35. printf(" Full OFF\n");
  36. pca9685_led_off(&pca, 0);
  37. sleep(1);
  38. printf("Testing all channels...\n");
  39. for (int i = 0; i < 16; i++) {
  40. pca9685_led_on(&pca, i);
  41. usleep(100000);
  42. }
  43. sleep(1);
  44. printf("All OFF\n");
  45. pca9685_all_off(&pca);
  46. printf("\nClosing...\n");
  47. pca9685_close(&pca);
  48. printf("Test completed.\n");
  49. return 0;
  50. }