Après le débogage et avoir des déclarations contradictoires sur les broches analogiques, jai finalement pensé que cétait fait, après la compilation, jai eu cette erreur:

32:0, 1: 31:12: error: expected unqualified-id before numeric constant 2:5: note: in expansion of macro "B1" 

Je ne comprends pas ce que cela signifie. Quel est le problème avec mon code ici?

// don"t judge me if it"s too long and overcomplicated :P I"m still new xD int AA1 = 0; int B1 = 1; int C1 = 2; int D1 = 3; int AA2 = 4; int B2 = 5; int C2 = 6; int AA3 = 8; int B3 = 9; int C3 = 10; int D3 = 11; int B4 = 12; int C4 = 13; int sec = 0; int min1 = 0; int min2 = 0; int hour1 = 8; bool hour2 = 0; void setup() { pinMode(AA1, OUTPUT); pinMode(B1, OUTPUT); pinMode(C1, OUTPUT); pinMode(D1, OUTPUT); pinMode(AA2, OUTPUT); pinMode(B2, OUTPUT); pinMode(C2, OUTPUT); pinMode(AA3, OUTPUT); pinMode(B3, OUTPUT); pinMode(C3, OUTPUT); pinMode(D3, OUTPUT); pinMode(B4, OUTPUT); pinMode(C4, OUTPUT); } void loop() { OutputOn(); delay(1000); sec++; if(sec == 60) { sec = 0; min1++; if(min1 == 10) { min1 = 0; min2++; if(min2 == 6) { min2 = 0; hour1++; if(hour1 == 10) { hour1 = 0; hour2 = 1; } if(hour2 == 1, hour1 == 3) { hour1 = 1; hour2 = 0; } } } } } void OutputOn() { digitalWrite(B1, LOW); digitalWrite(C1, LOW); digitalWrite(D1, LOW); digitalWrite(A2, LOW); digitalWrite(B2, LOW); digitalWrite(C2, LOW); digitalWrite(A3, LOW); digitalWrite(B3, LOW); digitalWrite(C3, LOW); digitalWrite(D3, LOW); digitalWrite(B4, LOW); digitalWrite(C4, LOW); if(min1 == 1) { digitalWrite(AA1, HIGH); } if(min1 == 2) { digitalWrite(B1, HIGH); } if(min1 == 3) { digitalWrite(B1, HIGH); digitalWrite(AA1, HIGH); } if(min1 == 4) { digitalWrite(C1, HIGH); } if(min1 == 5) { digitalWrite(C1, HIGH); digitalWrite(AA1, HIGH); } if(min1 == 6) { digitalWrite(D1, HIGH); digitalWrite(B1, HIGH); } if(min1 == 7) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); digitalWrite(B1, HIGH); } if(min1 == 8) { digitalWrite(D1, HIGH); } if(min1 == 9) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); } if(min2 == 1) { digitalWrite(AA2, HIGH); } if(min2 == 2) { digitalWrite(B2, HIGH); } if(min2 == 3) { digitalWrite(B2, HIGH); digitalWrite(AA1, HIGH); } if(min2 == 4) { digitalWrite(C2, HIGH); } if(min2 == 5) { digitalWrite(C2, HIGH); digitalWrite(A2, HIGH); } if(min2 == 6) { digitalWrite(C2, HIGH); digitalWrite(B2, HIGH); } if(hour1 == 1) { digitalWrite(AA3, HIGH); } if(hour1 == 2) { digitalWrite(B3, HIGH); } if(hour1 == 3) { digitalWrite(B3, HIGH); digitalWrite(AA3, HIGH); } if(hour1 == 4) { digitalWrite(C3, HIGH); } if(hour1 == 5) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); } if(hour1 == 6) { digitalWrite(C3, HIGH); digitalWrite(B3, HIGH); } if(hour1 == 7) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); digitalWrite(B3, HIGH); } if(hour1 == 8) { digitalWrite(D3, HIGH); } if(hour1 == 9) { digitalWrite(D3, HIGH); digitalWrite(C3, HIGH); } if(hour2 == 1) { digitalWrite(B4, HIGH); digitalWrite(C4, HIGH); } } 

Cest censé être le code dune horloge (si ce nétait pas assez évident) reliée à 4 décodeurs 7 segments, également connectés à 4 afficheurs LED 7 segments.

Commentaires

  • En général, lors de lécriture en C, «macro» devrait être un gros indice que vous avez un problème impliquant #define . Bizzare erreurs disant des choses qui ne sont pas ce que vous avez écrit: problème impliquant #define.

Réponse

Pas de chance. Il existe un fichier dans Arduino appelé « binary.h », et il contient une définition appelée « B1 ». Ce qui signifie que vous ne pouvez pas utiliser « B1 » comme variable. À mon avis, ce fichier « binary.h » est totalement inutile.

Dans les préférences, vous pouvez activer une sortie supplémentaire pour le compilateur et activer les numéros de ligne. Le compilateur dira ce qui ne va pas, mais vous devez savoir comment le compilateur fait cela. La première erreur du compilateur est la plus importante.

«  … / hardware / arduino / avr / cores / arduino / binary.h: 31: 12: error: attendu non qualifié-id avant numérique constante #define B1 1 « signifie que le compilateur lisait le fichier » binary.h « et à la ligne 31, il a remarqué quelque chose quil ne comprenait pas et quil a à voir avec » B1 « .

Commentaires

  • Je dois donc ne pas utiliser B1?
  • Correct. Le B de début avec 0 ' s et 1 ' s est utilisé pour les constantes binaires: arduino.cc/en/Reference/IntegerConstants Comme il sagit dun numéro de broche, vous pouvez appeler la variable " const B1Pin = 1; " ou même " const TheyToldMeAtStackExchangeNotToCallThisB1 = 1; "
  • I ment: " const int B1Pin = 1; ". Désolé, jai oublié le ' int '. Le mot clé ' const ' nest pas nécessaire, il indique au compilateur quil sagit dun nombre constant et quil ne change pas.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *