Не могу скомпилировать

Добрый день, прошу помощи в компиляции проекта. Создаю многостраничный скетч.

какую помощь надо? Перевести вручную в машинный код всю эту писанину? А с оптимизацией или и так сойдёт?

Для начало хоть скомпилировать проект, и залить.

по ссылкам никто ходить не будет

Проблема-то в чём?

Вот собственно сам проект, не получается скомпилировать, где ошибка не пойму.

Ругается на 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 объявлена заглавными буками, а в коде написана маленькими - язык Си такого не понимает и требует одинакового регистра букв.

1 лайк

У этого кода есть автор?

Этот проект со старого форума, автор PRC.

Код вручную что ли перенабирали?

а в оригинале

unsigned char dht[5];

Там, наверно, ещё куча таких опечаток

Копипастом с форума.

Это у вас при копипасте порядок букв поменялся? - вранье

1 лайк

Перепроверю все. Да скорее всего сам.

Компилируйте, компилятор сам проверит.

//***************************************************************************************
// Заголовок, файл *.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()’

Сам проект, обновил.

покажите сообщение об ошибке полностью