Efter felsökning och med några motstridiga deklarationer om analoga stift, trodde jag äntligen att det var gjort, efter kompileringen fick jag det här felet: / p>

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

Jag kan inte förstå vad detta betyder. Vad är fel med min kod här nere?

// 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); } } 

Det ska vara kod för en klocka (om den inte var uppenbar nog) ansluten till 4 7-segment avkodare, även ansluten till 4 7-segment LED-skärmar.

Kommentarer

  • Generellt när du skriver i C bör ”makro” vara ett stort tips om att du har problem med #define . Bizzare-fel som säger saker som inte är vad du skrev: problem med #define.

Svar

Otur. Det finns en fil i Arduino som heter ”binary.h”, och den innehåller en definition som heter ”B1”. Vilket innebär att du inte får använda ”B1” som en variabel. Enligt min mening är den filen ”binär.h” helt onödig.

I inställningarna kan du aktivera extra utdata för kompilatorn och slå på radnummer. Kompilatorn berättar vad som är fel, men du måste veta hur kompilatorn gör det. Det första kompileringsfelet är det viktigaste.

… / hårdvara / arduino / avr / cores / arduino / binary.h: 31: 12: fel: förväntat okvalificerat id före numeriskt konstant #define B1 1 ”betyder att kompilatorn läste filen” binary.h ”och vid rad 31 märkte den något den inte förstod och det har att göra med” B1 ”.

Kommentarer

  • Så jag måste bara inte använda B1?
  • Rätt. Den främsta B med 0 ' s och 1 ' s används för binära konstanter: arduino.cc/en/Reference/IntegerConstants Eftersom det är ett pin-nummer kan du ringa variabeln " const B1Pin = 1; " eller till och med " const TheyToldMeAtStackExchangeNotToCallThisB1 = 1; "
  • Jag nämner: " const int B1Pin = 1; ". Tyvärr har jag glömt ' int '. Nyckelordet ' const ' behövs inte, det berättar för kompilatorn att det är ett konstant antal och inte ändras.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *