Problème d'utilisation de mblock en direct avec le mega2560

Bonjour,

Je n'arrive pas à utiliser le mode "live" ou "en direct" de mblock.

La capture d'écran suivante montre que j'ai bien activé le monde "en direct" et appuyé sur le drapeau vert, avec mon code qui consiste à allumer la diode de contrôle lorsque la pin digitale 3 est active.

Ce programme fonctionne lorsque je le télécharge sur l'arduino en monde téléversé.

Ensuite, c'est comme si le mode live ne remplaçait pas le programme téléchargé sur l'arduino.
(Et je fais une mise à jour du firmware afin de retirer le code téléversé au cas où.)

Savez-vous ce qu'il me manque pour que ma variable "click" augmente et pour allumer la diode de contrôle en live ?
Est-ce qu'il y a un moyen de voir les erreurs ?

Par ailleurs, lorsque j'appuie sur le drapeau vert, je remarque que la diode RX clignote en continu, mais je ne sais pas ce que cela signifie, même si je crois que c'est bon signe car quand je mets une attente d'une seconde dans la boucle, j'ai le clignotement qui est ralenti à un clignotement par seconde.

Merci pour vos précieux conseils

Post mis dans la mauvaise section, on parle anglais dans les forums généraux, je viens de déplacer le post dans la section francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone".

1 Like

Bonjour,
mblock n'est quasiment jamais évoqué ici. De là à penser qu'il n'y a pas ou très peu d'utilisateurs.....

Cependant quelques suggestions:

  • dans le bloc "lorsque l'Arduino Mega2560 démarre" ne faudrait-il pas configurer la broche 3 en entrée?
  • dans le bloc "lorsque l'Arduino Mega2560 démarre" ne faudrait-il pas configurer la broche 13 en sortie?
  • appliques-tu bien une tension 0 ou 5V sur l'entrée 3 pour faire changer l'état de celle-ci?
  • dans la boucle "pour toujours, il faudrait introduire un petit délai parce qu'actuellement" la boucle se déroule à la vitesse maximum ce qui ne laisse pas beaucoup de temps pour voir la variable s'incrémenter.

Merci pour ta réponse.

La définition des entrées et des sorties est générée automatiquement par mblock:

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

float A0V = 0;
float A3H = 0;
float D3C = 0;
float X = 0;
float Y = 0;
float CLICK = 0;

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void setup() {
  pinMode(A0+0,INPUT);
  pinMode(A0+3,INPUT);
  pinMode(3,INPUT);
  pinMode(13,OUTPUT);
  while(1) {
      _delay(0.1);
      A0V = analogRead(A0+0);
      A3H = analogRead(A0+3);
      X = ((A0V * 0.47 - 240));
      Y = ((A3H * -0.27 - -140));
      if(digitalRead(3)){
        digitalWrite(13,0);
        CLICK += 1;

      }else{
        digitalWrite(13,1);

      }

      _loop();
  }

}

void _loop() {
}

Concernant la tension, lorsque je télécharge le programme, je vois la diode de contrôle lorsque j'envoie un signal à l'entrée 3, donc je pense que j'envoie la bonne tension (avec un réducteur de 10ko pour le joystick que j'utilise).

J'ai appliqué un délai de 0.1s dans la boucle, ce qui ralentit la clignotement de la diode RX mais toujours pas d'incrément de la variable.

C'est vraiment comme si je n'avais pas de lecture de l'arduino depuis mblock.

J'ai tout enlevé pour juste rajouter l'incrément de variable, et je vois bien la valeur augmenter...

Sinon, j'irai trouver un forum spécialisé dans mblock, ou trouver une alterntive pour avoir des choses qui s'affichent à l'écran en fonction des signaux de mon arduino.

Dans cette configuration, il faut appliquer soit un 0V, soit 5V. Si tu laisses l'entrée 3 en l'air cela fera n'importe quoi.


Si la LED s'allume alors la variable CLICK devrait s'incrémenter. Les instructions sont dans le même bloc de code.
Je ne comprends pas pourquoi il y a un appel à _loop() dans le while(1)

Sans doute qu'ils ne veulent pas passer par le mécanisme du main() qui appelle loop() mais fait aussi d'autres choses (ce qui n'est pas un bon signe sur la portabilité sur différentes plateformes et indépendance aux évolutions côté Arduino...)

L'accès aux N° de pin par addition par rapport à la première pin est aussi une hypothèse limitant la portabilité...

La broche 3 n'est pas en INPUT_PULLUP, ce serait intéressant de savoir si un pull down externe a été câblé....

bref - vaut mieux apprendre C++ :slight_smile: