Skip to content

Instantly share code, notes, and snippets.

@eduardodx
Created November 9, 2011 23:01
Show Gist options
  • Save eduardodx/1353457 to your computer and use it in GitHub Desktop.
Save eduardodx/1353457 to your computer and use it in GitHub Desktop.
Arduino - Simon Says
/**
* Arduino - Simon Says
* ELTN.4M - Douglas Antunes, Eduardo Souza, Joao Gabriel e Mateus Mahado
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int rounds = 50;
int vec[50];
int vecRound[50];
int btnPin = 0;
int buzzerPin = 13 ;
int answer;
int error = 0;
void show ( int led )
{
int tons[4] = {392, 440, 494, 523};
digitalWrite( led, HIGH );
tone( buzzerPin, tons[led - 7], 300 );
delay( 300 );
digitalWrite( led, LOW );
delay( 200 );
}
void setup ()
{
Serial.begin(9600);
lcd.begin(16, 2);
/** Leds **/
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
/** Buzzer **/
pinMode(buzzerPin, OUTPUT);
/** Button **/
pinMode(btnPin, INPUT);
}
void loop ()
{
/** Preencher vetor com sequencia aleatoria **/
for ( int i = 0; i < rounds; i++ ) {
vec[i] = random(7, 11); // Usar pinos de 0 a 4 para saida dos leds
}
Serial.println("INCIO \n");
/** Percorre toda a sequencia (ate o fim, ou ate que erre) **/
for ( int i = 0; i < rounds; i++ ) {
lcd.clear();
lcd.print("Minha Vez");
/** Preenche o vetor com a sequencia E acender os leds **/
for ( int j = 0; j < i; j++ ) {
vecRound[j] = vec[j];
/** Acender e apagar o led da sequencia **/
show( vec[j] );
}
/** Verificar se a sequencia digitada e a mesma da mostrada **/
for ( int j = 0; j < i; j++ ) {
answer = 1023;
lcd.clear();
lcd.print("Sua Vez");
/** Entrar em loop ate que algo seja digitado **/
do {
answer = analogRead( btnPin );
} while ( answer == 1023 );
/** Colocar nivel analogico como botao **/
if ( answer > 495 && answer < 560 ) {
answer = 10;
} else if ( answer > 640 && answer < 720 ) {
answer = 9;
} else if ( answer > 730 && answer < 790 ) {
answer = 8;
} else if ( answer > 800 && answer < 840 ) {
answer = 7;
}
show( answer );
delay( 400 );
/** Verificar no. sequencia, caso erre sai e passa "error" para 1 e diz para sair do outro loop tambem **/
if ( answer != vecRound[j] ) {
i = 0;
lcd.clear();
lcd.print("Voce errou");
tone( buzzerPin, 44, 500);
delay( 500 );
lcd.clear();
lcd.print("Reiniciando");
delay( 500 );
} else {
error = 0;
}
}
/** Sai do loop principal caso sequencia errada **/
if ( error > 0 ) {
break;
}
Serial.println("-----------");
}
}
@mateuswetah
Copy link

Que tal assim? void simbolo (cor){
if (cor = vermelho){
digitalWrite (ledred,HIGH);
tone (13,784,1000);
delay (1000)
digitalWrite (ledred,LOW)
}
if (cor = verde){
digitalWrite (ledgreen,HIGH);
tone (13,698,1000);
delay (1000)
digitalWrite (ledgreen,LOW)
}
if (cor = azul){
digitalWrite (ledblue,HIGH);
tone (13,659,1000);
delay (1000)
digitalWrite (ledblue,LOW)
}
if (cor = amarelo){
digitalWrite (ledyellow,HIGH);
tone (13,587,1000);
delay (1000)
digitalWrite (ledyellow,LOW)
}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment