Tally counter

Creations

Nicolas

NEW 5 years ago

Sorunome Sorunome

Merci !

Je viens de faire un test et je pense que je ne vois pas bien comment sauvegarder la valeur avec gb.save

Voici mon code :

#include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

}

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



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


  gb.display.print(compteur);

  gb.save.get(compteur);

}

J'ai bien ajouté gb.save.get avec la variable "compteur".

Merci pour le coup de pouce !

jicehel

NEW 5 years ago

Tu fais une erreur de fonction. Pour sauver, tu dois utiliser gb.save.set et pour lire ce que tu as sauvé, tu utilises gb.save.get

Nicolas

5 years ago

Merci pour ta réponse. En effet je pensais me tromper, mais j'ai également essayé avec gb.save.set(compteur) et cela n'a pas fonctionné. Peut-être il s'agit d'une erreur dans l'écriture du code, ou bien l'emplacement dans le void setup() ou le void loop() ?

Merci !

Nicolas

NEW 5 years ago

jicehel jicehel

Merci pour ta réponse. En effet je pensais me tromper, mais j'ai également essayé avec gb.save.set(compteur) et cela n'a pas fonctionné. Peut-être il s'agit d'une erreur dans l'écriture du code, ou bien l'emplacement dans le void setup() ou le void loop() ?

Merci !

jicehel

NEW 5 years ago

En fait tu fais une erreur. Pour gb.save.set, tu peux regarder dans les références, tu dois préciser le bloc dans lequel tu sauvegarde. Pour toi par exemple, ça pourrait donner gb.save.set(0,compteur);et pour lire, tu utilises alors compteur = gb.save.get(0);

Tu peux regarder le tuto de Sorunome si besoin sur les sauvegarde pour aller plus loin dans les sauvegardes ou pour avoir d'autres exemples (https://gamebuino.com/creations/gamebuino-save-format)

Nicolas

5 years ago

Merci, en effet je comprends un peu plus mon erreur.

Le tuto de Sorunome est très bien, mais il manque un exemple pratique simple pour les débutants :-) 

Je viens de tester mon programme avec ce code et la correction des fonctions gb.save.set et gb.save.get mais rien ne fonctionne. Quand je quitte le programme, le compteur revient toujours à 0...

include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

}

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



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

  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);

  gb.save.set(0,compteur);
  gb.save.get(0);

}

Il y a quelque chose qui me manque pour comprendre complètement le système de sauvegarde.

Nicolas

NEW 5 years ago

jicehel jicehel

Merci, en effet je comprends un peu plus mon erreur.

Le tuto de Sorunome est très bien, mais il manque un exemple pratique simple pour les débutants :-) 

Je viens de tester mon programme avec ce code et la correction des fonctions gb.save.set et gb.save.get mais rien ne fonctionne. Quand je quitte le programme, le compteur revient toujours à 0...

include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

}

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



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

  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);

  gb.save.set(0,compteur);
  gb.save.get(0);

}

Il y a quelque chose qui me manque pour comprendre complètement le système de sauvegarde.

jicehel

NEW 5 years ago

oui, l'erreur est normale. Tu sauve le compteur puis tu le lis.

La valeur du compteur ne change donc pas.

Ce qu'il faut que tu fasses c'est lire la dernière valeur sauvegardée quand tu ouvres ton programme (par exemple dans le setup)

Après tu sauvegarde ta valeur dans ta boucle.

Du coup au début tu charges un seule fois la dernière valeur sauvegardée et tu sauvegarde à chaque fin de boucle la valeur de ton compteur.

Si je ne m'abuse, c'est le comportement que tu attends.

Nicolas

5 years ago

Merci à toi pour tes conseils et ton sens pédagogique ! J'ai compris la procédure et ça fonctionne :-) Je vais pouvoir développer maintenant l'idée avec un compteur un peu plus complexe.

Voici mon code pour ceux que ça peut intéresser :

#include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

  compteur = gb.save.get(0); //on lit la dernière valeur sauvegardée

}


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


  //augmenter +1 lorsque l'on appuie sur la touche UP
  if (gb.buttons.pressed(BUTTON_UP)) {  
    compteur = compteur + 1;    
    gb.sound.playOK();//un son est joué 
  } 


  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);

  gb.save.set(0,compteur);//on sauvegarde la valeur dans la boucle

}

Nicolas

NEW 5 years ago

jicehel jicehel

Merci à toi pour tes conseils et ton sens pédagogique ! J'ai compris la procédure et ça fonctionne :-) Je vais pouvoir développer maintenant l'idée avec un compteur un peu plus complexe.

Voici mon code pour ceux que ça peut intéresser :

#include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

  compteur = gb.save.get(0); //on lit la dernière valeur sauvegardée

}


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


  //augmenter +1 lorsque l'on appuie sur la touche UP
  if (gb.buttons.pressed(BUTTON_UP)) {  
    compteur = compteur + 1;    
    gb.sound.playOK();//un son est joué 
  } 


  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);

  gb.save.set(0,compteur);//on sauvegarde la valeur dans la boucle

}

Sorunome

5 years ago

Hey, using gb.save.get and gb.save.set takes quite long, I'd recommend to use them as little as possible! Since you have gb.save.set inside of loop() it'd be called quite often. I'd recommend something like this instead:

#include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

  compteur = gb.save.get(0); //on lit la dernière valeur sauvegardée

}


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


  //augmenter +1 lorsque l'on appuie sur la touche UP
  if (gb.buttons.pressed(BUTTON_UP)) {  
    compteur = compteur + 1;    
    gb.sound.playOK();//un son est joué 
    gb.save.set(0,compteur);//on sauvegarde la valeur dans la boucle
  }


  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);
}

As you can see it only calls gb.save.set now if the value actually changes!

Sorunome

NEW 5 years ago

Nicolas Nicolas

Hey, using gb.save.get and gb.save.set takes quite long, I'd recommend to use them as little as possible! Since you have gb.save.set inside of loop() it'd be called quite often. I'd recommend something like this instead:

#include <Gamebuino-Meta.h>

int compteur = 0;


void setup() {
  gb.begin();

  compteur = gb.save.get(0); //on lit la dernière valeur sauvegardée

}


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


  //augmenter +1 lorsque l'on appuie sur la touche UP
  if (gb.buttons.pressed(BUTTON_UP)) {  
    compteur = compteur + 1;    
    gb.sound.playOK();//un son est joué 
    gb.save.set(0,compteur);//on sauvegarde la valeur dans la boucle
  }


  gb.display.setFontSize(4);
  gb.display.setCursor(10,10);
  gb.display.print(compteur);
}

As you can see it only calls gb.save.set now if the value actually changes!

Nicolas

5 years ago

Merci pour l'amélioration du code ! :-)

Nicolas

NEW 5 years ago

Sorunome Sorunome

Merci pour l'amélioration du code ! :-)

GeBerth

NEW 5 years ago

simple pour apprendre les boutons UP, BUTTON, RIGHT,LEFT et les opérations courantes

LoganRen

NEW 5 years ago

Merci pour ce tuto, super cool. Me suis bien amuser, j’ai été un peut plus loin pour ma part avec trois variable et trois jauge. Une pour les unités, une pour les dizaines et une pour les centaines. Il me reste des choses à finir comme faire une jauge quand les valeurs on négative, ça j’ai pas trouvé.

Je vous partagerais le code sources et le partagerais dans les créations une fois fini.

jicehel

NEW 5 years ago

Bravo Loganen. Tu as tout compris: on fait le tuto et après on le triture, on le modifie, on se fait plaisir pour faire ce que l'on veut et c'est là que l'on encre ce que l'on a appris.

LoganRen

NEW 5 years ago

Salut

Donc voilà ma version du compteur, pas tout à fait terminé.

Il me reste des petites choses à faire dessus mais en l'état il marche bien.

#include <Gamebuino-Meta.h>

//int counter = 0;          // Nouvelle ligne initialisation du conteur (variable) à Zéro
int counter_unite = 0;      
int counter_dizaine = 0;
int counter_centaine = 0;

void setup() {
  // put your setup code here, to run once:
  gb.begin();

}

