Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.06 KB | None | 0 0
  1. /*
  2.     @Autor: George Victor
  3.     @Version: 0.1
  4.  
  5.     @Description:
  6.       Projeto de desenvolvimento de um labirinto elétrico onde o jogador necessita de passar por
  7.       três etapas:
  8.         1. Ativação na ilha inicial
  9.         2. Passar com o anel por todo o percurso, sem tocar na trilha
  10.         3. Finalização do Percurso na ilha final
  11.       A etapa inicial é ativação do sistema através de um interruptor que alimenta o sistema.
  12.       Após a terceira etapa, será acionado um RELÉ para abrir uma trava eletrônica.
  13.  
  14.       O sistema também conta com 3 leds e 1 buzzer.
  15.         - Led #1: Sistema Ligado
  16.         - Led #2: Vitoria!
  17.         - Led #3: Perdeu, volte para o começo.
  18. */
  19.  
  20. //OUTPUTS
  21. #define rele 2
  22. #define led1 3 // led 1 = power
  23. #define led2 4 // led 2 = vitoria
  24. #define led3 5 // led 3 = perdeu
  25. #define buzzer 6
  26.  
  27. //INPUTS
  28. #define ilha1 10
  29. #define ilha2 11
  30. #define trilha 12
  31.  
  32. //Auxiliares
  33. int i = 0;
  34. bool aguardaIlha1 = true;
  35.  
  36. // Tempo de delay para filtragem do sinal da ilha
  37. int TEMPO_ESPERA = 1000;
  38.  
  39. unsigned long tempoAgora = millis();
  40. unsigned long tempoDepois = 0;
  41.  
  42. void setup() {
  43.   Serial.begin(9600);
  44.   Serial.println("Comecou o setup");
  45.   // Setup OUTPUTS
  46.   pinMode(rele, OUTPUT);
  47.   digitalWrite(rele, HIGH); // Força com que o relé fique desligado
  48.  
  49.   pinMode(led1, OUTPUT);
  50.   pinMode(led2, OUTPUT);
  51.   pinMode(led3, OUTPUT);
  52.   pinMode(buzzer, OUTPUT);
  53.  
  54.   // Setup INPUTS
  55.  
  56.   /*
  57.      Para testes em bancada, foi necessário utilizar o INPUT_PULLUP
  58.      No caso de colocar o projeto no "local", será necessário fazer um input comum.
  59.   */
  60.   //pinMode(ilha1, INPUT_PULLUP); // Realizar um PULLDOWN EM TODOS INPUTS.
  61.   //pinMode(ilha2, INPUT_PULLUP);
  62.   pinMode(ilha1, INPUT);
  63.   pinMode(ilha2, INPUT);
  64.   pinMode(trilha, INPUT);
  65.  
  66.   delay(200);
  67.   digitalWrite(led1, HIGH);
  68.   digitalWrite(led3, HIGH);
  69.   Serial.println("Terminou o setup e comecou o loop!");
  70. }
  71.  
  72. void loop() {
  73.   // Aguarda que o anel seja posicionado na primeira ilha para iniciar o jogo
  74.   aguarda_ilha1();
  75.  
  76.   // Aguarda que o anel seja posicionado na segunda ilha para finalizar o jogo
  77.   aguarda_ilha2();
  78. }
  79.  
  80. // Aguarda o anel ficar por alguns segundos na primeira ilha para resetar o jogo.
  81. void aguarda_ilha1() {
  82.   while (aguardaIlha1) {
  83.     //Serial.println(digitalRead(ilha1));
  84.     //if (!digitalRead(ilha1)) { // Mudei aqui para teste em bancada
  85.     if (digitalRead(ilha1)) {
  86.       tempoDepois = millis();
  87.       if ((tempoDepois - tempoAgora) > TEMPO_ESPERA)
  88.       {
  89.         digitalWrite(led3, LOW);
  90.         tone(buzzer, 400);
  91.         delay(500);
  92.         noTone(buzzer);
  93.         aguardaIlha1 = false;
  94.         Serial.println("Passou " + String(TEMPO_ESPERA) + " ms na ILHA 1 e comecou o jogo");
  95.       }
  96.     } else {
  97.       tempoAgora = millis();
  98.     }
  99.   }
  100. }
  101.  
  102. /*
  103.  * Aguarda o toque na ilha 2
  104.  *
  105.  * Função responsável pela "execução" do jogo. Verifica toques na trilha
  106.  * bem como na ilha 2. Ao tocar na ilha 2, o jogador ganha o jogo e precisa
  107.  * resetar o arduino para voltar a jogar.
  108.  */
  109. void aguarda_ilha2() {
  110.   while (!aguardaIlha1) // Mudei aqui para teste em bancada
  111.   {
  112.     if (digitalRead(trilha) == true) {
  113.       digitalWrite(led3, HIGH);
  114.       tone(buzzer, 600);
  115.       delay(1000);
  116.       noTone(buzzer);
  117.  
  118.       aguardaIlha1 = true;
  119.       Serial.println("Bateu na trilha! Volte para a ilha 1");
  120.     }
  121.  
  122.     if (digitalRead(ilha2)) {
  123.       //if (!digitalRead(ilha2)) {
  124.       tempoDepois = millis();
  125.       if ((tempoDepois - tempoAgora) > TEMPO_ESPERA)
  126.       {
  127.         digitalWrite(led2, HIGH);
  128.         tone(buzzer, 800);
  129.         delay(1000);
  130.         noTone(buzzer);
  131.  
  132.         digitalWrite(rele, LOW); // Relé chaveia com LOW, destrava trava elétrica.
  133.         delay(1000);
  134.  
  135.         Serial.println("Ganhou o jogo, abriu a porta.");
  136.         Serial.println("===================================");
  137.         Serial.println("Para jogar novamente, reset o jogo!");
  138.         Serial.println("===================================");
  139.  
  140.         while (true) {}
  141.       }
  142.     } else {
  143.       tempoAgora = millis();
  144.     }
  145.   }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement