Expected unqualified-id before numeric constant

Arduino specifieke Software
Berichten: 4
Geregistreerd: 09 Nov 2018, 02:33

Expected unqualified-id before numeric constant

Berichtdoor HUGO » 09 Nov 2018, 02:53

Hallo,

In het onderstaande programma kleurt regel 3 roze en krijg ik de volgende foutmelding:

Expected unqualified-id before numeric constant.

Kan iemand helpen met het vinden van de fout a.u.b.


1 const int sensorPin = AO;
2 const float baselineTemp = 20.0;
3 void setup( )}
4 Serial.begin(9600);
5 for(int pinNumber = 2; pinNumber<5; pinNumber++){
6 pinMode(pinNumber,OUTPUT);
7 digitalWrite(pinNumber,LOW);
8 }
9 }
10 void loop(){
11 int sensorVal = analogRead(sensorPin);
12 Serial.print("Sensor Value: ");
13 Serial.print(snsorVal);
14 // convert the ADC reading to voltage
15 float voltage = (sensorVal/1024.0)* 5.0;
16 Serial.print(",Volts: ");
17 Serial.print(voltage);
18 Serial.print(", degrees C: ");
19 // convert the voltage to temperature in degrees
20 float temperature = (voltage - .5) * 100;
21 Serial.println(temperature);
22 if(temperature < baselineTemp){
23 digitalWrite(2,LOW);
24 digitalWrite(3,LOW);
25 digitalWrite(4,LOW);
26 }else if(temperature >= baselineTemp+2 &&
temperature < baselineTemp+4){
27 digitalWrite(2, HIGH);
28 digitalWrite(3, LOW);
29 digitalWrite(4, LOW);
30 }else if (temperature >= baselineTemp+4 &&
temperature < baselineTemp+6){
31 digitalWrite(2, HIGH);
32 digitalWrite(3, HIGH);
33 digitalWrite(4,LOW);
34 }else if (temperature >= baselineTemp+6){
35 digitalWrite(2, HIGH);
36 digitalWrite(3, HIGH);
37 digitalWrite(4, HIGH);
38 }
39 delay(1);
40 }

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Expected unqualified-id before numeric constant

Berichtdoor Koepel » 09 Nov 2018, 07:40

Hallo, welkom op dit forum.

Heb je dat ergens vandaan gekopieerd ? Waar vandaan ?

De regelnummers horen niet bij de code. Dat kan niet in de 'c' en 'c++' taal.
Een analog pin is "A0" (met een nul) en niet "AO" (met een 'O' :o ).
De setup() functie heeft een openingshaakje nodig, een '{'.
De variabele 'sensorVal' wordt gedeclareerd, maar vervolgens staat er 'snsorVal'. Dat is iets anders.
Mijn voorkeur heeft om ".5" gewoon als "0.5" te schrijven.
De delay onderaan van 1 ms is klein, daardoor kan de seriële verstuurde data niet op een normale manier verstuurt worden. De baudrate is ook laag met 9600 baud.
Er staat geen commentaar bij om uit te leggen wat de sketch doet.
Er wordt een analoge temperatuursensor gebruikt. Misschien de TMP36. Dat is niet betrouwbaar, want die geeft een vaste spanning af, terwijl de standaard referentie van de Arduino de 5V is, en die kan variëren.

Dit is jouw code, omgezet naar een nette sketch:
cpp code
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup( )
{
Serial.begin(9600);
for(int pinNumber = 2; pinNumber < 5; pinNumber++)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}

void loop()
{
int sensorVal = analogRead(sensorPin);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);

// convert the ADC reading to voltage
float voltage = (sensorVal / 1024.0) * 5.0;
Serial.print(",Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");

// convert the voltage to temperature in degrees
float temperature = (voltage - 0.5) * 100.0;
Serial.println(temperature);

if(temperature < baselineTemp)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if(temperature >= baselineTemp + 2 && temperature < baselineTemp + 4)
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if(temperature >= baselineTemp + 4 && temperature < baselineTemp + 6)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
else if(temperature >= baselineTemp + 6)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}

delay(200);
}


Nu ik de code zo zie, komt het bekend voor. Het is het Arduino project "Love-O-Meter". Dit is het origineel: https://github.com/arduino/Arduino/blob/master/build/shared/examples/10.StarterKit_BasicKit/p03_LoveOMeter/p03_LoveOMeter.ino. Het origineel heeft wel commentaar en uitleg. Waarom is dat verwijderd ?

Berichten: 4
Geregistreerd: 09 Nov 2018, 02:33

Re: Expected unqualified-id before numeric constant

Berichtdoor HUGO » 09 Nov 2018, 11:48

Hallo,

Bedankt voor het grondige antwoord.

1)Idd, het is de LOVE-O-Meter. Ik had dit programma overgetypt uit een boekje dat meegeleverd werd bij de hardware. Vandaar dat ik enkele typfouten heb gemaakt.

2)Grote fout is ook dat ik de regelnummers ook mee in het programma opgenomen heb.

3)De technische tips bekijk ik nog even verder.

Heel erg bedankt voor de reactie.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Expected unqualified-id before numeric constant

Berichtdoor Koepel » 09 Nov 2018, 11:55

Vaak is het commentaar belangrijker dan de code ;)

Hier staan de sketches van de Basic Starterkit: https://github.com/arduino/Arduino/tree/master/build/shared/examples/10.StarterKit_BasicKit. Als je zo'n sketch voor je ziet, dan kun je op "Raw" klikken, en dan met Ctrl+A en Ctrl+C kun je het kopiëren.

Berichten: 4
Geregistreerd: 09 Nov 2018, 02:33

Re: Expected unqualified-id before numeric constant

Berichtdoor HUGO » 10 Nov 2018, 21:31

Hallo,

Ik heb het programma eens geupload naar de Arduino- UNO.

Ik heb daarbij de delay in het programma op 200 gezet.

De gebruikte temperatuursensor is inderdaad de TMP 36.

Maar het programma doet niet wat het moet doen. Normaal is het de bedoeling (bij de LOVE-O-METER) dat je de temperatuursesor vastneemt tussen de vingers en dat dan afhankelijk van de bereikte temperatuur er 1, 2 of 3 LED' s gaan branden.

Maar in plaats daarvan gebeurt het volgende:

Bij het aansluiten van de voeding, gaan de 3 LED' s onmiddelijk branden en wordt de temperatuursensor ZEEEEER WARM.

Iemand een idee, wat hier aan de hand is ?

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Expected unqualified-id before numeric constant

Berichtdoor FPCUser » 11 Nov 2018, 00:01

Is de sensor juist aangesloten?

https://www.adafruit.com/product/165

Verder hier een duidelijke uitleg hoe je de sensor kunt testen en voorbeeld programma's.
https://learn.adafruit.com/tmp36-temperature-sensor

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Expected unqualified-id before numeric constant

Berichtdoor shooter » 11 Nov 2018, 01:36

koepel je doet het mooi, maar HUGO moet het wel zelf leren. hij zal wel wat liefde nodig hebben. hihi.
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 09 Nov 2018, 02:33

Re: Expected unqualified-id before numeric constant

Berichtdoor HUGO » 11 Nov 2018, 11:48

Probleem opgelost.

Ik had de anodes van de LED' s rechtstreeks op de + klem aangesloten i.p.v. op de uitgangen 2, 3 en 4.

De + en - van de temperatuursensor had ik ook verwisseld.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Expected unqualified-id before numeric constant

Berichtdoor Koepel » 11 Nov 2018, 12:05

Dat kan gebeuren.
Toen ik met Arduino begon ging er ook wel eens iets mis. Ik heb zelfs wel eens een Arduino board weggedaan, terwijl ik nu weet dat ik het had kunnen herstellen.

Via AliExpress kun je goedkope dingen bestellen. Dan is het niet erg als er iets stuk gaat.
Het is vandaag korting omdat het de elfde van de elfde is.
Een Arduino Uno voor onder de 2.50 Euro: https://www.aliexpress.com/item/high-quality-One-set-UNO-R3-CH340G-MEGA328P-for-Arduino-UNO-R3-NO-USB-CABLE/32697443734.html.
Daar is een extra driver voor nodig: http://www.wch.cn/download/CH341SER_EXE.html.
Een handvol (slechte kwaliteit) leds: https://www.aliexpress.com/item/30pcs-5mm-LED-diode-Light-Assorted-Kit-DIY-LEDs-Set-Yellow-Red-Green-free-shiiping-electronic/32708542672.html.

Je kunt via iDeal 39 cent overmaken, en dan ontvang je een maand later die leds.
Tel maar even mee: Ik schat in dat de kosten zijn: De leds 5 cent. iDeal 40 cent. Verpakken 5 cent. Versturen naar Nederland 1 euro. Bezorgen in Nederland 50 cent. Dat is samen 2 Euro en jij betaalt 39 cent.
Als een pakje niet door de brievenbus kan, dan komt een bezorger die voor Postnl werkt dat met een busje bezorgen. Soms koop ik iets voor minder dan 1 euro (inclusief verzendkosten) dat niet door de brievenbus kan.

Ik weet niet of die oververhitte temperatuursensor nog goed is. Heb je die tutorial van Adafruit nog gedaan ? De TMP36 is een temperatuursensor om de temperatuur te meten. De Love-O-Meter is alleen maar een rare toepassing.

Als een temperatuurmeting met de TMP36 er 5 graden naast zit, dat geeft niet.
Voor de temperatuur is er de DS18B20 sensor. Dan heb je een library nodig, maar dan heb je wel meteen de juiste temperatuur.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten