Tally counter

Creations

Aurélien Rodot

1 month ago

English coming soon!

View full creation

Nux

NEW 1 month ago

Bien mieux que l'ancien. La nouvelle structure des Tuto avec les prérequis au début et une solution original et coloré à la fin est aussi bien pensé.

STUDIOCRAFTapps

NEW 1 month ago

Je crois que les type int sont en fait des uint64_t et non des int32_t comme il était sur le CPU de la Gamebuino Classic donc "On peut donc y stocker un nombre sans virgule, positif ou négatif." n'est pas vrai.

Basé selon mes experience personnel lorsque j'ai adapté mon jeu vers la META

Nan finalement les int ce n'est pas usigned

Lemmy

NEW 4 weeks ago

Salut tout le monde!  

J'aimerai creuser un peu l'idée du compteur et, par exemple, faire en sorte que le nombre à l'écran s'allume vert quand on appuie sur "haut" et rouge quand on appuie sur "bas"... je ne sais pas trop comment faire je me suis dit que ça serait facile mais en fait ça ne l'est pas (pour moi -_-).


#include <Gamebuino-Meta.h>

int counter = 0;

void setup() {
   gb.begin();
}

void loop() {
  while (!gb.update());
  gb.display.clear();

  if (gb.buttons.pressed(BUTTON_UP)) {
    counter = counter + 1;
    gb.display.setColor(GREEN);
    gb.display.print(counter);
    gb.sound.playOK();
    
  }

  if (gb.buttons.pressed(BUTTON_DOWN)) {
    counter = counter - 1;

    gb.display.setColor(RED);
    gb.display.print(counter);
    gb.sound.playCancel();
    
  }

  if (gb.buttons.pressed(BUTTON_MENU)) {
    counter = 0;
    gb.sound.playTick();
  }

  gb.display.setColor(BROWN);
  gb.display.fillRect(0, 0, counter, gb.display.height());

  gb.display.setColor(WHITE);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);
}


Le problème ici c'est que ça me l'affiche en vert ou rouge mais en petit dans le coin supérieur gauche. (normal vu que je n'ai précisé ni la taille ni l'emplacement mais si je le fait ça ne fonctionne pas..  J'ai en fait l'impression que l'affichage du compteur (en vert ou rouge) passe "derrière" le compteur blanc ainsi que le rectangle marron. Faut-il dire "d'enlever" le compteur blanc le temps que l'autre est affiché ou quelque chose comme ça ?

geed

4 weeks ago

C'est EXACTEMENT ça, imagine que la console affiche les choses dans l'ordre où tu lui demandes. Dans ton programmes tu changes la couleur AVANT de lui demander d'afficher ton compteur en blanc. Du coup, elle le change bien de couleur, mais le ré-affiche par dessus en blanc.


Perso je conditionnerai l'affichage du compteur.

C'est à dire que d'abord je fais mes calculs, puis dessine le "fond" et enfin je lui demanderai quelque chose du genre :

Si la précédente valeur est :

  • inférieure à la nouvelle, alors sélectionne le  vert
  • supérieure à la nouvelle, alors  sélectionne le rouge
  • identique, alors  sélectionne le blanc


Je te laisse méditer ces pistes, voir commencer à imaginer de petites fonctions pour le faire.

Perso je suis aussi débutant en programmation et je fonctionne comme ça : 1) je divise le problème en petits problèmes faciles 2) je code des petites fonctions qui les résolvent 3) j'assemble le tout :p

clement

4 weeks ago

je rajouterais que ton code est executer 25X par seconde. ton compteur vert ou rouge sera afficher uniquement 1/25 X du coup presque invisible.

Tu dois creer une variable pour sauvegarder la couleur courante de ton compteur 

geed

NEW 4 weeks ago

Lemmy Lemmy

C'est EXACTEMENT ça, imagine que la console affiche les choses dans l'ordre où tu lui demandes. Dans ton programmes tu changes la couleur AVANT de lui demander d'afficher ton compteur en blanc. Du coup, elle le change bien de couleur, mais le ré-affiche par dessus en blanc.


Perso je conditionnerai l'affichage du compteur.

C'est à dire que d'abord je fais mes calculs, puis dessine le "fond" et enfin je lui demanderai quelque chose du genre :

Si la précédente valeur est :

  • inférieure à la nouvelle, alors sélectionne le  vert
  • supérieure à la nouvelle, alors  sélectionne le rouge
  • identique, alors  sélectionne le blanc


Je te laisse méditer ces pistes, voir commencer à imaginer de petites fonctions pour le faire.

Perso je suis aussi débutant en programmation et je fonctionne comme ça : 1) je divise le problème en petits problèmes faciles 2) je code des petites fonctions qui les résolvent 3) j'assemble le tout :p

clement

NEW 4 weeks ago

Lemmy Lemmy

je rajouterais que ton code est executer 25X par seconde. ton compteur vert ou rouge sera afficher uniquement 1/25 X du coup presque invisible.

Tu dois creer une variable pour sauvegarder la couleur courante de ton compteur 

Lemmy

NEW 4 weeks ago

Geed ton enthousiasme fait plaisir à voir ! :D Je vois et vais essayer de partir dans ce sens là. Je vous retransmettrais mon nouveau code :)

Et Clément ce que tu dis j'y ai pensé aussi,1/25s c'est pas si pire, je veux vraiment que ça clignote mais si je peux le faire durer 2/25s voir 3/25s ça peut-être vraiment cool mais la... ça dépasse tout entendement pour mon niveau ! :)

Lemmy

NEW 4 weeks ago

Alors.. j'ai le bon affichage, à la bonne taille, etc mais ça s'affiche à côté de la valeur "blanche" du compteur. J'ai pas suivi le fonctionnement que tu m'a proposé Geed parce que j'avoue que je sais pas trop comment m'y prendre.. Dois-je continuer sur cette lancée ou aborder d'une autre manière ?

Si je continue sur ce que j'ai mit y a-t-il une solution de demander d'afficher la valeur verte ou rouge à la place de la blanche? Je ne sais pas trop comment faire... 


#include <Gamebuino-Meta.h>

int counter = 0;

void setup() {
   gb.begin();
}

void loop() {
  while (!gb.update());
  gb.display.clear();

  if (gb.buttons.pressed(BUTTON_UP)) {
    counter = counter + 1;
    gb.sound.playOK();
    
  }

  if (gb.buttons.pressed(BUTTON_DOWN)) {
    counter = counter - 1;
    gb.sound.playCancel();
    
  }

  if (gb.buttons.pressed(BUTTON_MENU)) {
    counter = 0;
    gb.sound.playTick();
  }

  gb.display.setColor(BROWN);
  gb.display.fillRect(0, 0, counter, gb.display.height());

  gb.display.setColor(WHITE);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);


  if (gb.buttons.pressed(BUTTON_DOWN)) {
  gb.display.setColor(RED);
  gb.display.print(counter);

}

  if (gb.buttons.pressed(BUTTON_UP)) {
  gb.display.setColor(GREEN);
  gb.display.print(counter);

}
}

clement

NEW 4 weeks ago

en fait tu n a pas besoin de reecrire le counter.

l idee c est au moment ou tu choisi la couleur ( a la ligne gb.display.setColor(WHITE);) tu doit choisir entre le rouge le vert ou le blanc

donc en mata code : 


si mon bouton haut est appuyer
     je choisi le vert
sinon si mon bouton bas est appuyer
    je choisi le rouge
sinon 
   je choisi le blanc


Pour cela tu doit te pencher sur le else  je ne sais pas si il y a des exemple dans les tuto Gamebuino mais tu trouvera facilement comment ca marche sur google.




Aurélien Rodot

4 weeks ago

Bientôt, bientôt, je suis justement en train d'écrire la suite :)

Mais ça fait plaisir de voir que c'est utilisé, que certains vont au delà et que tout le monde s'entraide. Keep it up ! :D

Lemmy

NEW 4 weeks ago

Ça ne marche pas, je suis à deux doigts d'aller chercher une masse afin de mieux faire comprendre à mon mac ce que je veux faire.. XD


J'ai été obligé de réécrire tout le conter pour qu'il apparaisse.

Si je met "if..." "else..." "else..." pour le deuxième "else" il me dit que ce n'est pas correct si il n'y a pas de "if" avant. Et avec ce code là quand j'appuie sur "haut" je vois le compteur qui clignote mais c'est trop rapide.. Impossible de dire s'il s'affiche en vert (il faut que je rallonge le temps d'affichage mais je ne sais pas comment) et par contre quand j'appuie sur "bas" le compteur change mais ne clignote pas.

Au moins il y a déjà l'affichage en vert qui fonctionne (peut-être) on va dire que c'est une avancée!

Voila ce que j'ai fait:

#include <Gamebuino-Meta.h>

int counter = 0;

void setup() {
   gb.begin();
}

void loop() {
  while (!gb.update());
  gb.display.clear();

  if (gb.buttons.pressed(BUTTON_UP)) {
    counter = counter + 1;
    gb.sound.playOK();
    
  }

  if (gb.buttons.pressed(BUTTON_DOWN)) {
    counter = counter - 1;
    gb.sound.playCancel();
    
  }d

  if (gb.buttons.pressed(BUTTON_MENU)) {
    counter = 0;
    gb.sound.playTick();
  }

  gb.display.setColor(BROWN);
  gb.display.fillRect(0, 0, counter, gb.display.height());

  if (gb.buttons.pressed(BUTTON_DOWN)) {
  gb.display.setColor(RED);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);

}

  if (gb.buttons.pressed(BUTTON_UP)) {
  gb.display.setColor(GREEN);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);

}
  else (gb.display.setColor(WHITE));
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);


}

geed

4 weeks ago

C'est juste un problème de syntaxe ! Pas besoin de sortir la masse :)

regarde du côté des exemple sur l'arduino IDE, section CONTROL, tu verras que le else à une structure du type if (machin) { alors } else { bidule }

https://www.arduino.cc/reference/en/


Moi à ta place, je contournerai le problème, peut être avec une deuxième variable qui passe à 1 2 ou 3 en fonction de ce que tu fais. Et en fonction de la valeur de cette variable, tu changes l'affichages. Par exemple :)

Regarde aussi du côté de la fonction Switch (bidule) {


Et bon courage ! Ne décroche pas !



clement

3 weeks ago

oui tu ne peux pas mettre de else sur un seul if...

mais tu peux remetre un if dans un else 


Le switch que propose geed peux etre une bonne solution.


pour evité des problèmes a ton mac voici la syntax qui fonctionne du if / else qui fonctionnera pour ton cas. reste plus qu a mettre les bonne conditions dedans 

if() {
} else if () {
} else {
}  

Aurélien Rodot

NEW 4 weeks ago

clement clement

Bientôt, bientôt, je suis justement en train d'écrire la suite :)

Mais ça fait plaisir de voir que c'est utilisé, que certains vont au delà et que tout le monde s'entraide. Keep it up ! :D

geed

NEW 4 weeks ago

Lemmy Lemmy

C'est juste un problème de syntaxe ! Pas besoin de sortir la masse :)

regarde du côté des exemple sur l'arduino IDE, section CONTROL, tu verras que le else à une structure du type if (machin) { alors } else { bidule }

https://www.arduino.cc/reference/en/


Moi à ta place, je contournerai le problème, peut être avec une deuxième variable qui passe à 1 2 ou 3 en fonction de ce que tu fais. Et en fonction de la valeur de cette variable, tu changes l'affichages. Par exemple :)

Regarde aussi du côté de la fonction Switch (bidule) {


Et bon courage ! Ne décroche pas !



clement

NEW 3 weeks ago

Lemmy Lemmy

oui tu ne peux pas mettre de else sur un seul if...

mais tu peux remetre un if dans un else 


Le switch que propose geed peux etre une bonne solution.


pour evité des problèmes a ton mac voici la syntax qui fonctionne du if / else qui fonctionnera pour ton cas. reste plus qu a mettre les bonne conditions dedans 

if() {
} else if () {
} else {
}  

Lemmy

NEW 3 weeks ago

Merci, je vais essayer d'avancer la dessus ! :)


Edit:

Après une semaine sans toucher ma Gamebuino faute de temps :( j'ai suivi ton conseil Clement, et, même si je ne sais pas pourquoi ça fonctionne maintenant ! =)


#include <Gamebuino-Meta.h>

int counter = 0;

void setup() {
   gb.begin();
}

void loop() {
  while (!gb.update());
  gb.display.clear();

  if (gb.buttons.pressed(BUTTON_UP)) {
    counter = counter + 1;
    gb.sound.playOK();
    
  }

  if (gb.buttons.pressed(BUTTON_DOWN)) {
    counter = counter - 1;
    gb.sound.playCancel();
    
  }


if(gb.buttons.pressed(BUTTON_MENU)) {
    counter = 0;
    gb.sound.playTick();
  }

  gb.display.setColor(BROWN);
  gb.display.fillRect(0, 0, counter, gb.display.height());

  if (gb.buttons.pressed(BUTTON_DOWN)) {
  gb.display.setColor(RED);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);

} 
  
  else if (gb.buttons.pressed(BUTTON_UP)) {
  gb.display.setColor(GREEN);
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);

}
  
  else {gb.display.setColor(WHITE));
  gb.display.setFontSize(4);
  gb.display.setCursor(8,8);
  gb.display.print(counter);


}


J'aimerais encore faire quelques modifications comme par exemple rallonger la durée de couleur rouge ou verte mais je ne sais pas comment..

et aussi j'aimerai ajouter un "flash" mais je ne connais pas la "fonction" ?? pour allumer les led "gb.display.lesledcestjoliquandcestallumé" par exemple.. :)


Vous avez déjà été formidables avec tous vos conseils mais j'en veux plus !! 

You must be logged in in order to post a message on the forum

Log in