Go Down

Topic: lenteur sur le temps de réponse du code sur la carte UNO rev3 (Read 192 times) previous topic - next topic

ZARROUKI

Bonjour a tous, je me tourne vers vous pour vous demander de l'aide afin d'optimiser un programme.
Je travaille sur un projet Rc voiture avec réception bluetooth hc-05 , relais de changement du sens de rotation  et irf3708 , un servo sans pulsation avec micro pont-h , des options supplémentaire comme détecteur d'obstacle avant et arrière, led avant, arrière et  , 2 leds pour le seuil des batteries.. et je peut vous expliquer après si quelque chose n'est pas claire dans mon besoin au code.
Mon problème persiste en ajoutant les lignes de lectures de niveaux batteries au code je reçois un lenteur sur le programme et un temps de réponse plus 30 secondes. Par contre le code des batteries fonctionne impeccable seul sur la carte arduino.

Merci d'avance.

J-M-L

quand je vois des
Code: [Select]
delay(2000); je me dis que ça ne doit pas aider à la réactivité...
faudrait virer TOUS les délais
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

ZARROUKI

Re bonjour
Merci pour votre attention, tous les délais sont virés le problème est RÉSOLU et le code fonctionne parfaitement.
Mais je vais essayer une autre façon de les clignoter sans délais pour ne pas mettre le programme en pause pendant le processus delay().

J-M-L

Re bonjour
Merci pour votre attention, tous les délais sont virés le problème est RÉSOLU et le code fonctionne parfaitement.
Mais je vais essayer une autre façon de les clignoter sans délais pour ne pas mettre le programme en pause pendant le processus delay().
étudiez blink without delay pour comprendre comment utiliser millis() pour décider quand faire quelque chose et ne pas bloquer
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

ZARROUKI

Merci et en cours.
j'ai utilisé  millis() et l'état "ledState" convient-il pour les 2 leds ? juste pour minimiser le volume du code.
Voici la partie niveaux batteries:


Code: [Select]
int analogValue1 = 0;
   int analogValue2 = 0;
   float voltage1 = 0;
   float voltage2 = 0;
   int ledState  = LOW ;
   const long interval = 500 ;
   unsigned long previousMillis = 0;
   int ledbat1 = 9; //led battery 1
   int ledbat2 = 10; //led battery 2

 void setup() {

    pinMode(ledbat1, OUTPUT); //led battery 1
    pinMode(ledbat2, OUTPUT); //led battery 2
         
    Serial.begin(9600); // Initialize serial communication at 9600 bits per second:
   
 }

 void loop() {
  /***********************BatteryIndicator****************************/
      unsigned long currentMillis = millis();
      if (currentMillis - previousMillis >= interval) { 
           previousMillis = currentMillis;
      if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
  }
       
    analogValue1 = analogRead(A1);
    voltage1 = analogValue1 * (5.00 / 1023.00) * 2;
    if(voltage1 <= 6.50){
        digitalWrite(ledbat1, ledState);
         }
 
    analogValue2 = analogRead(A0);
    voltage2 = analogValue2 * (5.00 / 1023.00) * 2;
    if(voltage2 <= 6.50){
        digitalWrite(ledbat2, ledState);
         }
 }

J-M-L

pas sûr pourquoi ledState est de la partie mais l'approche pour faire un truc "de temps en temps" est OK
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

ZARROUKI

j'essaye ce soire sur la carte et je vais changer s'il faut. merci

ZARROUKI

Salut, le programme est fluide top, merci pour votre aide

Go Up