Etter feilsøking og noen motstridende erklæringer om analoge pinner, trodde jeg endelig at det var gjort, etter kompilering fikk jeg denne feilen:

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

Jeg kan ikke forstå hva dette betyr. Hva er galt med koden min her nede?

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

Den skal være kode for en klokke (hvis den ikke var åpenbar nok) koblet til 4 7-segment dekodere, også koblet til 4 7-segment LED-skjermer.

Kommentarer

  • Generelt når du skriver i C, bør «makro» være et stort hint om at du har et problem med #define . Bizzare-feil som sier ting som ikke er det du skrev: problem med #define.

Svar

Uflaks. Det er en fil i Arduino som heter «binary.h», og den inneholder en definisjon kalt «B1». Hvilket betyr at du ikke kan bruke «B1» som en variabel. Etter min mening er den filen «binary.h» helt unødvendig.

I innstillingene kan du slå på ekstra utdata for kompilatoren og slå på linjenumre. Kompilatoren vil fortelle hva som er galt, men du må vite hvordan kompilatoren gjør det. Den første kompilatorfeilen er den viktigste.

« … / hardware / arduino / avr / cores / arduino / binary.h: 31: 12: error: forventet ukvalifisert-id før numerisk konstant #define B1 1 «betyr at kompilatoren leste filen» binary.h «og på linje 31 la den merke noe den ikke forsto, og det har å gjøre med» B1 «.

Kommentarer

  • Så jeg må bare ikke bruke B1?
  • Riktig. Den fremste B med 0 ' s og 1 ' s brukes til binære konstanter: arduino.cc/en/Reference/IntegerConstants Siden det er et pin-nummer, kan du ringe variabelen " const B1Pin = 1; " eller til og med " const TheyToldMeAtStackExchangeNotToCallThisB1 = 1; "
  • Jeg ment: " const int B1Pin = 1; ". Beklager, jeg glemte ' int '. ' const ' nøkkelordet er ikke nødvendig, det forteller kompilatoren at det er et konstant tall og ikke endres.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *