EM_SWH

Team 7 - iClean

Sep 10th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.83 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <FastLED.h>
  3.  
  4. #define LED_PIN 10
  5. #define NUM_LEDS 10
  6. #define BRIGHTNESS 64
  7. #define LED_TYPE WS2811
  8. #define COLOR_ORDER GRB
  9. CRGB leds[NUM_LEDS];
  10.  
  11. #define UPDATES_PER_SECOND 10
  12.  
  13. //Sensoren und Lichter
  14. int lightsensor = A2;
  15.  
  16. //Servos
  17. Servo myservo1;
  18. Servo myservo2;
  19. Servo myservo3;
  20.  
  21. //Motor
  22. int motor = 2;
  23.  
  24. //LED
  25. int led1 = 6;
  26. int led2 = 7;
  27. int led3 = 8;
  28.  
  29. //PIEZO
  30. int piezosensor = 9;
  31.  
  32. //Variablen
  33. int pos = 0;
  34. int platziert = 0;
  35. int blinkspeed = 200;
  36. int counter = 0;
  37.  
  38. //MELODY
  39. #define NOTE_B0 31
  40. #define NOTE_C1 33
  41. #define NOTE_CS1 35
  42. #define NOTE_D1 37
  43. #define NOTE_DS1 39
  44. #define NOTE_E1 41
  45. #define NOTE_F1 44
  46. #define NOTE_FS1 46
  47. #define NOTE_G1 49
  48. #define NOTE_GS1 52
  49. #define NOTE_A1 55
  50. #define NOTE_AS1 58
  51. #define NOTE_B1 62
  52. #define NOTE_C2 65
  53. #define NOTE_CS2 69
  54. #define NOTE_D2 73
  55. #define NOTE_DS2 78
  56. #define NOTE_E2 82
  57. #define NOTE_F2 87
  58. #define NOTE_FS2 93
  59. #define NOTE_G2 98
  60. #define NOTE_GS2 104
  61. #define NOTE_A2 110
  62. #define NOTE_AS2 117
  63. #define NOTE_B2 123
  64. #define NOTE_C3 131
  65. #define NOTE_CS3 139
  66. #define NOTE_D3 147
  67. #define NOTE_DS3 156
  68. #define NOTE_E3 165
  69. #define NOTE_F3 175
  70. #define NOTE_FS3 185
  71. #define NOTE_G3 196
  72. #define NOTE_GS3 208
  73. #define NOTE_A3 220
  74. #define NOTE_AS3 233
  75. #define NOTE_B3 247
  76. #define NOTE_C4 262
  77. #define NOTE_CS4 277
  78. #define NOTE_D4 294
  79. #define NOTE_DS4 311
  80. #define NOTE_E4 330
  81. #define NOTE_F4 349
  82. #define NOTE_FS4 370
  83. #define NOTE_G4 392
  84. #define NOTE_GS4 415
  85. #define NOTE_A4 440
  86. #define NOTE_AS4 466
  87. #define NOTE_B4 494
  88. #define NOTE_C5 523
  89. #define NOTE_CS5 554
  90. #define NOTE_D5 587
  91. #define NOTE_DS5 622
  92. #define NOTE_E5 659
  93. #define NOTE_F5 698
  94. #define NOTE_FS5 740
  95. #define NOTE_G5 784
  96. #define NOTE_GS5 831
  97. #define NOTE_A5 880
  98. #define NOTE_AS5 932
  99. #define NOTE_B5 988
  100. #define NOTE_C6 1047
  101. #define NOTE_CS6 1109
  102. #define NOTE_D6 1175
  103. #define NOTE_DS6 1245
  104. #define NOTE_E6 1319
  105. #define NOTE_F6 1397
  106. #define NOTE_FS6 1480
  107. #define NOTE_G6 1568
  108. #define NOTE_GS6 1661
  109. #define NOTE_A6 1760
  110. #define NOTE_AS6 1865
  111. #define NOTE_B6 1976
  112. #define NOTE_C7 2093
  113. #define NOTE_CS7 2217
  114. #define NOTE_D7 2349
  115. #define NOTE_DS7 2489
  116. #define NOTE_E7 2637
  117. #define NOTE_F7 2794
  118. #define NOTE_FS7 2960
  119. #define NOTE_G7 3136
  120. #define NOTE_GS7 3322
  121. #define NOTE_A7 3520
  122. #define NOTE_AS7 3729
  123. #define NOTE_B7 3951
  124. #define NOTE_C8 4186
  125. #define NOTE_CS8 4435
  126. #define NOTE_D8 4699
  127. #define NOTE_DS8 4978
  128.  
  129. #define melodyPin 3
  130. //Mario main theme melody
  131. int melody[] = {
  132. NOTE_E7, NOTE_E7, 0, NOTE_E7,
  133. 0, NOTE_C7, NOTE_E7, 0,
  134. NOTE_G7, 0, 0, 0,
  135. NOTE_G6, 0, 0, 0,
  136.  
  137. NOTE_C7, 0, 0, NOTE_G6,
  138. 0, 0, NOTE_E6, 0,
  139. 0, NOTE_A6, 0, NOTE_B6,
  140. 0, NOTE_AS6, NOTE_A6, 0,
  141.  
  142. NOTE_G6, NOTE_E7, NOTE_G7,
  143. NOTE_A7, 0, NOTE_F7, NOTE_G7,
  144. 0, NOTE_E7, 0, NOTE_C7,
  145. NOTE_D7, NOTE_B6, 0, 0,
  146.  
  147. NOTE_C7, 0, 0, NOTE_G6,
  148. 0, 0, NOTE_E6, 0,
  149. 0, NOTE_A6, 0, NOTE_B6,
  150. 0, NOTE_AS6, NOTE_A6, 0,
  151.  
  152. NOTE_G6, NOTE_E7, NOTE_G7,
  153. NOTE_A7, 0, NOTE_F7, NOTE_G7,
  154. 0, NOTE_E7, 0, NOTE_C7,
  155. NOTE_D7, NOTE_B6, 0, 0
  156. };
  157. //Mario main them tempo
  158. int tempo[] = {
  159. 12, 12, 12, 12,
  160. 12, 12, 12, 12,
  161. 12, 12, 12, 12,
  162. 12, 12, 12, 12,
  163.  
  164. 12, 12, 12, 12,
  165. 12, 12, 12, 12,
  166. 12, 12, 12, 12,
  167. 12, 12, 12, 12,
  168.  
  169. 9, 9, 9,
  170. 12, 12, 12, 12,
  171. 12, 12, 12, 12,
  172. 12, 12, 12, 12,
  173.  
  174. 12, 12, 12, 12,
  175. 12, 12, 12, 12,
  176. 12, 12, 12, 12,
  177. 12, 12, 12, 12,
  178.  
  179. 9, 9, 9,
  180. 12, 12, 12, 12,
  181. 12, 12, 12, 12,
  182. 12, 12, 12, 12,
  183. };
  184. //Underworld melody
  185. int underworld_melody[] = {
  186. NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,
  187. NOTE_AS3, NOTE_AS4, 0,
  188. 0,
  189. NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,
  190. NOTE_AS3, NOTE_AS4, 0,
  191. 0,
  192. NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,
  193. NOTE_DS3, NOTE_DS4, 0,
  194. 0,
  195. NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,
  196. NOTE_DS3, NOTE_DS4, 0,
  197. 0, NOTE_DS4, NOTE_CS4, NOTE_D4,
  198. NOTE_CS4, NOTE_DS4,
  199. NOTE_DS4, NOTE_GS3,
  200. NOTE_G3, NOTE_CS4,
  201. NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4,
  202. NOTE_GS4, NOTE_DS4, NOTE_B3,
  203. NOTE_AS3, NOTE_A3, NOTE_GS3,
  204. 0, 0, 0
  205. };
  206. //Underwolrd tempo
  207. int underworld_tempo[] = {
  208. 12, 12, 12, 12,
  209. 12, 12, 6,
  210. 3,
  211. 12, 12, 12, 12,
  212. 12, 12, 6,
  213. 3,
  214. 12, 12, 12, 12,
  215. 12, 12, 6,
  216. 3,
  217. 12, 12, 12, 12,
  218. 12, 12, 6,
  219. 6, 18, 18, 18,
  220. 6, 6,
  221. 6, 6,
  222. 6, 6,
  223. 18, 18, 18, 18, 18, 18,
  224. 10, 10, 10,
  225. 10, 10, 10,
  226. 3, 3, 3
  227. };
  228.  
  229. //Timer
  230. unsigned long previousMillis = 0;
  231. unsigned long startMillis = 0;
  232. unsigned long timerMillis1 = 0;
  233. unsigned long end1 = 0;
  234. const long interval = 1000;
  235. long delta;
  236.  
  237.  
  238. CRGBPalette16 currentPalette;
  239. TBlendType currentBlending;
  240.  
  241. extern CRGBPalette16 myRedWhiteBluePalette;
  242. extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
  243.  
  244.  
  245. void setup() {
  246. // put your setup code here, to run once:
  247. pinMode(lightsensor, INPUT);
  248. //2
  249. pinMode(motor, OUTPUT);
  250. //Servos definieren 3-5
  251. myservo1.attach(3);
  252. myservo2.attach(4);
  253. myservo3.attach(5);
  254. //6-8
  255. pinMode(led1, OUTPUT);
  256. pinMode(led2, OUTPUT);
  257. pinMode(led3, OUTPUT);
  258. //9
  259. pinMode(piezosensor, OUTPUT);
  260.  
  261. Lights(1);
  262.  
  263. delay( 3000 ); // power-up safety delay
  264. FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  265. FastLED.setBrightness( BRIGHTNESS );
  266.  
  267. currentPalette = RainbowColors_p;
  268. currentBlending = LINEARBLEND;
  269.  
  270. //ServoReset
  271.  
  272. myservo1.write(pos);
  273. myservo2.write(pos);
  274. myservo3.write(pos);
  275.  
  276. //Debug
  277. Serial.begin(115200);
  278. }
  279.  
  280. void loop() {
  281.  
  282. ChangePalettePeriodically();
  283.  
  284. static uint8_t startIndex = 0;
  285. startIndex = startIndex + 1; /* motion speed */
  286.  
  287. FillLEDsFromPaletteColors( startIndex);
  288.  
  289. FastLED.show();
  290. FastLED.delay(20 / UPDATES_PER_SECOND);
  291.  
  292. // Start time
  293. previousMillis = millis();
  294.  
  295. myservo1.write(pos);
  296. myservo2.write(pos);
  297. myservo3.write(pos);
  298. Serial.println(myservo2.read());
  299.  
  300. //LICHTSENSORWERT
  301. int lightvalue = analogRead(lightsensor);
  302. Serial.println(lightvalue);
  303.  
  304. //LICHTSENSOR REGISTRIERT HAND
  305. if(lightvalue<10){
  306. Lights(0);
  307.  
  308.  
  309.  
  310. //LED LEUCHTEN//
  311. //warte nach dem ersten platzieren
  312. if(platziert==0){
  313. LightsBlink(led1);
  314. platziert = 1;
  315. }
  316.  
  317. Piezo1();
  318.  
  319.  
  320.  
  321. //ERSTER WASCHGANG
  322. for(int i = 0; i<10; i++){
  323. digitalWrite(led1,1);
  324. int randomNum = random(45,150);
  325. ServoMove1(true, randomNum);
  326. delay(500);
  327. // Serial.println(i);
  328. // Serial.println("ERSTER WASCHGANG");
  329. }
  330. myservo1.write(0);
  331. digitalWrite(led1,0);
  332. delay(2000);
  333. tone(piezosensor, 500);
  334. delay(500);
  335. noTone(piezosensor);
  336.  
  337.  
  338. //ZWEITER WASCHGANG
  339. for(int i = 0;i<3;i++){
  340. digitalWrite(led2,1);
  341. for (int j = 60; j <= 150; j += 1) { // goes from 0 degrees to 180 degrees
  342. // in steps of 1 degree
  343. myservo2.write(j); // tell servo to go to position in variable 'pos'
  344. delay(10); // waits 15ms for the servo to reach the position
  345. }
  346. for (int j = 150; j >= 60; j -= 1) { // goes from 180 degrees to 0 degrees
  347. myservo2.write(j); // tell servo to go to position in variable 'pos'
  348. delay(10); // waits 15ms for the servo to reach the position
  349. }
  350. }
  351. myservo2.write(0);
  352. digitalWrite(led2,0);
  353. delay(2000);
  354. tone(piezosensor, 500);
  355. delay(500);
  356. noTone(piezosensor);
  357.  
  358.  
  359. //DRITTER WASCHGANG
  360. for(int i = 0;i<2;i++){
  361. digitalWrite(led3,1);
  362. digitalWrite(motor,HIGH);
  363. delay(2000);
  364. digitalWrite(motor,LOW);
  365. delay(500);
  366. }
  367.  
  368. //VIERTER WASCHGANG
  369. delay(1000);
  370. myservo3.write(180);
  371. delay(500);
  372. myservo3.write(0);
  373. delay(1000);
  374.  
  375. digitalWrite(led3,0);
  376. delay(2000);
  377. tone(piezosensor, 500);
  378. delay(500);
  379. noTone(piezosensor);
  380.  
  381. Piezo2();
  382.  
  383.  
  384. }else {
  385.  
  386. //RESET
  387. delay(1000);
  388. myservo1.write(0);
  389. myservo2.write(0);
  390. Serial.println(myservo1.read());
  391. Lights(1);
  392. platziert = 0;
  393. counter = 0;
  394. }
  395.  
  396. }
  397.  
  398. void ServoMove1(bool a, int x){
  399. if(a == true){
  400. myservo1.write(x);
  401. }
  402. }
  403.  
  404. void ServoMove2(bool a){
  405. if(a == true){
  406. if(myservo2.read()==180){
  407. myservo2.write(45);
  408. }
  409. if(myservo2.read()==45){
  410. myservo2.write(180);
  411. }
  412. }
  413.  
  414. }
  415.  
  416. void LightsBlink(int x){
  417. for(int i = 0; i<4; i++){
  418. delay(blinkspeed);
  419. Lights(1);
  420. delay(blinkspeed);
  421. Lights(0);
  422. }
  423. }
  424.  
  425. void Lights(int x){
  426. for(int i = 5; i<9;i++){
  427. digitalWrite(i,x);
  428. }
  429. }
  430.  
  431. void Piezo1(){
  432. tone(piezosensor,660,100);
  433. delay(150);
  434. tone(piezosensor,660,100);
  435. delay(300);
  436. tone(piezosensor,660,100);
  437. delay(300);
  438. tone(piezosensor,510,100);
  439. delay(100);
  440. tone(piezosensor,660,100);
  441. delay(300);
  442. tone(piezosensor,770,100);
  443. delay(550);
  444. tone(piezosensor,380,100);
  445. delay(575);
  446. }
  447.  
  448. void Piezo2(){
  449.  
  450.  
  451. tone(piezosensor,510,100);
  452. delay(450);
  453. tone(piezosensor,380,100);
  454. delay(400);
  455. tone(piezosensor,320,100);
  456. delay(500);
  457. tone(piezosensor,440,100);
  458. delay(300);
  459. tone(piezosensor,480,80);
  460. delay(330);
  461. tone(piezosensor,450,100);
  462. delay(150);
  463. tone(piezosensor,430,100);
  464. delay(300);
  465. tone(piezosensor,380,100);
  466. delay(200);
  467. tone(piezosensor,660,80);
  468. delay(200);
  469. tone(piezosensor,760,50);
  470. delay(150);
  471. tone(piezosensor,860,100);
  472. delay(300);
  473. tone(piezosensor,700,80);
  474. delay(150);
  475. tone(piezosensor,760,50);
  476. delay(350);
  477. tone(piezosensor,660,80);
  478. delay(300);
  479. tone(piezosensor,520,80);
  480. delay(150);
  481. tone(piezosensor,580,80);
  482. delay(150);
  483. tone(piezosensor,480,80);
  484. delay(500);
  485.  
  486.  
  487.  
  488. tone(piezosensor,510,100);
  489. delay(450);
  490. tone(piezosensor,380,100);
  491. delay(400);
  492. tone(piezosensor,320,100);
  493. delay(500);
  494. tone(piezosensor,440,100);
  495. delay(300);
  496. tone(piezosensor,480,80);
  497. delay(330);
  498. tone(piezosensor,450,100);
  499. delay(150);
  500. tone(piezosensor,430,100);
  501. delay(300);
  502. tone(piezosensor,380,100);
  503. delay(200);
  504. tone(piezosensor,660,80);
  505. delay(200);
  506. tone(piezosensor,760,50);
  507. delay(150);
  508. tone(piezosensor,860,100);
  509. delay(300);
  510. tone(piezosensor,700,80);
  511. delay(150);
  512. tone(piezosensor,760,50);
  513. delay(350);
  514. tone(piezosensor,660,80);
  515. delay(300);
  516. tone(piezosensor,520,80);
  517. delay(150);
  518. tone(piezosensor,580,80);
  519. delay(150);
  520. tone(piezosensor,480,80);
  521. delay(500);
  522.  
  523. /*
  524. tone(piezosensor,500,100);
  525. delay(300);
  526.  
  527. tone(piezosensor,760,100);
  528. delay(100);
  529. tone(piezosensor,720,100);
  530. delay(150);
  531. tone(piezosensor,680,100);
  532. delay(150);
  533. tone(piezosensor,620,150);
  534. delay(300);
  535.  
  536. tone(piezosensor,650,150);
  537. delay(300);
  538. tone(piezosensor,380,100);
  539. delay(150);
  540. tone(piezosensor,430,100);
  541. delay(150);
  542.  
  543. tone(piezosensor,500,100);
  544. delay(300);
  545. tone(piezosensor,430,100);
  546. delay(150);
  547. tone(piezosensor,500,100);
  548. delay(100);
  549. tone(piezosensor,570,100);
  550. delay(220);
  551.  
  552. tone(piezosensor,500,100);
  553. delay(300);
  554.  
  555. tone(piezosensor,760,100);
  556. delay(100);
  557. tone(piezosensor,720,100);
  558. delay(150);
  559. tone(piezosensor,680,100);
  560. delay(150);
  561. tone(piezosensor,620,150);
  562. delay(300);
  563.  
  564. tone(piezosensor,650,200);
  565. delay(300);
  566.  
  567. tone(piezosensor,1020,80);
  568. delay(300);
  569. tone(piezosensor,1020,80);
  570. delay(150);
  571. tone(piezosensor,1020,80);
  572. delay(300);
  573.  
  574. tone(piezosensor,380,100);
  575. delay(300);
  576. tone(piezosensor,500,100);
  577. delay(300);
  578.  
  579. tone(piezosensor,760,100);
  580. delay(100);
  581. tone(piezosensor,720,100);
  582. delay(150);
  583. tone(piezosensor,680,100);
  584. delay(150);
  585. tone(piezosensor,620,150);
  586. delay(300);
  587.  
  588. tone(piezosensor,650,150);
  589. delay(300);
  590. tone(piezosensor,380,100);
  591. delay(150);
  592. tone(piezosensor,430,100);
  593. delay(150);
  594.  
  595. tone(piezosensor,500,100);
  596. delay(300);
  597. tone(piezosensor,430,100);
  598. delay(150);
  599. tone(piezosensor,500,100);
  600. delay(100);
  601. tone(piezosensor,570,100);
  602. delay(420);
  603.  
  604. tone(piezosensor,585,100);
  605. delay(450);
  606.  
  607. tone(piezosensor,550,100);
  608. delay(420);
  609.  
  610. tone(piezosensor,500,100);
  611. delay(360);
  612.  
  613. tone(piezosensor,380,100);
  614. delay(300);
  615. tone(piezosensor,500,100);
  616. delay(300);
  617. tone(piezosensor,500,100);
  618. delay(150);
  619. tone(piezosensor,500,100);
  620. delay(300);
  621.  
  622. tone(piezosensor,500,100);
  623. delay(300);
  624.  
  625. tone(piezosensor,760,100);
  626. delay(100);
  627. tone(piezosensor,720,100);
  628. delay(150);
  629. tone(piezosensor,680,100);
  630. delay(150);
  631. tone(piezosensor,620,150);
  632. delay(300);
  633.  
  634. tone(piezosensor,650,150);
  635. delay(300);
  636. tone(piezosensor,380,100);
  637. delay(150);
  638. tone(piezosensor,430,100);
  639. delay(150);
  640.  
  641. tone(piezosensor,500,100);
  642. delay(300);
  643. tone(piezosensor,430,100);
  644. delay(150);
  645. tone(piezosensor,500,100);
  646. delay(100);
  647. tone(piezosensor,570,100);
  648. delay(220);
  649.  
  650. tone(piezosensor,500,100);
  651. delay(300);
  652.  
  653. tone(piezosensor,760,100);
  654. delay(100);
  655. tone(piezosensor,720,100);
  656. delay(150);
  657. tone(piezosensor,680,100);
  658. delay(150);
  659. tone(piezosensor,620,150);
  660. delay(300);
  661.  
  662. tone(piezosensor,650,200);
  663. delay(300);
  664.  
  665. tone(piezosensor,1020,80);
  666. delay(300);
  667. tone(piezosensor,1020,80);
  668. delay(150);
  669. tone(piezosensor,1020,80);
  670. delay(300);
  671.  
  672. tone(piezosensor,380,100);
  673. delay(300);
  674. tone(piezosensor,500,100);
  675. delay(300);
  676.  
  677. tone(piezosensor,760,100);
  678. delay(100);
  679. tone(piezosensor,720,100);
  680. delay(150);
  681. tone(piezosensor,680,100);
  682. delay(150);
  683. tone(piezosensor,620,150);
  684. delay(300);
  685.  
  686. tone(piezosensor,650,150);
  687. delay(300);
  688. tone(piezosensor,380,100);
  689. delay(150);
  690. tone(piezosensor,430,100);
  691. delay(150);
  692.  
  693. tone(piezosensor,500,100);
  694. delay(300);
  695. tone(piezosensor,430,100);
  696. delay(150);
  697. tone(piezosensor,500,100);
  698. delay(100);
  699. tone(piezosensor,570,100);
  700. delay(420);
  701.  
  702. tone(piezosensor,585,100);
  703. delay(450);
  704.  
  705. tone(piezosensor,550,100);
  706. delay(420);
  707.  
  708. tone(piezosensor,500,100);
  709. delay(360);
  710.  
  711. tone(piezosensor,380,100);
  712. delay(300);
  713. tone(piezosensor,500,100);
  714. delay(300);
  715. tone(piezosensor,500,100);
  716. delay(150);
  717. tone(piezosensor,500,100);
  718. delay(300);
  719.  
  720. tone(piezosensor,500,60);
  721. delay(150);
  722. tone(piezosensor,500,80);
  723. delay(300);
  724. tone(piezosensor,500,60);
  725. delay(350);
  726. tone(piezosensor,500,80);
  727. delay(150);
  728. tone(piezosensor,580,80);
  729. delay(350);
  730. tone(piezosensor,660,80);
  731. delay(150);
  732. tone(piezosensor,500,80);
  733. delay(300);
  734. tone(piezosensor,430,80);
  735. delay(150);
  736. tone(piezosensor,380,80);
  737. delay(600);
  738.  
  739. tone(piezosensor,500,60);
  740. delay(150);
  741. tone(piezosensor,500,80);
  742. delay(300);
  743. tone(piezosensor,500,60);
  744. delay(350);
  745. tone(piezosensor,500,80);
  746. delay(150);
  747. tone(piezosensor,580,80);
  748. delay(150);
  749. tone(piezosensor,660,80);
  750. delay(550);
  751.  
  752. tone(piezosensor,870,80);
  753. delay(325);
  754. tone(piezosensor,760,80);
  755. delay(600);
  756.  
  757. tone(piezosensor,500,60);
  758. delay(150);
  759. tone(piezosensor,500,80);
  760. delay(300);
  761. tone(piezosensor,500,60);
  762. delay(350);
  763. tone(piezosensor,500,80);
  764. delay(150);
  765. tone(piezosensor,580,80);
  766. delay(350);
  767. tone(piezosensor,660,80);
  768. delay(150);
  769. tone(piezosensor,500,80);
  770. delay(300);
  771. tone(piezosensor,430,80);
  772. delay(150);
  773. tone(piezosensor,380,80);
  774. delay(600);
  775.  
  776. tone(piezosensor,660,100);
  777. delay(150);
  778. tone(piezosensor,660,100);
  779. delay(300);
  780. tone(piezosensor,660,100);
  781. delay(300);
  782. tone(piezosensor,510,100);
  783. delay(100);
  784. tone(piezosensor,660,100);
  785. delay(300);
  786. tone(piezosensor,770,100);
  787. delay(550);
  788. tone(piezosensor,380,100);
  789. delay(575);
  790. */
  791.  
  792.  
  793. /*tone(piezosensor, 500);
  794. delay(200);
  795. noTone(piezosensor);
  796. delay(50);
  797. tone(piezosensor, 500);
  798. delay(100);
  799. noTone(piezosensor);
  800. delay(10);
  801. tone(piezosensor, 500);
  802. delay(100);
  803. noTone(piezosensor);
  804. delay(10);
  805. tone(piezosensor, 1000);
  806. delay(200);
  807. noTone(piezosensor);*/
  808. }
  809.  
  810.  
  811. void FillLEDsFromPaletteColors( uint8_t colorIndex)
  812. {
  813. uint8_t brightness = 255;
  814.  
  815. for( int i = 0; i < NUM_LEDS; i++) {
  816. leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
  817. colorIndex += 3;
  818. }
  819. }
  820.  
  821.  
  822. // There are several different palettes of colors demonstrated here.
  823. //
  824. // FastLED provides several 'preset' palettes: RainbowColors_p, RainbowStripeColors_p,
  825. // OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p, and PartyColors_p.
  826. //
  827. // Additionally, you can manually define your own color palettes, or you can write
  828. // code that creates color palettes on the fly. All are shown here.
  829.  
  830. void ChangePalettePeriodically()
  831. {
  832. uint8_t secondHand = (millis() / 1000) % 60;
  833. static uint8_t lastSecond = 99;
  834.  
  835. if( lastSecond != secondHand) {
  836. lastSecond = secondHand;
  837. if( secondHand == 0) { currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; }
  838. if( secondHand == 10) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; }
  839. if( secondHand == 15) { currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; }
  840. if( secondHand == 20) { SetupPurpleAndGreenPalette(); currentBlending = LINEARBLEND; }
  841. if( secondHand == 25) { SetupTotallyRandomPalette(); currentBlending = LINEARBLEND; }
  842. if( secondHand == 30) { SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND; }
  843. if( secondHand == 35) { SetupBlackAndWhiteStripedPalette(); currentBlending = LINEARBLEND; }
  844. if( secondHand == 40) { currentPalette = CloudColors_p; currentBlending = LINEARBLEND; }
  845. if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = LINEARBLEND; }
  846. if( secondHand == 50) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; }
  847. if( secondHand == 55) { currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; }
  848. }
  849. }
  850.  
  851. // This function fills the palette with totally random colors.
  852. void SetupTotallyRandomPalette()
  853. {
  854. for( int i = 0; i < 16; i++) {
  855. currentPalette[i] = CHSV( random8(), 255, random8());
  856. }
  857. }
  858.  
  859. // This function sets up a palette of black and white stripes,
  860. // using code. Since the palette is effectively an array of
  861. // sixteen CRGB colors, the various fill_* functions can be used
  862. // to set them up.
  863. void SetupBlackAndWhiteStripedPalette()
  864. {
  865. // 'black out' all 16 palette entries...
  866. fill_solid( currentPalette, 16, CRGB::Black);
  867. // and set every fourth one to white.
  868. currentPalette[0] = CRGB::White;
  869. currentPalette[4] = CRGB::White;
  870. currentPalette[8] = CRGB::White;
  871. currentPalette[12] = CRGB::White;
  872.  
  873. }
  874.  
  875. // This function sets up a palette of purple and green stripes.
  876. void SetupPurpleAndGreenPalette()
  877. {
  878. CRGB purple = CHSV( HUE_PURPLE, 255, 255);
  879. CRGB green = CHSV( HUE_GREEN, 255, 255);
  880. CRGB black = CRGB::Black;
  881.  
  882. currentPalette = CRGBPalette16(
  883. green, green, black, black,
  884. purple, purple, black, black,
  885. green, green, black, black,
  886. purple, purple, black, black );
  887. }
  888.  
  889.  
  890. // This example shows how to set up a static color palette
  891. // which is stored in PROGMEM (flash), which is almost always more
  892. // plentiful than RAM. A static PROGMEM palette like this
  893. // takes up 64 bytes of flash.
  894. const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM =
  895. {
  896. CRGB::Red,
  897. CRGB::Gray, // 'white' is too bright compared to red and blue
  898. CRGB::Blue,
  899. CRGB::Black,
  900.  
  901. CRGB::Red,
  902. CRGB::Gray,
  903. CRGB::Blue,
  904. CRGB::Black,
  905.  
  906. CRGB::Red,
  907. CRGB::Red,
  908. CRGB::Gray,
  909. CRGB::Gray,
  910. CRGB::Blue,
  911. CRGB::Blue,
  912. CRGB::Black,
  913. CRGB::Black
  914. };
Add Comment
Please, Sign In to add comment