Senzor DHT11 v Bascom

Moderátori: psichac, Moderátori

jozefstano
Okoloidúci
Okoloidúci
Príspevky: 1
Dátum registrácie: 19 Júl 2020, 10:18

Senzor DHT11 v Bascom

Príspevok od používateľa jozefstano » 06 Aug 2020, 07:14

Zdravím všetkých borcov na FÓRE Bascom.
Senzor DHT11-teplota a vlhkosť / čínska náhrada vlhkostného senzoru SHT-11 / má podľa DATAshetu komunikovať (interface)
po 1WIRE.
TESTOVAL som v Bascomu , TESTOVAL som v C_čku na ATmega8 ...... NIKDE to nechodí .
Rozchodil niekdo z vás tento senzor ???
Len na doplnenie uvádzam , že DS18B20 - senzor teploty v Bascomu na ATmega8 --výborný , presnosť 0,5 st C.
Ďakujem vopred !
0

Používateľov profilový obrázok
otep69
Stály člen
Stály člen
Príspevky: 208
Dátum registrácie: 31 Okt 2008, 00:00
Bydlisko: Jarok
Vek: 35
Kontaktovať používateľa:

Re: Senzor DHT11 v Bascom

Príspevok od používateľa otep69 » 06 Aug 2020, 08:54

Nazdar,
Tak sa mi marí, že DHT11 a aj DHT22 sice komunikuju "one wire", ale využívajú svoj vlastný protokol, takže original one wire komunikácia ti moc nepomôže.
Možno doma nájdem zdroják čo som mal pre tento snímač napísaný.
Alebo si skús prebehnúť toto:

Kód: Vybrať všetko

https://github.com/fengcda/DHT_Sensor_AVR_Library
0
Teší ma Peter.
F*ck me I am Famous ...
Čo nejde silou, pôjde silou ešte väčšou.

Používateľov profilový obrázok
Mek
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1271
Dátum registrácie: 15 Okt 2015, 20:49
Bydlisko: Žilina
Vek: 37
Kontaktovať používateľa:

Re: Senzor DHT11 v Bascom

Príspevok od používateľa Mek » 06 Aug 2020, 17:37

Nie je to sice Bascom, ale C, ale mozno sa zide...
Robil som malu meteostanicu s DHT22 a pouzil som na to kniznicu dhtxx (co implikuje ze aj DHT11 by mala byt podporovana). Prikladam k prispevku. Pouziva sa jednoducho:

Kód: Vybrať všetko

#define TEMPERATURE_UNKNOWN -1000
#define HUMIDITY_UNKNOWN -1000

volatile int temperature = TEMPERATURE_UNKNOWN; // this is temperature * 10 to not deal with floats, decimal point is fixed (same for humidity)
volatile int humidity = HUMIDITY_UNKNOWN;

int main(void)
{
	for (;;)
	{
		dhtxxconvert(DHTXX_DHT22, &PORTD, &DDRD, &PIND, (1 << 2)); // PD2
		_delay_ms(1000);
		int temp = 0; // returned temp and hum are *10 so they are ints
		int hum = 0;
		cli(); // important - interrupts must be disabled while reading
		readResult = dhtxxread(DHTXX_DHT22, &PORTD, &DDRD, &PIND, (1 << 2), &temp, &hum); // PD2
		sei();
		
		if (readResult == DHTXX_ERROR_OK)
		{
			temperature = temp;
			humidity = hum;
		} else {
			temperature = TEMPERATURE_UNKNOWN;
			humidity = HUMIDITY_UNKNOWN;
		}
		_delay_ms(5000);
	}
}
... a potom v obsluhe prerusenia na spracovanie staci spracovat premenne temperature a humidity.
temperature = 235 znamena 23,5 C, humidity 678 znamena 67,8%.
Snad ti to pomoze.
Prílohy
dhtxx.zip
(1.85 KiB) 84 stiahnutí
0
... byvaly spravca Hospudky u amplionu, Martinekk-ov brat. Nemam vystudovane elektro, je to len moje hobby. Povolanim som SW inzinier.
Moja databaza suciastok: ELPARTS
Moj velky elektro projekt: MEGA TRANSISTOR CLOCK

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok