Projeto do jogo de memória Genius. Esquema de Montagem Montagem na Prática Programação //Jogo Genius //www.professorakeila.com.br // ----------- Bloco defines ------------------ // #define LED_A 5 #define LED_B 6 #define LED_C 7 #define BUTTON_A 8 #define BUTTON_B 9 #define BUTTON_C 10 #define BUZZER 11 #define TOM_A 1200 #define TOM_B 1600 #define TOM_C 2000 #define TEMPO_PISCA 600 #define TEMPO_ENTRE 150 #define QT_SEQ 6 int sorteados[QT_SEQ]; // QT_SEQ é o tamanho da sequência dos leds // ----------- Declaração da função de cada elemento ---------------- // void setup() { Serial.begin(9600); pinMode(LED_A, OUTPUT); pinMode(LED_B, OUTPUT); pinMode(LED_C, OUTPUT); pinMode(BUTTON_A, INPUT_PULLUP); pinMode(BUTTON_B, INPUT_PULLUP); pinMode(BUTTON_C, INPUT_PULLUP); pinMode(BUZZER, OUTPUT); randomSeed(analogRead(0)); // sorteia uma nova sequencia toda vez que liga o Arduino } // ----------- Loop do sorteio, leitura de botão e comparação --------- // void loop() { // acende tudo digitalWrite(LED_A, HIGH); digitalWrite(LED_B, HIGH); digitalWrite(LED_C, HIGH); le_botao(); // Jogador aperta qlqer botão e já inicia o sorteio // apaga tudo digitalWrite(LED_A, LOW); digitalWrite(LED_B, LOW); digitalWrite(LED_C, LOW); delay(500); // ------ Bloco do sorteio da sequência -------- // for (int jogada = 0; jogada < QT_SEQ; jogada ++) { // QT_SEQ é o tamanho da sequência - quantas vezes os leds piscam sorteados[jogada] = random(3); pisca_led(sorteados[jogada]); delay(TEMPO_ENTRE); }// fim do sorteio // ------ Bloco que compara a sequência com os botoes apertados -------- // int vez; // definido fora do for para poder verificar numero de acertos no final for (vez = 0; vez < QT_SEQ; vez ++) { if (le_botao() == sorteados[vez]) { pisca_led(sorteados[vez]); } else { pisca_led(sorteados[vez]); break; // sai do for } } //fim do for // ------ Bloco que demonstra o resultado -------- // if (vez == QT_SEQ) { // acertou seq. inteira delay(500); for (int i = 0; i < 3; i++) { tone(BUZZER, 2000); delay(200); tone(BUZZER, 4000); delay(200); } noTone(BUZZER); } else { // errou algo delay(500); for (int i = 0; i < 3; i++) { tone(BUZZER, 200); delay(200); tone(BUZZER, 300); delay(200); } noTone(BUZZER); } } // fim do loop // ------- Função piscar Led ------- // void pisca_led(int posicao) { Serial.println(posicao); if (posicao == 0) { digitalWrite(LED_A, HIGH); tone (BUZZER, TOM_A); delay(TEMPO_PISCA); digitalWrite(LED_A, LOW); } else if (posicao == 1) { digitalWrite(LED_B, HIGH); tone (BUZZER, TOM_B); delay(TEMPO_PISCA); digitalWrite(LED_B, LOW); } else if (posicao == 2) { digitalWrite(LED_C, HIGH); tone (BUZZER, TOM_C); delay(TEMPO_PISCA); digitalWrite(LED_C, LOW); } delay(100); noTone(BUZZER); } // fim do pisca_led // ----------- Função ler os botões -------- // int le_botao () { int result = -1; // -1 indica que nenhum botão foi apertado while (result == -1) { if (digitalRead(BUTTON_A) == LOW) { result = 0; //posição 0 } else if (digitalRead(BUTTON_B) == LOW) { result = 1; } else if (digitalRead(BUTTON_C) == LOW) { result = 2; } } // fim do while return result; // retorna o inteiro int le_botao }
Olá!
ResponderExcluirProfessora Keila gostaria de falar com vc... poderia me mandar um email...
ruclecia@gmail.com
ameeeeeeei
ResponderExcluir