Advertisement
Szerelo

Arduino W2812 tone clock

Jun 24th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.76 KB | None | 0 0
  1. #include <DS3232RTC.h>      // https://github.com/JChristensen/DS3232RTC
  2. #include <Adafruit_NeoPixel.h>
  3. #define PIN 2
  4. Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
  5.  
  6. String tmp="x";
  7. int hang[7]={200,500,1000,2000,2500,3000,3500};
  8. int hossz=200;
  9. int szunet=200;
  10. int szam1=0;
  11. int szam2=0;
  12. int elozo=0;
  13. int mode=0;
  14. int digit1=0;
  15. int digit2=0;
  16. int pix=0;
  17.  
  18. #define Gomb1 6
  19. #define Gomb2 7
  20. #define Gomb3 4
  21. #define Gomb4 5
  22.  
  23. void setup() {
  24.   Serial.begin(115200);
  25.   Serial.println("Start");
  26.   setSyncProvider(RTC.get);   // the function to get the time from the RTC
  27.   if(timeStatus() != timeSet)
  28.     Serial.println("Unable to sync with the RTC");
  29.   else
  30.     Serial.println("RTC has set the system time");
  31.  
  32.   strip.begin();
  33.   strip.show();
  34.   strip.setBrightness(32);
  35.   delay(500);
  36.   for(int dot = 0; dot < 60; dot++) {
  37.       strip.setPixelColor(dot, 255, 255, 255);
  38.       strip.show();
  39.   }
  40.   delay(500);
  41.   for(int dot = 0; dot < 60; dot++) {
  42.       strip.setPixelColor(dot, 0, 0, 0);
  43.       strip.show();
  44.   }
  45.   delay(500);
  46.  
  47.   pinMode(4, INPUT);
  48.   pinMode(5, INPUT);
  49.   pinMode(6, INPUT);
  50.   pinMode(7, INPUT);
  51.   digitalWrite(4, HIGH);
  52.   digitalWrite(5, HIGH);
  53.   digitalWrite(6, HIGH);
  54.   digitalWrite(7, HIGH);
  55.  
  56.   delay(1000);
  57.   for (int i=1; i<=9; i++){
  58.     konvert10(i);
  59.     Serial.print(tmp);
  60.     Serial.print(" - ");
  61.     Serial.println(tmp.length());
  62.     //megszolal(tmp);
  63.     //tmp=romai.substring(i,i+1);
  64.   }
  65. }
  66.  
  67. void loop() {
  68.   if (digitalRead(Gomb1)==0) {
  69.     mode=0;
  70.     for(int dot = 0; dot < 60; dot++) {
  71.       strip.setPixelColor(dot, 0, 0, 0);
  72.       strip.show();
  73.       }
  74.     pix=0;
  75.     szam1=hour();
  76.     digit2=szam1/10;
  77.     digit1=szam1-digit2*10;
  78.     Serial.print(digit2);
  79.     Serial.print(" - ");
  80.     Serial.println(digit1);
  81.     konvert10(digit2);
  82.     megszolal(tmp);
  83.     delay(500);
  84.     if (digit1!=0){
  85.       konvert1(digit1);
  86.       megszolal(tmp);
  87.       delay(500);
  88.       }
  89.     pix++;
  90.     szam1=minute();
  91.     digit2=szam1/10;
  92.     digit1=szam1-digit2*10;
  93.     Serial.print(digit2);
  94.     Serial.print(" - ");
  95.     Serial.println(digit1);
  96.     konvert10(digit2);
  97.     megszolal(tmp);
  98.     delay(500);
  99.     if (digit1!=0){
  100.       konvert1(digit1);
  101.       megszolal(tmp);
  102.       delay(500);
  103.       }
  104.   }
  105.   if (digitalRead(Gomb2)==0) {
  106.     mode=0;
  107.     for(int dot = 0; dot < 60; dot++) {
  108.       strip.setPixelColor(dot, 0, 0, 0);
  109.       strip.show();
  110.       }
  111.     pix=0;
  112.     szam1=hour();
  113.     digit2=szam1/10;
  114.     digit1=szam1-digit2*10;
  115.     Serial.print(digit2);
  116.     Serial.print(" - ");
  117.     Serial.println(digit1);
  118.     konvert10(digit2);
  119.     megszolal(tmp);
  120.     delay(500);
  121.     if (digit1!=0){
  122.       konvert1(digit1);
  123.       megszolal(tmp);
  124.       delay(500);
  125.       }
  126.     pix++;
  127.     szam1=minute();
  128.     digit2=szam1/10;
  129.     digit1=szam1-digit2*10;
  130.     Serial.print(digit2);
  131.     Serial.print(" - ");
  132.     Serial.println(digit1);
  133.     konvert10(digit2);
  134.     megszolal(tmp);
  135.     delay(500);
  136.     if (digit1!=0){
  137.       konvert1(digit1);
  138.       megszolal(tmp);
  139.       delay(500);
  140.       }
  141.     pix++;
  142.     szam1=second();
  143.     digit2=szam1/10;
  144.     digit1=szam1-digit2*10;
  145.     Serial.print(digit2);
  146.     Serial.print(" - ");
  147.     Serial.println(digit1);
  148.     konvert10(digit2);
  149.     megszolal(tmp);
  150.     delay(500);
  151.     if (digit1!=0){
  152.       konvert1(digit1);
  153.       megszolal(tmp);
  154.       delay(500);
  155.       }
  156.   }
  157.   if (digitalRead(Gomb3)==0) {
  158.     mode=1;
  159.     Serial.println("Mode 1");
  160.   }
  161.   if (digitalRead(Gomb4)==0) {
  162.     tone(9,1400,200);
  163.     delay(500);
  164.     Serial.println("4");
  165.   }
  166.   if (mode==1){
  167.   szam1=second();
  168.   if (szam1!=elozo) {
  169.     elozo=szam1;
  170.     for(int dot = 0; dot < 60; dot++) {
  171.       strip.setPixelColor(dot, 0, 0, 0);
  172.       //strip.show();
  173.       }
  174.     strip.setPixelColor(szam1, 0, 0, 255);
  175.     szam1=minute();
  176.     strip.setPixelColor(szam1, 0, 255, 0);
  177.     szam2=hour();
  178.     if (szam2>=12)
  179.       szam2=szam2-12;
  180.     szam1=szam2*5+szam1/12;
  181.     strip.setPixelColor(szam1, 255, 0, 0);
  182.   }
  183.   strip.show();
  184.   }
  185. }
  186.  
  187. void megszolal(String romaiszam) {
  188.   //Serial.print(" Romaiszam ");
  189.   //Serial.print(romaiszam);
  190.   //Serial.print(" romaiszam hossz ");
  191.   //Serial.println(romaiszam.length());
  192.   for (int i=0; i<romaiszam.length(); i++){
  193.     //Serial.print(".");
  194.     //Serial.print(romaiszam.substring(i,i+1));
  195.     hangzik(romaiszam.substring(i,i+1));
  196.   }
  197.   Serial.println(".");
  198. }
  199.  
  200. void hangzik(String betu) {
  201.   if (betu=="I") {
  202.     Serial.print(" -I- ");
  203.     if (mode==0){
  204.       strip.setPixelColor(pix, 255, 0, 0);
  205.       strip.show();
  206.       pix++;
  207.       }
  208.     tone(9,hang[0],hossz);
  209.     delay(szunet);
  210.   }
  211.   if (betu=="V") {
  212.     Serial.print(" -V- ");
  213.     if (mode==0){
  214.       strip.setPixelColor(pix, 0, 255, 0);
  215.       strip.show();
  216.       pix++;
  217.       }
  218.     tone(9,hang[1],hossz);
  219.     delay(szunet);
  220.   }
  221.   if (betu=="X") {
  222.     Serial.print(" -X- ");
  223.     if (mode==0){
  224.       strip.setPixelColor(pix, 0, 0, 255);
  225.       strip.show();
  226.       pix++;
  227.       }
  228.     tone(9,hang[2],hossz);
  229.     delay(szunet);
  230.   }
  231.   if (betu=="L") {
  232.     Serial.print(" -L- ");
  233.     if (mode==0){
  234.       strip.setPixelColor(pix, 255, 255, 0);
  235.       strip.show();
  236.       pix++;
  237.       }
  238.     tone(9,hang[3],hossz);
  239.     delay(szunet);
  240.   }
  241.   if (betu=="C") {
  242.     Serial.print(" -C- ");
  243.     if (mode==0){
  244.       strip.setPixelColor(pix, 255, 0, 255);
  245.       strip.show();
  246.       pix++;
  247.       }
  248.     tone(9,hang[4],hossz);
  249.     delay(szunet);
  250.   }
  251.   if (betu=="D") {
  252.     Serial.print(" -D- ");
  253.     if (mode==0){
  254.       strip.setPixelColor(pix, 0, 255, 255);
  255.       strip.show();
  256.       pix++;
  257.       }
  258.     tone(9,hang[5],hossz);
  259.     delay(szunet);
  260.   }
  261.   if (betu=="M") {
  262.     Serial.print(" -M- ");
  263.     if (mode==0){
  264.       strip.setPixelColor(pix, 255, 255, 255);
  265.       strip.show();
  266.       pix++;
  267.       }
  268.     tone(9,hang[6],hossz);
  269.     delay(szunet);
  270.   }
  271.   if (betu=="N") {
  272.     Serial.print(" -Nulla- ");
  273.     tone(9,30,hossz);
  274.     delay(szunet);
  275.   }
  276. }
  277.  
  278. void konvert1(int szam) {
  279.   Serial.print(szam);
  280.   Serial.print(" - ");
  281.   switch (szam) {
  282.     case 0:
  283.     tmp="N";
  284.       break;
  285.     case 1:
  286.     tmp="I";
  287.       break;
  288.     case 2:
  289.     tmp="II";
  290.       break;
  291.     case 3:
  292.     tmp="III";
  293.       break;
  294.     case 4:
  295.     tmp="IV";
  296.       break;
  297.     case 5:
  298.     tmp="V";
  299.       break;
  300.     case 6:
  301.     tmp="VI";
  302.       break;
  303.     case 7:
  304.     tmp="VII";
  305.       break;
  306.     case 8:
  307.     tmp="VIII";
  308.       break;
  309.     case 9:
  310.     tmp="IX";
  311.       break;
  312.   }
  313. }
  314.  
  315. void konvert10(int szam) {
  316.   Serial.print(szam);
  317.   Serial.print(" - ");
  318.   switch (szam) {
  319.     case 0:
  320.     tmp="N";
  321.       break;
  322.     case 1:
  323.     tmp="X";
  324.       break;
  325.     case 2:
  326.     tmp="XX";
  327.       break;
  328.     case 3:
  329.     tmp="XXX";
  330.       break;
  331.     case 4:
  332.     tmp="XL";
  333.       break;
  334.     case 5:
  335.     tmp="L";
  336.       break;
  337.     case 6:
  338.     tmp="LX";
  339.       break;
  340.     case 7:
  341.     tmp="LXX";
  342.       break;
  343.     case 8:
  344.     tmp="LXXX";
  345.       break;
  346.     case 9:
  347.     tmp="XC";
  348.       break;
  349.   }
  350. }
  351.  
  352. void konvert100(int szam) {
  353.   Serial.print(szam);
  354.   Serial.print(" - ");
  355.   switch (szam) {
  356.     case 0:
  357.     tmp="N";
  358.       break;
  359.     case 1:
  360.     tmp="C";
  361.       break;
  362.     case 2:
  363.     tmp="CC";
  364.       break;
  365.     case 3:
  366.     tmp="CCC";
  367.       break;
  368.     case 4:
  369.     tmp="CD";
  370.       break;
  371.     case 5:
  372.     tmp="D";
  373.       break;
  374.     case 6:
  375.     tmp="DC";
  376.       break;
  377.     case 7:
  378.     tmp="DCC";
  379.       break;
  380.     case 8:
  381.     tmp="DCCC";
  382.       break;
  383.     case 9:
  384.     tmp="CM";
  385.       break;
  386.   }
  387. }
  388.  
  389. void konvert1000(int szam) {
  390.   Serial.print(szam);
  391.   Serial.print(" - ");
  392.   switch (szam) {
  393.     case 0:
  394.     tmp="N";
  395.       break;
  396.     case 1:
  397.     tmp="M";
  398.       break;
  399.     case 2:
  400.     tmp="MM";
  401.       break;
  402.     case 3:
  403.     tmp="MMM";
  404.       break;
  405.   }
  406. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement