yl_pan 发表于 2012-5-15 17:41:07

member function declared in class 报错

请问这种情况是啥回事??
no 'float MAX6675::read_temp()' member function declared in class 'MAX6675'

但是类里已经定义了#ifndef MAX6675_h
#define MAX6675_h

#include "WProgram.h"

class MAX6675
{
public:
    MAX6675(int CS_pin, int SO_pin, int SCK_pin, int units);
    float read_temp();
private:
    int _CS_pin;
    int _SO_pin;
    int _SCK_pin;
    int _units;
        int chip_read( int CS_pin, int &error_tc );
};

#endifCpp文件#include <WProgram.h>
#include <MAX6675.h>

MAX6675::MAX6675(int CS_pin, int SO_pin, int SCK_pin, int units)
{
pinMode(CS_pin, OUTPUT);
pinMode(SO_pin, INPUT);
pinMode(SCK_pin, OUTPUT);

digitalWrite(CS_pin, HIGH);

_CS_pin = CS_pin;
_SO_pin = SO_pin;
_SCK_pin = SCK_pin;
_units = units;
}

float MAX6675::read_temp()
{
        int value = 0;
        int error_tc = 0;
        float temp = 0.0;
       
   digitalWrite(_CS_pin,LOW);                               
    delay(2);
    digitalWrite(_CS_pin,HIGH);
    delay(220);

       
        digitalWrite(_CS_pin,LOW);
       
        digitalWrite(_SCK_pin,HIGH);
        delay(1);
        digitalWrite(_SCK_pin,LOW);

        for (int i=11; i>=0; i--) {
                digitalWrite(_SCK_pin,HIGH);
                value += digitalRead(_SO_pin) << i;
                digitalWrite(_SCK_pin,LOW);
        }
        digitalWrite(_SCK_pin,HIGH);
        error_tc = digitalRead(_SO_pin);
        digitalWrite(_SCK_pin,LOW);

        for (int i=1; i>=0; i--) {
                digitalWrite(_SCK_pin,HIGH);
                delay(1);
                digitalWrite(_SCK_pin,LOW);
        }

        // Disable Device
        digitalWrite(_CS_pin, HIGH);

        if(_units == 2) {
                temp = (value*0.25) * 9.0/5.0 + 32.0;
        } else if(_units == 1) {
                temp = (value*0.25);
        } else {
                temp = value;
        }

if(error_tc != 0) {
                return -_CS_pin;
        } else {
                return temp;
        }
}

弘毅 发表于 2012-5-15 19:57:35

额。。。。有完整的库和代码吗。。。

yl_pan 发表于 2012-5-15 23:02:34


已经是完整的库了,下面的是程序#include <MAX6675.h>

int LED1 = 9;             // Status LED Pin
int CS = 10;             // CS pin on MAX6675
int SO = 12;            // SO pin of MAX6675
int SCK = 13;             // SCK pin of MAX6675
int units = 2;            // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperature = 0.0;// Temperature output variable


// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCK,units);


// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
}

void loop() {
        // Read the temp from the MAX6675
        temperature = temp.read_temp();

        if(temperature < 0) {                  
                // If there is an error with the TC, temperature will be < 0
                Serial.print("Thermocouple Error on CS");
                Serial.println( temperature );
                digitalWrite(LED1, HIGH);
        } else {
                Serial.print("Current Temperature: ");
                Serial.println( temperature );
                digitalWrite(LED1, LOW);
        }

        // Wait one second before reading again
        delay(1000);       
}

nust_奔跑 发表于 2013-5-9 16:55:15

你的库文件放到了自带库的目录下了????
页: [1]
查看完整版本: member function declared in class 报错