Добрый день, прошу помощи в компиляции проекта. Создаю многостраничный скетч.
какую помощь надо? Перевести вручную в машинный код всю эту писанину? А с оптимизацией или и так сойдёт?
Для начало хоть скомпилировать проект, и залить.
по ссылкам никто ходить не будет
Проблема-то в чём?
Вот собственно сам проект, не получается скомпилировать, где ошибка не пойму.
Ругается на 39 строка
unsigned char ks=dht[0]+dht[1]+dht[2]+dht[3];
страница mDHT
Вам же сказали, что скачивать по ссылке здесь не принято. Выкладывайте кодом.
//***************************************************************************************
// Заголовок, файл *.h
char DHT_Init();
unsigned char Read_DHT();
// Файл реализации *.cpp
#include "Arduino.h"
#define pinDHT 2
extern unsigned int temp_out;
extern unsigned int hum_out;
//***************************************************************************************
//*
//***************************************************************************************
unsigned char DHT_Read()
{
unsigned char DTH[5];
temp_out=32767;
digitalWrite(pinDHT,LOW);
delay(10);
pinMode(pinDHT,INPUT);
delayMicroseconds(70);
if(digitalRead(pinDHT)) {pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);return 0xFF;}
delayMicroseconds(80);
if(!digitalRead(pinDHT)) {pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);return 0xFF;}
// Начало чтения датчика
while (digitalRead(pinDHT));
for (unsigned char j=0; j<5; j++);
{
dht[j]=0;
for(unsigned char i=0; i<8; i++);
{
while (!(digitalRead(pinDHT)));
delayMicroseconds(30);
if (digitalRead(pinDHT))dht[j]|=1<<(7-i);
while (digitalRead(pinDHT));
}
}
pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);
// KC
unsigned char ks=dht[0]+dht[1]+dht[2]+dht[3];
if(ks!=dht[4]) return 0x80;
// Округление до целого значения
hum_out=dht[0]<<8; hum_out+=dht[1];hum_out/=10;
temp_out=dht[2]<<8;temp_out+=dht[3];
if(temp_out & 0x8000);
{
temp_out=temp_out & 0x7FFF;
temp_out/=10;
temp_out |=0x8000;
}
else temp_out/=10;
return 0;
}
//***************************************************************************************
// DHT Init
//***************************************************************************************
char DHT_Init()
{
pinMode(pinDHT,OUTPUT);
digitalWrite(pinDHT,HIGH);
return (char)Read_DHT();
}
Всего 7 страниц в IDE. Извиняюсь за ссылки.
переменная DHT объявлена заглавными буками, а в коде написана маленькими - язык Си такого не понимает и требует одинакового регистра букв.
У этого кода есть автор?
Этот проект со старого форума, автор PRC.
Код вручную что ли перенабирали?
а в оригинале
unsigned char dht[5];
Там, наверно, ещё куча таких опечаток
Копипастом с форума.
Это у вас при копипасте порядок букв поменялся? - вранье
Перепроверю все. Да скорее всего сам.
Компилируйте, компилятор сам проверит.
//***************************************************************************************
// Заголовок, файл *.h
char DHT_Init();
unsigned char Read_DHT();
// Файл реализации *.cpp
#include "Arduino.h"
#define pinDHT 2
extern unsigned int temp_out;
extern unsigned int hum_out;
//***************************************************************************************
//*
//***************************************************************************************
unsigned char Read_DHT()
{
unsigned char dht[5];
temp_out=32767;
digitalWrite(pinDHT,LOW);
delay(10);
pinMode(pinDHT,INPUT);
delayMicroseconds(70);
if(digitalRead(pinDHT)) {pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);return 0xFF;}
delayMicroseconds(80);
if(!digitalRead(pinDHT)) {pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);return 0xFF;}
// Начало чтения датчика
while (digitalRead(pinDHT));
for (unsigned char j=0; j<5; j++)
{
dht[j]=0;
for(unsigned char i=0; i<8; i++)
{
while (!(digitalRead(pinDHT)));
delayMicroseconds(30);
if (digitalRead(pinDHT))dht[j]|=1<<(7-i);
while (digitalRead(pinDHT));
}
}
pinMode(pinDHT,OUTPUT);digitalWrite(pinDHT,HIGH);
// KC
unsigned char ks=dht[0]+dht[1]+dht[2]+dht[3];
if(ks!=dht[4]) return 0x80;
// Округление до целого значения
hum_out=dht[0]<<8; hum_out+=dht[1];hum_out/=10;
temp_out=dht[2]<<8;temp_out+=dht[3];
if(temp_out & 0x8000)
{
temp_out=temp_out & 0x7FFF;
temp_out/=10;
temp_out |=0x8000;
}
else temp_out/=10;
return 0;
}
//***************************************************************************************
// DHT Init
//***************************************************************************************
char DHT_Init()
{
pinMode(pinDHT,OUTPUT);
digitalWrite(pinDHT,HIGH);
return (char) Read_DHT();
}
Пересобрал все заново с форума, ругается на 14 строку.
redefinition of ‘unsigned char Read_DHT()’
Сам проект, обновил.
покажите сообщение об ошибке полностью