cute_useless_robot.ino 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. Cute Useless Robot (´・ω・`)
  3. Developed by tobychui
  4. Idea come from Kairoshi
  5. */
  6. /* Libraries */
  7. #include <MD_MAX72xx.h>
  8. #include <SPI.h>
  9. #include <SD.h>
  10. #include <Servo.h> //Require ESP32Servo, not the Arduino build in Servo.h
  11. /* Pins Definations */
  12. #define STP_DATA_PIN 4 // Stepper Shift Register DS
  13. #define STP_CLOCK_PIN 16 // Stepper Shift Register SH_CP
  14. #define STP_LATCH_PIN 17 // Stepper Shift Register ST_CP
  15. #define SERVO_SWITCH 27 //Servo to push the switch
  16. #define SERVO_COVER 14 //Servo to push the cover
  17. #define DP_CLK_PIN 32 //Display CLK
  18. #define DP_DATA_PIN 33 //Display DIN
  19. #define DP_CS_PIN 25 //Display CS
  20. #define SD_CS_PIN 5 //SD Card CS pin
  21. /* Display settings generated by trial and error. Don't touch these */
  22. #define HARDWARE_TYPE MD_MAX72XX::DR1CR0RR0_HW
  23. #define MAX_DEVICES 8
  24. /* Hardware Type Definations */
  25. Servo servoSwitchPusher;
  26. Servo servoCoverPusher;
  27. MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DP_DATA_PIN, DP_CLK_PIN, DP_CS_PIN, MAX_DEVICES);
  28. /* Global Variables */
  29. char animation = 'a'; //Animation ID to render
  30. void setup() {
  31. Serial.begin(115200);
  32. /* Stepper IO */
  33. pinMode(STP_DATA_PIN, OUTPUT);
  34. pinMode(STP_CLOCK_PIN, OUTPUT);
  35. pinMode(STP_LATCH_PIN, OUTPUT);
  36. standbySteppers();
  37. /* Servo IO */
  38. servoSwitchPusher.attach(SERVO_SWITCH);
  39. servoCoverPusher.attach(SERVO_COVER);
  40. servoCoverPusher.write(0);
  41. servoSwitchPusher.write(0);
  42. /* SD Card */
  43. // Initialize SD card
  44. if (!SD.begin(SD_CS_PIN)) {
  45. Serial.println("[Error] Unable to mount SD card");
  46. }
  47. /* Display Module */
  48. mx.begin();
  49. setDisplayBrightness(0x4);
  50. renderFrame(); //Render the default frame to matrix
  51. delay(5000);
  52. /* Start Dual-core processes */
  53. createSemaphore();
  54. startCoreTasks();
  55. }
  56. void loop() {
  57. //Process has been handled in tasks.ino
  58. //Do not use this loop
  59. }