Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int dot = 35; // ??
- int SegA = 40; // Saída do segmento A
- int SegB = 41; // Saída do segmento B
- int SegC = 42; // Saída do segmento C
- int SegD = 43; // Saída do segmento D
- int SegE = 44; // Saída do segmento E
- int SegF = 45; // Saída do segmento F
- int SegG = 46; // Saída do segmento G
- unsigned int num = 11; // Variavel para o loop
- unsigned int vel = 11; // Variavel para a velocidade
- float lag; // Variavel para
- int digit; // Variavel para guardar o digito entrado
- int control=1; // Variavel para
- int score=0; // Variavel para
- int x=0; // Variavel para
- byte disp_7[11][7]={ // Array com o valores de seg para os digitos de 0 a 9
- {1,1,1,1,1,1,0}, // 0
- {0,1,1,0,0,0,0}, // 1
- {1,1,0,1,1,0,1}, // 2
- {1,1,1,1,0,0,1}, // 3
- {0,1,1,0,0,1,1}, // 4
- {1,0,1,1,0,1,1}, // 5
- {1,0,1,1,1,1,1}, // 6
- {1,1,1,0,0,0,0}, // 7
- {1,1,1,1,1,1,1}, // 8
- {1,1,1,1,0,1,1}, // 9
- {0,0,0,0,0,0,0}, // off (10) // Todos segmentos apagados
- };
- int led_correct=22; // Variavel para LED correto
- int led_fail=23; // Variavel para LED errado
- int buzz=24; // Variavel para som
- int button=25; // Variavel para botao de entrada do usuario
- void spd(int vel, float &lag); // Função de velocidade Recebe velocidade e ???
- void count(float lag, int num, int &score); // Função de contagem Recebe ????, numero informado e ???
- void turn_on(int digit); // Função de liga Recebe ???
- void turn_off(); // Função de desliga
- void score_total(int score); // Função de Resultado Final Recebe resultado
- void setup(){
- Serial.begin(9600); // inicializa serial a 9600bps
- pinMode(SegA, OUTPUT); //seg A // Define SegA como saída
- pinMode(SegB, OUTPUT); //seg B // Define SegB como saída
- pinMode(SegC, OUTPUT); //seg C // Define SegC como saída
- pinMode(SegD, OUTPUT); //seg D // Define SegD como saída
- pinMode(SegE, OUTPUT); //seg E // Define SegE como saída
- pinMode(SegF, OUTPUT); //seg F // Define SegF como saída
- pinMode(SegG, OUTPUT); //seg G // Define SegG como saída
- pinMode(dot, OUTPUT); //ponto // Define ponto como saída
- pinMode(led_correct, OUTPUT); // Define LED correto como saída
- pinMode(led_fail, OUTPUT); // Define LED errado como saída
- pinMode(buzz, OUTPUT); // Define som como saída
- pinMode(button, INPUT); // Define botao como entrada
- digitalWrite(button, HIGH); // Define Pull-up para botão
- Serial.println("Digite uma velocidade de 0 (muito devagar) a 9 (muito rapida) e aperte enter: ");
- }
- void loop(){
- if(Serial.available()>0){ // Se tiver dados na serial
- vel=Serial.parseInt(); // leia para variavel vel velocidade
- Serial.print("Velocidade escolhida = "); Serial.println(vel);
- Serial.println("\nInforme um digito para jogar, aperte enter e aguarde: ");
- delay(4000); // delay de 4seg
- num=Serial.parseInt(); // leia para variavel num numero
- Serial.print("Digito escolhido = "); Serial.println(num);
- spd(vel,lag); // chama função spd com velocidade e lag ??
- }
- if((vel<11)&&(num<11)){
- for(int c1=1; c1<=3; c1++){
- digitalWrite(dot,HIGH);
- delay(400);
- digitalWrite(dot,LOW);
- delay(400);
- }
- while(control<=9){
- count(lag, num, score, x);
- turn_off();
- for(int c2=1; c2<=3; c2++){
- digitalWrite(dot,HIGH);
- delay(400);
- digitalWrite(dot,LOW);
- delay(400);
- }
- control++;
- }
- score_total(score);
- Serial.print("\nPontuacao final = "); Serial.println(score);
- }
- vel=11;
- }
- void spd(int vel, float &lag){
- if(vel==0) lag=2000;
- if(vel==1) lag=1500;
- if(vel==2) lag=1000;
- if(vel==3) lag=900;
- if(vel==4) lag=800;
- if(vel==5) lag=600;
- if(vel==6) lag=500;
- if(vel==7) lag=300;
- if(vel==8) lag=200;
- if(vel==9) lag=80;
- }
- void turn_on(int digit, int num, int &x){
- if(digit==num) x++;
- digitalWrite(SegA, disp_7[digit][0]);
- digitalWrite(SegB, disp_7[digit][1]);
- digitalWrite(SegC, disp_7[digit][2]);
- digitalWrite(SegD, disp_7[digit][3]);
- digitalWrite(SegE, disp_7[digit][4]);
- digitalWrite(SegF, disp_7[digit][5]);
- digitalWrite(SegG, disp_7[digit][6]);
- }
- void turn_off(){
- digitalWrite(SegA, disp_7[10][0]);
- digitalWrite(SegB, disp_7[10][1]);
- digitalWrite(SegC, disp_7[10][2]);
- digitalWrite(SegD, disp_7[10][3]);
- digitalWrite(SegE, disp_7[10][4]);
- digitalWrite(SegF, disp_7[10][5]);
- digitalWrite(SegG, disp_7[10][6]);
- }
- void count(float lag, int num, int &x, int &score){
- for(int b=0; b<=9; b++){
- turn_on(b, num, x);
- if((digitalRead(button)==LOW)&&(x!=0)){
- digitalWrite(led_correct, HIGH);
- digitalWrite(buzz, HIGH);
- delay(lag);
- digitalWrite(led_correct, LOW);
- digitalWrite(buzz, LOW);
- score++; break;
- }
- else if(digitalRead(button)==LOW){
- digitalWrite(led_fail, HIGH);
- delay(lag);
- digitalWrite(led_fail, LOW);
- break;
- }
- delay(lag);
- x=0;
- }
- }
- void score_total(int score){
- digitalWrite(buzz, HIGH);
- for(int c3=1; c3<=5; c3++){
- digitalWrite(SegA, disp_7[0][0]);
- digitalWrite(SegB, disp_7[0][1]);
- digitalWrite(SegC, disp_7[0][2]);
- digitalWrite(SegD, disp_7[0][3]);
- digitalWrite(SegE, disp_7[0][4]);
- digitalWrite(SegF, disp_7[0][5]);
- digitalWrite(SegG, disp_7[0][6]);
- delay(250);
- digitalWrite(SegA, disp_7[10][0]);
- digitalWrite(SegB, disp_7[10][1]);
- digitalWrite(SegC, disp_7[10][2]);
- digitalWrite(SegD, disp_7[10][3]);
- digitalWrite(SegE, disp_7[10][4]);
- digitalWrite(SegF, disp_7[10][5]);
- digitalWrite(SegG, disp_7[10][6]);
- delay(250);
- }
- digitalWrite(buzz, LOW);
- turn_on(score, num, x);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement