Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. #include "Adafruit_NeoPixel.h"
  2. #include "SoftwareSerial.h"
  3. #include "DFRobotDFPlayerMini.h"
  4.  
  5. #define LED1 5
  6. #define LED2 6
  7. #define LED3 7
  8. #define LED4 8
  9. #define NUM_LIGHTS 60
  10. #define lightStripLen 2
  11.  
  12. #define out9 9
  13.  
  14. #define startPin A0
  15. #define stopPin A1
  16.  
  17. #define outputPin 4
  18.  
  19. SoftwareSerial mySoftwareSerial(3, 2); // RX, TX
  20. DFRobotDFPlayerMini myDFPlayer;
  21.  
  22. int state = 0;
  23.  
  24.  
  25. int r1 [6] = {255, 255, 255, 0, 255, 255};
  26. int g1 [6] = {255, 0, 255, 255, 255, 0};
  27. int b1 [6] = {255, 0, 255, 0, 255, 255};
  28.  
  29. int pozycje[4] = {0, 0, 0, 0};
  30. int kolory[4] = {0, 0, 0, 0};
  31.  
  32. Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(NUM_LIGHTS, LED1, NEO_GRB + NEO_KHZ800);
  33. Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(NUM_LIGHTS, LED2, NEO_GRB + NEO_KHZ800);
  34. Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(NUM_LIGHTS, LED3, NEO_GRB + NEO_KHZ800);
  35. Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(NUM_LIGHTS, LED4, NEO_GRB + NEO_KHZ800);
  36.  
  37. Adafruit_NeoPixel list[4] = {strip1, strip2, strip3, strip4};
  38.  
  39. int num = 0;
  40. int32_t timeStart = 0;
  41. void setup()
  42. {
  43. mySoftwareSerial.begin(9600);
  44. Serial.begin(115200);
  45.  
  46.  
  47. if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
  48. Serial.println("podłączony dfplayer!");
  49. Serial.println(F("Unable to begin:"));
  50. Serial.println(F("1.Please recheck the connection!"));
  51. Serial.println(F("2.Please insert the SD card!"));
  52. while (true) {
  53. delay(0); // Code to compatible with ESP8266 watch dog.
  54. }
  55. }
  56. Serial.println(F("DFPlayer Mini online."));
  57.  
  58. myDFPlayer.volume(30); //Set volume value. From 0 to 30
  59.  
  60.  
  61. strip1.begin();
  62. strip1.show(); // Initialize all pixels to 'off'
  63. strip2.begin();
  64. strip2.show(); // Initialize all pixels to 'off'
  65. strip3.begin();
  66. strip3.show(); // Initialize all pixels to 'off'
  67. strip4.begin();
  68. strip4.show(); // Initialize all pixels to 'off'
  69.  
  70.  
  71. pinMode(startPin, INPUT_PULLUP);
  72. pinMode(stopPin, INPUT_PULLUP);
  73. pinMode(outputPin, OUTPUT);
  74. }
  75.  
  76.  
  77. int getDelay(int num)
  78. {
  79. if (num < 300)
  80. return 500 / (num + 1) + 20;
  81. else
  82. return 10;
  83. }
  84.  
  85. void loop()
  86. {
  87. if (state == 0)
  88. {
  89. if (millis() - timeStart > 3 * 60 * 1000)
  90. {
  91. digitalWrite(outputPin, HIGH);
  92. myDFPlayer.play(1);
  93. }
  94.  
  95. if (millis() - timeStart > 3 * 60 * 1000 + 10 * 1000)
  96. {
  97. digitalWrite(outputPin, LOW);
  98. timeStart = millis();
  99. }
  100.  
  101. for (int i = 0; i < 4; i++)
  102. {
  103. if (pozycje[i] == -1)
  104. {
  105. if (random(100) < 5)
  106. {
  107. pozycje[i] = 0;
  108. kolory[i] = random(6);
  109. }
  110. }
  111. else
  112. {
  113. int len = 2;
  114. printNleds(&(list[i]), pozycje[i], len, kolory[i]);
  115. pozycje[i] += 1;
  116. if (pozycje[i] > NUM_LIGHTS)
  117. {
  118. pozycje[i] = -1;
  119. }
  120. }
  121. }
  122.  
  123. delay(getDelay(num));
  124. Serial.println(getDelay(num));
  125. num++;
  126. }
  127.  
  128. if (digitalRead(startPin) == 0)
  129. {
  130. if (state == 0)
  131. timeStart = millis();
  132.  
  133. state = 1;
  134. }
  135. else
  136. {
  137. state = 0;
  138. num = 0;
  139. }
  140. }
  141.  
  142.  
  143.  
  144. void printNleds(Adafruit_NeoPixel* x, int start, int amount, int n)
  145. {
  146. for (int i = 0; i < NUM_LIGHTS; i++)
  147. x->setPixelColor(i, x->Color(0, 0, 0));
  148.  
  149. for (int i = start; i < start + amount; i++)
  150. x->setPixelColor(i, x->Color(r1[n], g1[n], b1[n]));
  151.  
  152. x->show();
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement