Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include "RTClib.h"
- RTC_DS1307 rtc;
- // UNO
- int led[8] = {9,10,11,12,A0,A1,A2,A3};
- int especialPin = led[0];
- int maximoDia = 2; // teste
- int totalDia = 0;
- boolean maximoAtingido = false;
- int diaAtual;
- int totalPinos = 8;
- int botaoPin = 2;
- int statusBotao;
- boolean iniciaRoleta = false;
- int del = 50; //
- int atual = 0;
- int aleatorio;
- int buzzer = 8;
- void setup(){
- Serial.begin(9600);
- #ifdef AVR
- Wire.begin();
- #else
- Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
- #endif
- rtc.begin();
- if (! rtc.isrunning()) {
- Serial.println("RTC is NOT running!");
- // following line sets the RTC to the date & time this sketch was compiled
- rtc.adjust(DateTime(__DATE__, __TIME__));
- }
- pinMode(buzzer, OUTPUT);
- pinMode(botaoPin, INPUT);
- digitalWrite(botaoPin, LOW);
- randomSeed(analogRead(0));
- aleatorio = random(100, 300); //
- }
- void loop(){
- DateTime now = rtc.now();
- if(diaAtual == now.day()) {
- if(totalDia >= maximoDia) {
- maximoAtingido = true;
- }
- } else {
- diaAtual = now.day();
- totalDia = 0;
- maximoAtingido = false;
- Serial.println("Setando data");
- }
- statusBotao = digitalRead(botaoPin);
- if(statusBotao) { iniciaRoleta = true; }
- if(iniciaRoleta) {
- zerar();
- for(int i = 0;i < totalPinos;i++){
- if (del < aleatorio)
- {
- executa(i);
- bipi(i);
- }
- else
- {
- if(led[atual] == especialPin){
- totalDia++;
- Serial.println();
- Serial.print("Especial Sorteado: ");
- Serial.print(led[atual]);
- Serial.print(" Total: ");
- Serial.print(totalDia);
- Serial.print(" Hoje ");
- Serial.println();
- } else {
- Serial.println();
- Serial.print("Pino Sorteado: ");
- Serial.print(led[atual]);
- Serial.println();
- }
- if(maximoAtingido) {
- if(led[atual] == especialPin) {
- int valor = atual+1;
- digitalWrite(led[valor], HIGH);
- Serial.println();
- Serial.print("Maximo atingido ");
- Serial.print("atual :");
- Serial.print(atual);
- Serial.print(" valor :");
- Serial.print(valor);
- Serial.println();
- } else {
- Serial.println();
- Serial.print("Maximo atingido, mas o sorteado eh o mesmo ");
- Serial.print("sorteado:");
- Serial.print(led[atual]);
- Serial.println();
- digitalWrite(led[atual], HIGH);
- }
- } else {
- digitalWrite(led[atual], HIGH);
- }
- Serial.println();
- Serial.print("Dia cadastrada: ");
- Serial.print(diaAtual);
- Serial.print(" Direto do RTC: ");
- Serial.print(now.day());
- Serial.println();
- iniciaRoleta = false;
- fim();
- break;
- }
- }
- if(iniciaRoleta) {
- } else {
- del = 50;
- randomSeed(analogRead(0));
- aleatorio = random(100, 300);
- digitalWrite(buzzer, LOW);
- }
- }
- }
- void executa(int i){
- digitalWrite(led[i], HIGH);
- delay(del);
- digitalWrite(led[i], LOW);
- del+=1;
- atual = i;
- }
- void zerar(){
- for(int i = 0;i < totalPinos;i++){
- digitalWrite(led[i], LOW);
- }
- }
- void bipi(int pin){
- int i = pin % 2;
- if(i) {
- digitalWrite(buzzer, HIGH);
- }
- else {
- digitalWrite(buzzer, LOW);
- }
- }
- void fim(){
- #define tempo 10
- int frequencia = 0;
- for (frequencia = 150; frequencia < 1800; frequencia += 1) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 1) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 150; frequencia < 1800; frequencia += 4) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 4) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 150; frequencia < 1800; frequencia += 4) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 4) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 150; frequencia < 1800; frequencia += 16) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 16) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 150; frequencia < 1800; frequencia += 32) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 32) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 150; frequencia < 1800; frequencia += 16) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- for (frequencia = 1800; frequencia > 150; frequencia -= 16) {
- tone(8, frequencia, tempo);
- delay(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement