什么是Arduino的core.a(main.cpp.o)错误? [英] What is core.a (main.cpp.o) error in Arduino?

查看:1495
本文介绍了什么是Arduino的core.a(main.cpp.o)错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我compling在Arduino的我的code,突然我得到这个错误:

I was compling my code in Arduino and suddenly I got this error:

 core.a(main.cpp.o): In function `main':
 D:\Personal\Arduino\arduino-1.0.4-windows\arduino-  1.0.4\hardware\arduino\cores\arduino/main.cpp:11: undefined reference to `setup'
 D:\Personal\Arduino\arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop'

我不知道这意味着什么。这里是我的code:

I have no idea what that means. Here's my code:

#ifndef dht_h
#define dht_h

#if ARDUINO < 100
    #include <WProgram.h>
#else
    #include <Arduino.h>
#endif

#define DHT_LIB_VERSION "0.1.05"

#define DHTLIB_OK                0
#define DHTLIB_ERROR_CHECKSUM   -1
#define DHTLIB_ERROR_TIMEOUT    -2
#define DHTLIB_INVALID_VALUE  -999
#include <dht.h>

#define TIMEOUT 10000

class dht
{
    public:
        int read22(uint8_t pin);
            double humidity;
            double temperature;

    private:
        uint8_t bits[5];  // Buffer to receive data
        int read(uint8_t pin);
};
#endif


// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int dht::read22(uint8_t pin)
{
    // READ VALUES
    int rv = read(pin);
    if (rv != DHTLIB_OK)
    {
        humidity    = DHTLIB_INVALID_VALUE;  // Invalid value, or is NaN prefered?
        temperature = DHTLIB_INVALID_VALUE;  // Invalid value
        return rv;
    }

    // CONVERT AND STORE
    humidity    = word(bits[0], bits[1]) * 0.1;

    if (bits[2] & 0x80) // negative temperature
    {
        temperature = word(bits[2]&0x7F, bits[3]) * 0.1;
        temperature *= -1.0;
    }
    else
    {
        temperature = word(bits[2], bits[3]) * 0.1;
    }

    // TEST CHECKSUM
    uint8_t sum = bits[0] + bits[1] + bits[2] + bits[3];
    if (bits[4] != sum) return DHTLIB_ERROR_CHECKSUM;

    return DHTLIB_OK;
}

//Private
// return values:
// DHTLIB_OK
// DHTLIB_ERROR_TIMEOUT
int dht::read(uint8_t pin)
{
    // INIT BUFFERVAR TO RECEIVE DATA
    uint8_t cnt = 7;
    uint8_t idx = 0;

    // EMPTY BUFFER
    for (int i=0; i< 5; i++) bits[i] = 0;

    // REQUEST SAMPLE
    pinMode(pin, OUTPUT);
    digitalWrite(pin, LOW);
    delay(20);
    digitalWrite(pin, HIGH);
    delayMicroseconds(40);
    pinMode(pin, INPUT);

    // GET ACKNOWLEDGE or TIMEOUT
    unsigned int loopCnt = TIMEOUT;
    while(digitalRead(pin) == LOW)
            if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;

    loopCnt = TIMEOUT;
    while(digitalRead(pin) == HIGH)
            if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;

    // READ THE OUTPUT - 40 BITS => 5 BYTES
    for (int i=0; i<40; i++)
    {
        loopCnt = TIMEOUT;
        while(digitalRead(pin) == LOW)
            if (loopCnt-- == 0)
                return DHTLIB_ERROR_TIMEOUT;

        unsigned long t = micros();

        loopCnt = TIMEOUT;
        while(digitalRead(pin) == HIGH)
            if (loopCnt-- == 0)
                return DHTLIB_ERROR_TIMEOUT;

        if ((micros() - t) > 40)
            bits[idx] |= (1 << cnt);
        if (cnt == 0) // Next byte?
        {
            cnt = 7;
            idx++;
        }
        else
            cnt--;
    }
    return DHTLIB_OK;
}

什么我需要做什么来解决这个问题code?

What do I need to do to fix this code?

推荐答案

每一个Arduino的PROGRAMM需要的功能设置()循环(),你既没有他们。

Every Arduino Programm needs the functions setup() and loop(), you have neither of them.

您也许应该检查的出来。

You should probably check this out.

您应该将它们添加到您的主文件(通常是第一个在IDE中创建)。

You should add them to your main file(usually the first you created in the IDE).

这篇关于什么是Arduino的core.a(main.cpp.o)错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