Advertisement
rogerin

Roleta

Jul 28th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.06 KB | None | 0 0
  1.  
  2. #include <Wire.h>
  3. #include "RTClib.h"
  4.  
  5. RTC_DS1307 rtc;
  6.  
  7. // UNO
  8. int led[8] = {9,10,11,12,A0,A1,A2,A3};
  9.  
  10. int especialPin = led[0];
  11. int maximoDia = 2; // teste
  12. int totalDia = 0;
  13. boolean maximoAtingido = false;
  14.  
  15. int diaAtual;
  16.  
  17. int totalPinos = 8;
  18.  
  19. int botaoPin = 2;
  20. int statusBotao;
  21. boolean iniciaRoleta = false;
  22.  
  23. int del = 50; //
  24.  
  25. int atual = 0;
  26. int aleatorio;
  27.  
  28. int buzzer = 8;
  29.  
  30. void setup(){
  31.   Serial.begin(9600);
  32.  
  33. #ifdef AVR
  34.   Wire.begin();
  35. #else
  36.   Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
  37. #endif
  38.   rtc.begin();
  39.  
  40.   if (! rtc.isrunning()) {
  41.     Serial.println("RTC is NOT running!");
  42.     // following line sets the RTC to the date & time this sketch was compiled
  43.     rtc.adjust(DateTime(__DATE__, __TIME__));
  44.   }
  45.  
  46.   pinMode(buzzer, OUTPUT);
  47.  
  48.   pinMode(botaoPin, INPUT);
  49.   digitalWrite(botaoPin, LOW);
  50.  
  51.  
  52.    randomSeed(analogRead(0));
  53.   aleatorio = random(100, 300); //
  54.  
  55.  
  56. }
  57.  
  58. void loop(){
  59.   DateTime now = rtc.now();
  60.  
  61.   if(diaAtual == now.day()) {
  62.     if(totalDia >= maximoDia) {
  63.       maximoAtingido = true;
  64.     }
  65.   } else {
  66.     diaAtual = now.day();
  67.     totalDia = 0;
  68.     maximoAtingido = false;
  69.     Serial.println("Setando data");
  70.   }
  71.  
  72.   statusBotao = digitalRead(botaoPin);
  73.   if(statusBotao) { iniciaRoleta = true; }
  74.  
  75.  
  76.   if(iniciaRoleta) {
  77.     zerar();
  78.     for(int i = 0;i < totalPinos;i++){
  79.       if (del < aleatorio)
  80.       {
  81.         executa(i);
  82.         bipi(i);
  83.       }
  84.       else
  85.       {
  86.         if(led[atual] == especialPin){
  87.           totalDia++;
  88.           Serial.println();
  89.           Serial.print("Especial Sorteado: ");
  90.           Serial.print(led[atual]);
  91.           Serial.print(" Total: ");
  92.           Serial.print(totalDia);
  93.           Serial.print(" Hoje ");
  94.           Serial.println();
  95.          
  96.         } else {
  97.           Serial.println();
  98.           Serial.print("Pino Sorteado: ");
  99.           Serial.print(led[atual]);
  100.           Serial.println();
  101.         }
  102.        
  103.         if(maximoAtingido) {
  104.           if(led[atual] == especialPin) {
  105.             int valor = atual+1;
  106.             digitalWrite(led[valor], HIGH);
  107.             Serial.println();
  108.             Serial.print("Maximo atingido ");
  109.             Serial.print("atual :");
  110.             Serial.print(atual);
  111.             Serial.print(" valor :");
  112.             Serial.print(valor);
  113.            
  114.             Serial.println();
  115.           } else {
  116.             Serial.println();
  117.             Serial.print("Maximo atingido, mas o sorteado eh o mesmo ");
  118.             Serial.print("sorteado:");
  119.             Serial.print(led[atual]);
  120.             Serial.println();
  121.             digitalWrite(led[atual], HIGH);
  122.           }
  123.          
  124.         } else {
  125.           digitalWrite(led[atual], HIGH);
  126.         }
  127.         Serial.println();
  128.         Serial.print("Dia cadastrada: ");
  129.         Serial.print(diaAtual);
  130.         Serial.print(" Direto do RTC: ");
  131.         Serial.print(now.day());
  132.         Serial.println();
  133.         iniciaRoleta = false;
  134.         fim();
  135.         break;
  136.       }
  137.     }
  138.    
  139.     if(iniciaRoleta) {
  140.     } else {
  141.       del = 50;
  142.        randomSeed(analogRead(0));
  143.       aleatorio = random(100, 300);
  144.       digitalWrite(buzzer, LOW);
  145.     }
  146.   }
  147. }
  148.  
  149. void executa(int i){
  150.     digitalWrite(led[i], HIGH);
  151.     delay(del);
  152.     digitalWrite(led[i], LOW);
  153.     del+=1;
  154.     atual = i;
  155. }
  156.  
  157. void zerar(){
  158.   for(int i = 0;i < totalPinos;i++){
  159.     digitalWrite(led[i], LOW);
  160.   }
  161. }
  162.  
  163. void bipi(int pin){
  164.   int i = pin % 2;
  165.   if(i) {
  166.     digitalWrite(buzzer, HIGH);
  167.   }
  168.   else {
  169.     digitalWrite(buzzer, LOW);
  170.   }
  171. }
  172.  
  173. void fim(){
  174.   #define tempo 10
  175.   int frequencia = 0;
  176.      for (frequencia = 150; frequencia < 1800; frequencia += 1) {
  177.     tone(8, frequencia, tempo);
  178.   delay(1);
  179.   }
  180.   for (frequencia = 1800; frequencia > 150; frequencia -= 1) {
  181.     tone(8, frequencia, tempo);
  182.   delay(1);
  183.   }
  184.  
  185.   for (frequencia = 150; frequencia < 1800; frequencia += 4) {
  186.     tone(8, frequencia, tempo);
  187.   delay(1);
  188.   }
  189.   for (frequencia = 1800; frequencia > 150; frequencia -= 4) {
  190.     tone(8, frequencia, tempo);
  191.   delay(1);
  192.   }
  193.   for (frequencia = 150; frequencia < 1800; frequencia += 4) {
  194.     tone(8, frequencia, tempo);
  195.   delay(1);
  196.   }
  197.   for (frequencia = 1800; frequencia > 150; frequencia -= 4) {
  198.     tone(8, frequencia, tempo);
  199.   delay(1);
  200.   }
  201.  
  202.   for (frequencia = 150; frequencia < 1800; frequencia += 16) {
  203.     tone(8, frequencia, tempo);
  204.   delay(1);
  205.   }
  206.   for (frequencia = 1800; frequencia > 150; frequencia -= 16) {
  207.     tone(8, frequencia, tempo);
  208.   delay(1);
  209.   }
  210.       for (frequencia = 150; frequencia < 1800; frequencia += 32) {
  211.     tone(8, frequencia, tempo);
  212.   delay(1);
  213.   }
  214.   for (frequencia = 1800; frequencia > 150; frequencia -= 32) {
  215.     tone(8, frequencia, tempo);
  216.   delay(1);
  217.   }
  218.  
  219.   for (frequencia = 150; frequencia < 1800; frequencia += 16) {
  220.     tone(8, frequencia, tempo);
  221.   delay(1);
  222.   }
  223.   for (frequencia = 1800; frequencia > 150; frequencia -= 16) {
  224.     tone(8, frequencia, tempo);
  225.   delay(1);
  226.   }
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.    
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement