Compilatie syntax fout

IDE gerelateerde berichten
Berichten: 79
Geregistreerd: 07 Dec 2012, 10:27
Woonplaats: Paesens (Frl)

Compilatie syntax fout

Berichtdoor paysan » 11 Feb 2013, 09:32

Ik probeer mijn SHT75 aan te sturen en heb een stukje code gevonden.
Er staat de volgende regel in:

Sensirion sht = Sensirion(dataPin, sclkPin);

De compiler struikelt hier over met de melding:

'Sensirion' does not name a type.

Wie weet wat ik hier niet goed doe?

Advertisement

Berichten: 79
Geregistreerd: 07 Dec 2012, 10:27
Woonplaats: Paesens (Frl)

Re: Compilatie syntax fout

Berichtdoor paysan » 11 Feb 2013, 10:19

Het probleem is opgelost door de Sensirion lib te importeren.
Maar nu heb ik nog een hele berg andere fout meldingen.
Ze lijken op elkaar dus het zal wel uit 1 hoek komen.

Ik heb de volgende #includes er in staan:

#include <Sensirion.h>
#include <Wire.h>
#include <Arduino.h>
#include <WConstants.h>


Ik krijg deze fouten:


C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:30:26: error: WConstants.h: No such file or directory
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In constructor 'Sensirion::Sensirion(uint8_t, uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:86: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:86: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'uint8_t Sensirion::meas(uint8_t, uint16_t*, uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:147: error: 'delay' was not declared in this scope


en nog veel meer.

Wie kan me opweg helpen?

Wim

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Compilatie syntax fout

Berichtdoor pjh » 11 Feb 2013, 20:55

dikke kans dat de library niet is aangepast aan de nieuwste Arduino-IDE.
Open de .h en .cpp file in wordpad (oid) en verander Program.h in Arduino.h
Hoop dat het werkt...

Berichten: 79
Geregistreerd: 07 Dec 2012, 10:27
Woonplaats: Paesens (Frl)

Re: Compilatie syntax fout

Berichtdoor paysan » 12 Feb 2013, 14:41

In zowel Sensirion.h als i Sensirion.cpp komen program.h en arduino.h niet voor.

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: Compilatie syntax fout

Berichtdoor Karel » 12 Feb 2013, 14:56

Probeer eens om bij de 4 includes die met Arduino.h bovenaan te zetten
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 79
Geregistreerd: 07 Dec 2012, 10:27
Woonplaats: Paesens (Frl)

Re: Compilatie syntax fout

Berichtdoor paysan » 13 Feb 2013, 12:29

Dan krijg ik dit:







C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:30:26: error: WConstants.h: No such file or directory
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In constructor 'Sensirion::Sensirion(uint8_t, uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:86: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:86: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'uint8_t Sensirion::meas(uint8_t, uint16_t*, uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:147: error: 'delay' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:148: error: 'digitalRead' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'bool Sensirion::measRdy()':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:165: error: 'digitalRead' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'uint8_t Sensirion::readSensorRaw(unsigned int*, uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:213: error: 'delay' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:214: error: 'digitalRead' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'uint8_t Sensirion::putByte(uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:235: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:235: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:239: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:239: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:241: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:241: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:243: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:243: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:244: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:245: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:250: error: 'INPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:252: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:252: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:253: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:254: error: 'digitalRead' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:258: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'uint8_t Sensirion::readByte(uint8_t)':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:268: error: 'INPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:268: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:271: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:271: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:272: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:273: error: 'digitalRead' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:276: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:280: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:283: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:283: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:285: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:285: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:287: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:287: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:288: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:289: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'void Sensirion::startTransmission()':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:310: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:310: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:311: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:311: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:312: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:313: error: 'delayMicroseconds' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:327: error: 'INPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp: In member function 'void Sensirion::resetConnection()':
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:341: error: 'LOW' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:341: error: 'digitalWrite' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:342: error: 'OUTPUT' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:342: error: 'pinMode' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:343: error: 'HIGH' was not declared in this scope
C:\Users\Wim\Desktop\arduino-1.5.2\libraries\Sensirion\Sensirion.cpp:347: error: 'delayMicroseconds' was not declared in this scope

Ik zal de complete source er nog even bij doen
===================================================================================

#include <Arduino.h>
#include <Sensirion.h>

const uint8_t dataPin = 9; // SHT serial data
const uint8_t sclkPin = 8; // SHT serial clock
const uint8_t ledPin = 13; // Arduino built-in LED
const uint32_t TRHSTEP = 5000UL; // Sensor query period
const uint32_t BLINKSTEP = 250UL; // LED blink period

Sensirion sht = Sensirion(dataPin, sclkPin);

uint16_t rawData;
float temperature;
float humidity;
float dewpoint;

byte ledState = 0;
byte measActive = false;
byte measType = TEMP;

unsigned long trhMillis = 0; // Time interval tracking
unsigned long blinkMillis = 0;

void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
delay(15); // Wait >= 11 ms before first cmd
// Demonstrate blocking calls
sht.measTemp(&rawData); // sht.meas(TEMP, &rawData, BLOCK)
temperature = sht.calcTemp(rawData);
sht.measHumi(&rawData); // sht.meas(HUMI, &rawData, BLOCK)
humidity = sht.calcHumi(rawData, temperature);
dewpoint = sht.calcDewpoint(humidity, temperature);
logData();
}

void loop() {
unsigned long curMillis = millis(); // Get current time

// Rapidly blink LED. Blocking calls take too long to allow this.
if (curMillis - blinkMillis >= BLINKSTEP) { // Time to toggle the LED state?
ledState ^= 1;
digitalWrite(ledPin, ledState);
blinkMillis = curMillis;
}

// Demonstrate non-blocking calls
if (curMillis - trhMillis >= TRHSTEP) { // Time for new measurements?
measActive = true;
measType = TEMP;
sht.meas(TEMP, &rawData, NONBLOCK); // Start temp measurement
trhMillis = curMillis;
}
if (measActive && sht.measRdy()) { // Note: no error checking
if (measType == TEMP) { // Process temp or humi?
measType = HUMI;
temperature = sht.calcTemp(rawData); // Convert raw sensor data
sht.meas(HUMI, &rawData, NONBLOCK); // Start humidity measurement
} else {
measActive = false;
humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
dewpoint = sht.calcDewpoint(humidity, temperature);
logData();
}
}
}

void logData() {
Serial.print("Temperature = "); Serial.print(temperature);
Serial.print(" C, Humidity = "); Serial.print(humidity);
Serial.print(" %, Dewpoint = "); Serial.print(dewpoint);
Serial.println(" C");
}

Berichten: 79
Geregistreerd: 07 Dec 2012, 10:27
Woonplaats: Paesens (Frl)

Re: Compilatie syntax fout

Berichtdoor paysan » 14 Feb 2013, 15:01

Opgelost, het was een mix van het Arduino OS en de oude incli=ude files die niet matchten. Arduino.h en Wprograms.h

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Compilatie syntax fout

Berichtdoor pjh » 14 Feb 2013, 21:25

Mooi!
& fijn dat je het nog even meldt.

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten