Pages: [1]   Go Down
Author Topic: Problème de variable étrange  (Read 441 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut tous le monde,

alors voilà, l'IDE de arduino m'indique une erreur quand je compile, il dit que ma variable n'est pas déclarée alors que si.

Voici le code :
Code:
#include <IRremote.h>

int RECV_PIN = 2;
int LED = 8;

int signal_recu=0;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop()
{
  if (irrecv.decode(&results))
  {
    signal_recu = results.value;
    Serial.println(signal_recu);
   
    if (signal_recu == -23971)
    {
      long temps = micros();
     
      digitalWrite(LED,HIGH);
    }
    else if (signal_recu == -7651)
    {
      long total_execution_LED = (micros() - temps) / 1000000;
     
      digitalWrite(LED,LOW);
     
      Serial.println(total_execution_LED,DEC);
    }
   
   
    irrecv.resume();
  }
}

Le compilateur bug ici :  long total_execution_LED = (micros() - temps) / 1000000;
il dit que la variable temps n'est pas déclaré, alors que si.

Qu'est ce qui se passe ? Ai-je fait quelque chose de travers ? Merci
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
normal
déclare ta variable au début smiley-wink
et dans ton loop, vire "long" temps
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah d'accord je vois, je pensais que ça marchait; merci!

EDIT: infobarquee -> Oui je viens juste de m'en apercevoir, merci ;-)
« Last Edit: February 02, 2013, 06:59:11 am by Kouaaks » Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

réfléchis 2secondes smiley-wink
tu remets à zero ta variable dans la loop à chaque fois.


PS : bug du forum on dirait, jean francois avait répondu
Quote
void setup()
{
long temps = 0;
}
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3230
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un petit problème lors de l'édition de mon message depuis mon téléphone  smiley-mr-green

Je disais que lors de la déclaration, ça ne marchais pas de faire un calcul pour déclarer une variable.

Il faut déclarer une valeur fixe, puis ensuite changer la valeur de la variable dans la boucle en faisant val=(le calcul);
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3444
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
long total_execution_LED = (micros() - temps) / 1000000;
les constantes en long doivent être déclarées comme telle
Code:
long total_execution_LED = (micros() - temps) / 1000000L;

Code:
if (signal_recu == -23971)
    {
      long temps = micros();
     
      digitalWrite(LED,HIGH);
    }
    else if (signal_recu == -7651)
    {
      long total_execution_LED = (micros() - temps) / 1000000;
     
      digitalWrite(LED,LOW);
     
      Serial.println(total_execution_LED,DEC);
    }
Une variable n'est vue que dans le bloc où elle est déclarée. Si tu veux l'utiliser dans les 2 branches du if il faut la déclarer avant le if.
Code:
long temps
if (signal_recu == -23971)
    {
      temps = micros();
     
      digitalWrite(LED,HIGH);
    }
    else if (signal_recu == -7651)
    {
      long total_execution_LED = (micros() - temps) / 1000000;
     
      digitalWrite(LED,LOW);
     
      Serial.println(total_execution_LED,DEC);
    }
« Last Edit: February 02, 2013, 09:22:08 am by fdufnews » Logged

Pages: [1]   Go Up
Jump to: