hola muy buenos dias hora Argentina.
tengo problemas con ciertos concepto de programcion, quisiera saber como puedo integrar un contador hecho con un display de 7 segmentos de (0 A 9) a mi circuito (en este caso, el juego).
tengo 9 led y 9 pulsadores que se encientes aleatoriamente un vez precionado el pulsador de dicho led encendido.
lo que quiero hacer es que cada vez que precione el pulsador sume un punto! ( 1 - 2 - 3 - 4 etc)
(saque el codigo de tinkencard, el juego original tenia 4 pulsadores y le agregue mas y mas tiempo era de 15 seg, lo extendia 1 min y tambien le agregue sonido a los pulsadores) lo que quiero hacer es ponerle un display de 7 segmentos que valla sumando puntos; para empezar del 0 al 9 luego lo ire modificando.
les dejo el codigo ( la idea es sacar el LCD 16x2 Y cambiarlo por el display)
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
int time = 60;
const int buzzer = 13;
unsigned long prevMillis;
int count;
short int i;
int score = 0;
short int generateNextNum = 0;
volatile int stage = 1;
short int ranNum = 0;
void setup(){
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(buzzer, OUTPUT); // Set buzzer - pin 13 as an output
// pinMode(2, INPUT_PULLUP);
pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2), reset_routine, RISING);
}
void reset_routine()
{
if(stage == 1)
{
stage = 2;
} else
if(stage == 3)
{
generateNextNum = 1;
digitalWrite(ranNum,LOW);
} else
if(stage == 4)
{
stage = 1;
}
}
void welcome_routine()
{
digitalWrite(3,HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Welcome. Press");
lcd.setCursor(0, 1);
lcd.print("button to start.");
while(stage == 1){}
}
void start_routine()
{
lcd.clear();
for(i=0; i<=2; i++)
{
for(int x=3; x<=11; x++)
{
digitalWrite(x,HIGH);
}
lcd.setCursor(0, 0);
if(i==0){
lcd.print("Get ready");
}else if(i==1){
lcd.print("Set");
}else if(i==2){
lcd.print("GO");
}
tone(buzzer, 500); // Send 1KHz sound signal...
delay(100);
noTone(buzzer);
lcd.clear();
for(int x=3; x<=11; x++)
{
digitalWrite(x,LOW);
}
delay(500);
}
lcd.clear();
stage = 3;
score = 0;
count = time;
ranNum = 0;
}
void finish_routine()
{
stage = 4;
digitalWrite(ranNum,LOW);
lcd.clear();
tone(buzzer, 500); // Send 1KHz sound signal...
delay(100);
noTone(buzzer);
lcd.setCursor(0, 0);
lcd.print("Game Over.");
lcd.setCursor(0, 1);
lcd.print("Score:");
lcd.setCursor(10, 1);
lcd.print(score);
delay(3000);
digitalWrite(3,HIGH);
while(stage == 4){}
}
void loop(){
welcome_routine();
start_routine();
prevMillis = millis();
lcd.setCursor(0, 0);
lcd.print("Time:");
lcd.setCursor(10, 0);
lcd.print(count);
lcd.setCursor(0, 1);
lcd.print("Score:");
lcd.setCursor(10, 1);
lcd.print(score);
char countString[] = "";
while(count > 0){
if(ranNum != 0)
{
score = score + 1;
}
int ranNumOld = ranNum;
while(ranNumOld == ranNum)
{
ranNum = random(3,12);
}
digitalWrite(ranNum,HIGH);
generateNextNum = 0;
while(generateNextNum == 0 && count > 0)
{
unsigned long curMillis = millis();
if(curMillis - prevMillis >= 300)
{
count -= 1;
//countString[] = count+" ";
//lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time:");
lcd.setCursor(10, 0);
lcd.print(String(count)+" ");
lcd.setCursor(0, 1);
lcd.print("Score:");
lcd.setCursor(10, 1);
lcd.print(score);
prevMillis = prevMillis +300;
}
}
}
finish_routine();
}