Перейти к содержанию

Подключение Датчика Dht11


Рекомендуемые сообщения

Переписал библеотеку для датчика DHT11

Но CVAVR ругаеться

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(10): '(' expected

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(14): undefined symbol 'bits'

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(41): ';' expected

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(48): undefined symbol 'result'

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(54): undefined symbol 'bits'

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(63): undefined symbol 'bits'

Error: C:\Users\ÂýéÄëèí\YandexDisk\RobotProj\Test\test.c(72): '}' not expected

#include <mega8.h>
#include <stdio.h>
#include <delay.h>

#define DHT11_ERROR 255


uint8_t bits;
char dht11_getdata(char select) {
   char i, j;

   for(i = 0; i < 5; i++) { bits[i] = 0; }

   // Сброс порта
   DDRD.4 = 1; // На выход
   PORTD.4 = 1;
   delay_ms(100);

   // Отправить запрос
   PORTD.4 = 0;
   delay_ms(18);
   PORTD.4 = 1;
   delay_us(1);
   DDRD.4 = 0; // На вход
   delay_us(39);

   // Проверка состояния 1
   if(PIND.4 == 1) { return DHT11_ERROR; }
   delay_us(80);

   // Проверка состояния 2
   if(PIND.4 == 0) { return DHT11_ERROR; }
   delay_us(80);


   // Читаем данные
   for(j = 0; j<5; j++) { // Читаем 5 байт

       uint8_t result = 0;
       for(i = 0; i<8; i++) { // Читаем каждый бит

           while(PIND.4 == 0); // Ждем высокий уровень
           delay_us(30);

           if(PIND.4 == 1) { // Если после 30мкс все ещё высокий уровень
               result |= (1 << (7 - i)); // Получаем результат
           }

           while(PIND.4 == 1); // Ждем низкого уровня
       }

       bits[j] = result;
   }

   // Сбрасываем порт
   DDRD.4 = 1;
   PORTD.4 = 0;
   delay_ms(100);

   // check checksum
   if((bits[0] + bits[1] + bits[2] + bits[3]) == bits[4]) {
    if(select == 0) { // Температура
	    return(bits[2]);
    } else if(select == 1) { // Влажность
	    return(bits[0]);
    }
   }

   return DHT11_ERROR;
}




int temperature() {
   char ret = dht11_getdata(0);
   if(ret == DHT11_ERROR) {
    return -1;
   } else {
    return ret;
   }
}


int humidity() {
   char ret = dht11_getdata(1);
   if(ret == DHT11_ERROR) {
    return -1;
   } else {
    return ret;
   }
}


void main(void) {

   // USART initialization
   UCSRA = (0 << RXC) | (0 << TXC) | (0 << UDRE) | (0 << FE) | (0 << DOR) | (0 << UPE) | (0 << U2X) | (0 << MPCM);
   UCSRB = (0 << RXCIE) | (0 << TXCIE) | (0 << UDRIE) | (0 << RXEN) | (1 << TXEN) | (0 << UCSZ2) | (0 << RXB8) | (0 << TXB8);
   UCSRC = (1 << URSEL) | (0 << UMSEL) | (0 << UPM1) | (0 << UPM0) | (0 << USBS) | (1 << UCSZ1) | (1 << UCSZ0) | (0 << UCPOL);
   UBRRH = 0x00;
   UBRRL = 0x67;


   while(1) {
    printf("temperature() = %i \r\n", temperature());
    printf("humidity() = %i \r\n", humidity());
    delay_ms(5000);
   }
}

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Error test.c (14); bits объявлен как однобайтовая переменная, а обратиться пытаетесь как к массиву.

Остальное без нумерации определить ошибку трудно, особенно учитывая визуально рандомное количеств опробелов между строками и привычку форума съедать всякое форматирование. Кроме того, кажется, ошибки даны не на этот исходник. Ну и кириллица в путях и именах файлов не приветствуется.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...