void loop() {
  // put your main code here, to run repeatedly:
  while (!gb.update());
  gb.display.clear();

// gestion du compteur des unités
   if (gb.buttons.pressed(BUTTON_A)) {   // SI on appuis sur A
    counter_unite = counter_unite + 1;   // On ajoute +1 à la variable
    gb.sound.playOK();                   // On joue un son
  }                                      // fin de la fontion SI

  if (gb.buttons.pressed(BUTTON_B)) {
    counter_unite = counter_unite - 1;
    gb.sound.playTick();
  }

// gestion du compteur des dizaines en fonction des unités dans les valeurs positives
// gestion incrementation  
  if (counter_unite == 10) {
    counter_unite = 0;
    counter_dizaine = counter_dizaine + 1;
  }
//gestion decrementation 
  if ((counter_unite == -1) && (counter_dizaine >= 1)) {
    counter_unite = 9;
    counter_dizaine = counter_dizaine -1;
  }

// gestion du compteur des centaine en fonction des dizaines dans les valeurs positives
// gestion incrementation 
  if (counter_dizaine == 10) {
    counter_dizaine = 0;
    counter_centaine = counter_centaine +1;
  }
// gestion decrementation 
  if ((counter_unite == -1) && (counter_centaine >= 1)) {
    counter_dizaine = 9;
    counter_unite = 9;
    counter_centaine = counter_centaine -1;
  }

// gestion du compteur des dizaines en fonction des unités dans les valeurs negatives
// gestion incrementation  
  if (counter_unite == -10) {
    counter_unite = 0;
    counter_dizaine = counter_dizaine - 1;
  }
//gestion decrementation 
  if ((gb.buttons.pressed(BUTTON_A)) && (counter_unite == 1) && (counter_dizaine <= -1)) {
    counter_unite = -9;
    counter_dizaine = counter_dizaine +1;
  }

// gestion du compteur des centaine en fonction des dizaines dans les valeurs negative
// gestion incrementation 
  if (counter_dizaine == -10) {
    counter_dizaine = 0;
    counter_centaine = counter_centaine -1;
  }
// gestion decrementation 
  if ((gb.buttons.pressed(BUTTON_A)) && (counter_unite == 1) && (counter_centaine <= -1)) {
    counter_dizaine = -9;
    counter_unite = -9;
    counter_centaine = counter_centaine +1;
  }

// réinitialise tous les variables a 0
  if (gb.buttons.pressed(BUTTON_MENU)) {
    counter_unite = counter_dizaine = counter_centaine = 0;
    gb.sound.playCancel();
  }


// affichage des jauges
   //affichage jauge centaine en haut
   gb.display.setColor(RED);
   gb.display.fillRect(0, 0, counter_centaine*5, 20);

   //affichage jauge dizaine au milieu
   gb.display.setColor(GREEN);
   gb.display.fillRect(0, 22, counter_dizaine*9, 20);

   //affichage jauge unité en bas
   gb.display.setColor(DARKBLUE);
   gb.display.fillRect(0, 44, counter_unite*9, 20);

// Affichage des infos ecrites
   //affichage texte et chiffre des centaine en haut 
   gb.display.setColor(ORANGE);
   gb.display.setFontSize(1);
   gb.display.setCursor(44,2);
   gb.display.print(":Centaine");
   gb.display.setFontSize(2);
   gb.display.setCursor(5,5);
   gb.display.print(counter_centaine);

   //affichage texte et chiffre des dizaine au milieu
   gb.display.setColor(LIGHTGREEN);
   gb.display.setFontSize(1);
   gb.display.setCursor(48,24);
   gb.display.print(":Dizaine");
   gb.display.setFontSize(2);
   gb.display.setCursor(5,27);
   gb.display.print(counter_dizaine);

   //affichage texte et chiffre des unité en bas
   gb.display.setColor(LIGHTBLUE);
   gb.display.setFontSize(1);
   gb.display.setCursor(56,44);
   gb.display.print(":Unite");
   gb.display.setFontSize(2);
   gb.display.setCursor(5,47); // max x=0-83 y = 0-47
   gb.display.print(counter_unite); // affiche l'état du conteur (variable)

}

Je vais partager le projet dans les créations.

Et je le mettrais à jour quand j'ai les bases pour faire ce que je veux ajouter en plus :)

jicehel

NEW 5 years ago

Bon si tu fais des tutos, je te propose de te relire pour corriger les fautes. Tu seras bientôt meilleur en programmation qu'en orthographe :D   Bon pas grave, on est là pour programmer mais bon pour ce qui est création ou tuto, comme ça reste, autant corriger les fautes.

PS: Je te rassure, je vois bien les fautes des autres mais j'en fais plein moi-même alors surtout il ne faut pas que ça te gène pour écrire.  :D

LoganRen

5 years ago

Merci pour l'aide et la correction de la description de l'application / Tuto. 

Je sais que je suis un peut une bille en orthographe, je vois pas les miennes.

Je vais me relire tranquille ce soir et corriger ça.

LoganRen

NEW 5 years ago

jicehel jicehel

Merci pour l'aide et la correction de la description de l'application / Tuto. 

Je sais que je suis un peut une bille en orthographe, je vois pas les miennes.

Je vais me relire tranquille ce soir et corriger ça.