I have a lot of boards and usually need to re-use code even for different projects.

qrcodei2c.ino 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * @file i2c_mode.ino
  3. * @author SeanKwok (shaoxiang@m5stack.com)
  4. * @brief Unit QRCode I2C Mode Example
  5. * @version 0.1
  6. * @date 2024-01-30
  7. *
  8. *
  9. * @Hardwares: M5Core + Unit Synth
  10. * @Platform Version: Arduino M5Stack Board Manager v2.1.0
  11. * @Dependent Library:
  12. * M5Unified: https://github.com/m5stack/M5Unified
  13. * M5GFX: https://github.com/m5stack/M5GFX
  14. * M5UnitQRCode: https://github.com/m5stack/M5Unit-QRCode
  15. */
  16. #include <M5Unified.h>
  17. #include <M5GFX.h>
  18. #include "M5UnitQRCode.h"
  19. M5Canvas canvas(&M5.Display);
  20. M5UnitQRCodeI2C qrcode;
  21. void setup() {
  22. M5.begin();
  23. canvas.setColorDepth(1); // mono color
  24. canvas.createSprite(M5.Display.width(), M5.Display.height());
  25. canvas.setTextSize((float)canvas.width() / 160);
  26. canvas.setTextScroll(true);
  27. while (!qrcode.begin(&Wire, UNIT_QRCODE_ADDR, G2, G1, 100000U)) {
  28. canvas.println("Unit QRCode I2C Init Fail");
  29. Serial.println("Unit QRCode I2C Init Fail");
  30. canvas.pushSprite(0, 0);
  31. delay(1000);
  32. }
  33. canvas.println("Unit QRCode I2C Init Success");
  34. Serial.println("Unit QRCode I2C Init Success");
  35. canvas.println("Manual Scan Mode");
  36. canvas.pushSprite(0, 0);
  37. qrcode.setTriggerMode(MANUAL_SCAN_MODE);
  38. }
  39. void loop() {
  40. if (qrcode.getDecodeReadyStatus() == 1) {
  41. uint8_t buffer[512] = {0};
  42. uint16_t length = qrcode.getDecodeLength();
  43. Serial.printf("len:%d\r\n", length);
  44. qrcode.getDecodeData(buffer, length);
  45. Serial.printf("decode data:");
  46. for (int i = 0; i < length; i++) {
  47. Serial.printf("%c", buffer[i]);
  48. canvas.printf("%c", buffer[i]);
  49. }
  50. Serial.println();
  51. canvas.println();
  52. canvas.pushSprite(0, 0);
  53. }
  54. M5.update();
  55. if (M5.BtnA.wasPressed()) {
  56. // start scan
  57. qrcode.setDecodeTrigger(1);
  58. }
  59. if (M5.BtnB.wasPressed()) {
  60. // stop scan
  61. qrcode.setDecodeTrigger(0);
  62. }
  63. }