Всем привет. Пробую работать с программатором через arduino v3. Со светодиодами все получилось. Теперь хочу подключить датчик температуры и залить такой скетч Код (C): // подключаем библиотеку #include <dht.h> // создаём объект-сенсор DHT sensor = DHT(); void setup() { Serial.begin(9600); // методом attach объявляем к какому контакту подключен // сенсор. В нашем примере это нулевой аналоговый контакт sensor.attach(1); // // после подачи питания ждём секунду до готовности сенсора к работе delay(1000); } void loop() { // метод update заставляет сенсор выдать текущие измерения sensor.update(); switch (sensor.getLastError()) { case DHT_ERROR_OK: char msg[128]; // данные последнего измерения можно считать соответствующими // методами sprintf(msg, "Temperature = %dC, Humidity = %d%%", sensor.getTemperatureInt(), sensor.getHumidityInt()); Serial.println(msg); break; case DHT_ERROR_START_FAILED_1: Serial.println("Error: start failed (stage 1)"); break; case DHT_ERROR_START_FAILED_2: Serial.println("Error: start failed (stage 2)"); break; case DHT_ERROR_READ_TIMEOUT: Serial.println("Error: read timeout"); break; case DHT_ERROR_CHECKSUM_FAILURE: Serial.println("Error: checksum error"); break; } delay(2000); } Компилятор выдает такую ошибку: c:/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn2313.o.init9+0x2): relocation truncated to fit: R_AVR_13_PCREL against symbol `exit' defined in .fini9 section in c:/arduino-1.0.4/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_exit.o). Что не так???
Да (( Если в данной строке сделать так sensor.attach(A0); , то все ОК. А если сделать как у меня sensor.attach(1); , то ошибка. Я хотел получить значения температуры с Attiny 2313
Ну а у ATtiny2313 всего 1Kb памяти для кода, вы написали программу в 5 раз больше, чем может поместиться в этот контроллер. Вы же его используете, да?
attiny2313a - 2kb кода. http://blog.abtronics.ru/2012/07/09/attiny2313a-pu-восьмибитные-cmos-микропроцессоры/ ((( Ну вот хотел так сказать простую задачу на нем решить - получение данных с датчика.
У вас в схеме предусмотрено подключение по сериал порту? Зачем в setup() вызов Serial.begin(9600)? Мк attiny2313a у вас чистый или с ардуиновским бутлодером? Потом правильный вызов sensor.attach(A0), A0 это целочисленная константа. В общем возможно вам просто код вызывающий serial надо выкинуть, он только на плате будет работать или если ваша схема умеет писать в последовательный порт.
1. Нет нет предусмотрено 2. Взял готовый рабочий код. 3. Мк attiny2313a - чистый, заливаю в него скетч через ардуино. А как тогда исправить код ??? Просто в си не силен. Спасибо.
Возможно так. Вместо закоментированного кода вставьте свою обработку. Код (C): // подключаем библиотеку #include <dht.h> // создаём объект-сенсор DHT sensor = DHT(); void setup() { // методом attach объявляем к какому контакту подключен // сенсор. В нашем примере это нулевой аналоговый контакт sensor.attach(A0); // // после подачи питания ждём секунду до готовности сенсора к работе delay(1000); } void loop() { // метод update заставляет сенсор выдать текущие измерения sensor.update(); switch (sensor.getLastError()) { case DHT_ERROR_OK: // char msg[128]; // // данные последнего измерения можно считать соответствующими // // методами // sprintf(msg, "Temperature = %dC, Humidity = %d%%", // sensor.getTemperatureInt(), sensor.getHumidityInt()); // Serial.println(msg); break; case DHT_ERROR_START_FAILED_1: // Serial.println("Error: start failed (stage 1)"); break; case DHT_ERROR_START_FAILED_2: // Serial.println("Error: start failed (stage 2)"); break; case DHT_ERROR_READ_TIMEOUT: // Serial.println("Error: read timeout"); break; case DHT_ERROR_CHECKSUM_FAILURE: // Serial.println("Error: checksum error"); break; } delay(2000); }