Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, estou tentando fazer um codigo que gera dois numeros randoms e após isso ele calcula a multiplicação entre eles e armazena em uma variavel; Ai eu peço pra digitarem o valor da multiplicação e se esse valor digitado for igual o da variavel, ele acende um led, caso seja diferente ele acende um lende vermelho; Código:


int ledazul1=8;

int ledazul2=9;

int ledazul3=10;

int ledazul4=11;

int ledazul5=12;

 

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

  pinMode(8,OUTPUT);

  pinMode(9,OUTPUT);

  pinMode(10,OUTPUT);

  pinMode(11,OUTPUT);

  pinMode(12,OUTPUT);

  randomSeed(analogRead(0));

}

 

void loop() {

  // put your main code here, to run repeatedly:

  int p=8;

 for(int i=0;i<=10;i++){

   int x=random(1,10);

  int y=random(1,10);

  int t;

  Serial.println(x,"vezes",y);

  Serial.println(y);

  t=x*y;

  Serial.println("digite o resultado//jogador 1:");

 int z=Serial.parseInt();

 if(z==t){

    digitalWrite(p,HIGH);

    Serial.println("eba1");

    p++;}

    else{

    digitalWrite(15,HIGH);

    digitalWrite(15,LOW);

    delay(2000);

    }

 

  Serial.println("digite o resultado//jogador 2:");

  int z1=Serial.parseInt();

  delay(2000);

   if(z1==t){

    digitalWrite(p,HIGH);

    Serial.println("eba2");

    p++;}

    else{

    digitalWrite(15,HIGH);

    digitalWrite(15,LOW);

    delay(2000);}

   }

  • Membro VIP
Postado

O random(1,10) gera long de 1 a 9. Uma alternativa é restringir o resultado do parseint. Algo como

z=constrain(serial.parserint(),1,1+x*y);

 

off semi on...

Me fez lembrar um dos meus 1ºs em basic lá nos 80's. Algo como

x=int(rnd(1)*100)
input a$
if a$<x print "menor"
if a$>x print "maior"
if a$=x print "acertou!"

Por incrível que pareça, um pouco antes deste tópico pensei em fazer algo como no appinventor. Sério!!

Postado

@Isadora Ferraz Meu erro ocorre não parte de igualar o valor da multiplicação(t=x*y) com o valor que vai ser digitado pelo usuário(z), por exemplo random do x e y, gera 3 e 5, ai eu faco t=3*5 e se o usuario digitar 15 eu armazeno na variavel z e caso esteja certo um led acende. Tem como fazer isso?

  • Membro VIP
Postado

Claro amigo. Mas mesmo assim.. como assim? Não sai do lugar? Nunca iguala?  trava? Pra teste, mande imprimir tudo na tela, t, x,y,z e etc. Perceba agora que você coloca a geração dos números aleatórios dentro do loop for

Em 07/07/2019 às 10:31, paradyse disse:

for(int i=0;i<=10;i++){    int x=random(1,10);   int y=random(1,10);

é isso mesmo? Acada iteração - literalmente 'rodada' - , gera um novo número.  Me lembro que eu colocava apenas no início do programa pra gerar uma vez só. No seu caso, dentro da rotina setup(). mas não te esqueças de declarar as variáveis antes de tudo... junto com os leds.

Postado

@Isadora Ferraz certo, vou tentar mandar aparecer na tela pra ver se roda...

mas o erro é que mesmo eu colocando a resposta certa o led nao acende

agora é isso ai mesmo quero que gere um novo numero, porque to fazendo um joguinho infantil pro trabalho da faculdade e vai ser uma competição pra tabuada, ai cada round supostamente tem q ser uma multiplicação diferente

  • Membro VIP
Postado
46 minutos atrás, paradyse disse:

mesmo eu colocando a resposta certa o led nao acende

Mas aparece o "eba"? Se sim, verifique se o pino do led está configurado com saída (ah... tá) e o pior: se ele PODE ser saída. Alguns pinos só podem ser ENTRADA ou são coletor aberto (dreno aberto).

Postado

@Isadora Ferraz nao aparece nem o eba e nem acende o led, os leds q usei eu acho q são de saída porque teste eles ligando separado. Vou testar novamente e qualquer coisa peço ajuda de novo, porque teoricamente era pra ta dando certo né??

  • Membro VIP
Postado

Sim.

Force a barra pra ver. Faça
 

z=50;
t=50;

Lembra da questão do tipo de dado da saída da função parserint()? É seu norte...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...