什么是Arduino的core.a(main.cpp.o)错误? [英] What is core.a (main.cpp.o) error in Arduino?
本文介绍了什么是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屋!
查看全文