J'ai besoin d'aide pour déboguer un programme arduino que je viens de taper. l'erreur affichée est: - 1.exit status 1 exponent n'a pas de chiffres (trouvé sur la ligne "char INT_ENABLE = 0 * 2E"). l'intention du programme est de déclencher un buzzer et d'éteindre un commutateur de relais lorsque l'inactivité est détectée via adxl345 et de faire le contraire lorsque l'activité est détectée. Je fournis mon code de programme ci-dessous. avoir un chèque et m'aider à rectifier ce problème et tout autre problème que vous pourriez rencontrer avec mon programme.comment corriger l'erreur "état de sortie 1 exponent n'a pas de chiffres" dans la programmation arduino?
#include <SPI.h>
int cs = 10;
int intr = 2;
int buzzer = 4;
int relay = 5;
int su = 1;
int intr1
pinmode (buzzer,OUTPUT);
pinmode (relay,OUTPUT);
char POWER_CLT = 0*2D
char DATA_FORMAT = 0*31
char DATAX0 = 0*32
char DATAX1 = 0*33
char DATAY0 = 0*34
char DATAY1 = 0*35
char DATAZ0 = 0*36
char DATAZ1 = 0*37
char THRESH_ACT = 0*24
char THRESH_INACT = 0*38
char TIME_INACT = 0*26
char INT_ENABLE = 0*2E
char INT_MAP = 0*2F
char ACT_INACT_CTL = 0*27
char INT_SOURCE = 0*30
char values[10];
char output[20];
int x, y, z;
char inactivityevent = 0;
void setup()
{
SPI.begin();
SPI.setDataMode(SPI_MODE3);
Serial.begin(9600);
pinMode(cs,OUTPUT);
digitalWrite(cs, HIGH);
attachInterrupt(digitalpintointerrupt(intr),interruptHandler,RISING);
writeRegister(DATA_FORMAT,0*01);
writeRegister(POWER_CTL,0*08);
writeRegister(INT_MAP,0*F7 && 0*EF);
writeRegister(THRESH_INACT,1);
writeRegister(TIME_INACT,0);
writeRegister(ACT_INACT_CTL,0*0F);
writeRegister(INT_ENABLE,0*08);
readRegister(INT_SOURCE,1,VALUES);
}
void interrupHandler()
{
read register (INT_SOURCE,1,values);
}
void loop()
{
intr1=digitalread(intr);
if (intr1==high)
{
read register(DATAX0,6,values);
x = ((int)values[1]<<8|(int)values[0]);
y = ((int)values[3]<<8|(int)values[2]);
z = ((int)values[5]<<8|(int)values[4]);
if (x<=15 && x>=-15 && y<=10 && y>=-10 && z>=75 && z<=90)
{
digitalwrite(buzzer,HIGH);
digitalwrite(relay,LOW);
}
else
{
for (int i=0;i<=90;i++)
{
delay (2000);
if (intr == LOW)
{ break(); }
if (i==90)
digitalwrite(relay,LOW);
}
}
while (su=1)
{
if (intr==LOW)
{
digitalwrite(buzzer,LOW);
digitalwrite(relay,HIGH);
break();
}
}
}
}
Votre syntaxe pour les constantes hexadécimales n'est pas correcte - elle devrait être 0x, et non 0 * (le X n'est pas un signe de multiplication!). Vous avez aussi plein d'autres erreurs de syntaxe. C (et la plupart des autres langages de programmation) est très pointilleux sur la syntaxe, et vous ne pouvez pas dévier de la spécification du langage (contrairement, disons, à l'anglais). – nneonneo
remercie un million pour cette correction. J'ai étudié moi-même et évidemment je me suis trompé. J'ai utilisé l'un des programmes trouvés sur ce site en tant que programme de base et j'ai essayé d'en créer un à partir de ce site. Le lien est fourni ci-dessous. ce serait vraiment utile si vous pouvez m'aider à rectifier la plupart des erreurs de syntaxe. http://stackoverflow.com/questions/22701400/programming-arduino-with-adxl345-to-raise-interrupt-on-inactivity?rq=1 – labeebkb
Vous y avez tapé le code mais avec beaucoup d'erreurs. Je recommande de le saisir à nouveau mais en étant très précis sur les majuscules/minuscules, les symboles et les caractères de "ponctuation". – nneonneo