Bonjour
Je ne sais pas si le code est bien fait mais dans les erreur ça me met:
sketch_may06d:22:24: error: 'k' was not declared in this scope
lcd.setCursor(0 + k, 0);
^
sketch_may06d:27:23: error: 'p' was not declared in this scope
lcd.setCursor(p, 0);
^
exit status 1
'k' was not declared in this scope
Alors que je ne comprend pas pourquoi ça me met ça
Sinon voici le code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const byte buttona = 6;
const byte buttonb = 5;
void setup() {
lcd.begin(16, 2);
pinMode (buttona, INPUT_PULLUP);
pinMode (buttonb, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(buttona) == LOW)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("I");
for (byte k = 0; k < 14; k++);
{
lcd.setCursor(0 + k, 0);
lcd.print(" -");
delay(1000);
for (byte p = 14; p < 15; p++);
{
lcd.setCursor(p, 0);
lcd.print(" *");
}
}
}
}
Zlika
May 6, 2019, 6:22pm
2
Bonjour,
Pas de ; après le for(.....) ; sinon cela équivaut à for(......) {}.
D'accord merci j'essaierai demain.
Merci je viens d’essayer mais maintenant le problème c'est que je n'arrive pas a faire fonctionner la partie avec p (sur mon lcd ça n'affiche pas le *.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const byte buttona = 6;
const byte buttonb = 5;
void setup() {
lcd.begin(16, 2);
pinMode (buttona, INPUT_PULLUP);
pinMode (buttonb, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(buttona) == LOW)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("I");
delay(500);
for (byte k = 0; k < 14; k++)
{
lcd.setCursor(k, 0);
lcd.print(" -");
delay(500);
for (byte p = 14; p < 16; p++)
{
lcd.setCursor(p, 0);
lcd.print(" *");
delay(500);
}
}
}
}
Si vous pouvez m'aider s'il vous plait.
Vous n'affichez pas une étoile, mais un blanc suivi d'une etoile, débordant des limites de votre afficheur.
J'ai enlever un blanc mais maintenant il s'affiche tout le temps alors que je voudrais qu'il ne s'affiche que lorsque le trait est à l'avant dernière case mais je n'y arrive pas.
Bonjour,
Je n'arrive pas à voir ce que tu veux faire. Qu'est ce que tu veux faire exactement ?
Je veu faire un petit jeu
Je Vai faire apparaître un objet à détruire à la fin d'une ligne aléatoire puis avec le bouton à ou le bouton b qu'es sa fasse comme si sa envoyait un projectile en direction de l'objet et que sa fasse l'étoile pour faire comme une explosion.
Si tu peu m'aider je te remercie.
Quelque chose comme ça?
void loop()
{
if (digitalRead(buttona) == LOW)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("I");
lcd.setCursor(15, 0);
lcd.print("*");
delay(500);
for (byte k = 0; k < 15; k++)
{
lcd.setCursor(k, 0);
lcd.print(" -");
delay(200);
}
for (byte i=0; i<2; i++)
{
lcd.setCursor(15, 0);
lcd.print("*");
delay(200);
lcd.setCursor(15, 0);
lcd.print(" ");
}
}
}
Oui c'est sa sauf afficher l'étoile au début.
Alors tu enlèves les lignes
lcd.setCursor(15, 0);
lcd.print("*");
Merci et est ce que vous connaissez le code pour faire apparaître un "!" aléatoirement sois en:
lcd.setCursor(15, 0);
Sois en:
lcd.setCursor(15, 1);
Lis cette page et ensuite remplace le 0 par ce qui va bien
Merci mais j'ai mis ça comme code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const byte buttona = 6;
const byte buttonb = 5;
long randNumber;
void setup() {
lcd.begin(16, 2);
pinMode (buttona, INPUT_PULLUP);
pinMode (buttonb, INPUT_PULLUP);
randomSeed(analogRead(0));
}
void loop()
{
for (byte m=0; m<1; m++)
{
randNumber = random(2);
lcd.setCursor(15, randNumber);
lcd.print("!");
}
if (digitalRead(buttona) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("I");
delay(500);
for (byte k = 0; k < 15; k++)
{
lcd.setCursor(k, 0);
lcd.print(" -");
delay(200);
}
for (byte i=0; i<2; i++)
{
lcd.setCursor(15, 0);
lcd.print("*");
delay(200);
lcd.setCursor(15, 0);
lcd.print(" ");
}
}
if (digitalRead(buttonb) == LOW)
{
lcd.setCursor(0, 1);
lcd.print("I");
delay(500);
for (byte l = 0; l < 15; l++)
{
lcd.setCursor(l, 1);
lcd.print(" -");
delay(200);
}
for (byte p=0; p<2; p++)
{
lcd.setCursor(15, 1);
lcd.print("*");
delay(200);
lcd.setCursor(15, 1);
lcd.print(" ");
}
}
}
Mais sa met un "!" sur les 2 donc sa l’exécute 2 fois alors que je veux qu'il le fasse que une fois et je n'arrive pas a régler ce problème
Remplace tout simplement
for (byte m=0; m<1; m++)
{
randNumber = random(2);
lcd.setCursor(15, randNumber);
lcd.print("!");
}
Par
lcd.setCursor(15, random(2));
lcd.print("!");
D'accord j'essaie de suite
Il faut que tu traces le ! uniquement pour un nouveau jeu.
Pour cela il faut gérer un flag qui est vrai en cas de nouveau jeu
void loop()
{
static bool newGame=true;
if (newGame)
{
lcd.clear();
lcd.setCursor(15, random(2));
lcd.print("!");
newGame=false;
}
Serial.println(digitalRead(buttona));
if (digitalRead(buttona) == LOW)
{
lcd.setCursor(0, 0);
lcd.print("I");
delay(500);
for (byte k = 0; k < 15; k++)
{
lcd.setCursor(k, 0);
lcd.print(" -");
delay(200);
}
for (byte i=0; i<2; i++)
{
lcd.setCursor(15, 0);
lcd.print("*");
delay(200);
lcd.setCursor(15, 0);
lcd.print(" ");
}
newGame=true;
delay(3000);
}
if (digitalRead(buttonb) == LOW)
{
lcd.setCursor(0, 1);
lcd.print("I");
delay(500);
for (byte l = 0; l < 15; l++)
{
lcd.setCursor(l, 1);
lcd.print(" -");
delay(200);
}
for (byte p=0; p<2; p++)
{
lcd.setCursor(15, 1);
lcd.print("*");
delay(200);
lcd.setCursor(15, 1);
lcd.print(" ");
}
newGame=true;
delay(3000);
}
}
Merci cela fonctionne exactement comme je le voulais mais je ne comprend pas a quoi sert:
Serial.println(digitalRead(buttona));
Peut tu me l'expliquer ?
C'était pour le debug, je l'ai laissé par erreur, tu peux l'enlever.