-
Bilimsel konular ile ilgili tüm sorularınızı lütfen soru-cevap forumuna üye olarak sorunuz. Farklı kanallardan sorulan sorulara cevap verilmeyecektir. Özellikle soru-cevap forumundan soru sorulmasını istememin sebebi, aynı sorunu yaşayan kişilerin tek bir noktada çözüm arayarak bulabilmesini sağlamak yani bir nevi kaynak oluşturmaktır.
-
Yapılan satın almalar ile ilgili olarak yaşadığınız sorunları size gönderilen e-postada ki telegram bağlantısından iletebilirsiniz. Bunun dışında başka sosyal medya gibi mecralarda sorular sormamanızı rica ederim.
DHT11 kullanarak pic18f45k50 ile 2x16 lcd ekrana verileri yazma
Şu kişiden alıntılanmıştır: ERCAN KOÇLAR tarhinde 5 Mayıs 2024, 18:46Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 18:15denedim yine olmadı malesef
O zaman proteusa çok güvenmemek lazım çünkü benim kullandığım PIC ile yazılımın çalışmama ihtimali yok yada bir ayarı gözden kaçırıyorsunuz.
Denemeleri fiziki devre üzerinden yaparsanız bence çok daha sağlıklı olur.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 18:15denedim yine olmadı malesef
O zaman proteusa çok güvenmemek lazım çünkü benim kullandığım PIC ile yazılımın çalışmama ihtimali yok yada bir ayarı gözden kaçırıyorsunuz.
Denemeleri fiziki devre üzerinden yaparsanız bence çok daha sağlıklı olur.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 19:06elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu
elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu
Şu kişiden alıntılanmıştır: ERCAN KOÇLAR tarhinde 5 Mayıs 2024, 19:44Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 19:06elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu
En başta yazdığım komparatör kapatma kodlarını da ekleyerek deneyebilir misiniz?
Sorun bence portun dijitale geçmemesi analog olarak kalması ama bu PIC i hiç kullanmadım o yüzden direkt olarak şudur diyemiyorum ancak denemeler yaparak bir sonuca varabiliriz.
Fiziki devrede ki bağlantıları da kontrol edebilirsiniz veya başka sensör var mı elinizde her ihtimali değerlendirmek gerekiyor bu gibi durumlarda.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 19:06elimde pic18f45k50 var ve fiziki olarak devreyi kurdum ama yine de çalışmadı simülasyondaki gibi oldu
En başta yazdığım komparatör kapatma kodlarını da ekleyerek deneyebilir misiniz?
Sorun bence portun dijitale geçmemesi analog olarak kalması ama bu PIC i hiç kullanmadım o yüzden direkt olarak şudur diyemiyorum ancak denemeler yaparak bir sonuca varabiliriz.
Fiziki devrede ki bağlantıları da kontrol edebilirsiniz veya başka sensör var mı elinizde her ihtimali değerlendirmek gerekiyor bu gibi durumlarda.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);}
}
Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;
Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);
wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);
}
}
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:25Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);}
}
devre görüntüsü bu
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);}
}
devre görüntüsü bu
Yüklenmiş Dosyalar:- Dosyalara ulaşmak için giriş yapmanız gerekmektedir.
Şu kişiden alıntılanmıştır: ERCAN KOÇLAR tarhinde 5 Mayıs 2024, 20:57Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:25Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);}
}
devre görüntüsü bu
Merhaba
Port kısımlarını LAT değilde normal port tanımlaması şekline çevirebilir misin?
Yani PORT C7 ise RC7 gibi.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:25Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 20:24Kodu aşağıdaki gibi b portunun değişik pinlerinde denedim fiziki devrede ama yine veriler gelmiyor malesef. En son Rb0'a bağladım o pin aynı zamanda SDA pini olduğu için. do-while döngüsünü açıklama satırı yaptım acaba sensörle hiç haberleşilebiliyor mu diye ve aşağıdaki gibi 0 değeri yazdı iki değer içinde.Elimde iki tane dht11 vardı ikisini de denedim belki bunlarda sorun vardır diye tekrardan aldım üçüncü sensörü denedim yine aynı malesef.
#include "DHT11.c"
//LCD bağlantıları
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATD2_bit;
sbit LCD_D5 at LATD3_bit;
sbit LCD_D6 at LATD4_bit;
sbit LCD_D7 at LATD5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
//DHT11 bağlantısı
sbit DHT11_DATA at LATB0_bit;
sbit DHT11_DATA_Direction at TRISB0_bit;
void main()
{
unsigned char veri[5];
unsigned char deger;
char txt[15];
ANSELA=0;
ANSELB=0;
ANSELC=0;
ANSELD=0;
ANSELE=0;
CM1CON0=0;
CM2CON0=0;Lcd_Init();
/*lcd_out(1,1,"NEM=%");
lcd_out(2,1,"SICAKLIK= 'C"); */
while(1)
{
/*do{
deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);}
while(deger!=1);*/deger=DHT11_ISI_NEM_VERI_OKUMA(veri);
delay_ms(6500);wordtostr(veri[0],txt);
lcd_out(1,1,"NEM=%");
lcd_out(1,7,txt);
wordtostr(veri[2],txt);
lcd_out(2,1,"SICAKLIK= 'C");
lcd_out(2,10,txt);}
}
devre görüntüsü bu
Merhaba
Port kısımlarını LAT değilde normal port tanımlaması şekline çevirebilir misin?
Yani PORT C7 ise RC7 gibi.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:10denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.
denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.
Şu kişiden alıntılanmıştır: ERCAN KOÇLAR tarhinde 5 Mayıs 2024, 21:14Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:10denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.
Sensörden cevap gelmemesi ilginç. Zaten normal de hiçbir şey gözükmemesi do-while da takıldığını gösteriyor. Bir sebeple iletişim sağlıklı sağlanamıyor sensör ile.
Satın aldığınız DHT11.c dosyasının en altında //verilerin kontrol edilmesi bölümü var orada ki koşulu iptal edip dener misiniz. Normal main de de do while yi tekrar aktif edin.
DHT11.c nin altına da return=1; yazmanız lazım aksi halde yine sonsuz döngüye girecektir. Bu şekilde sensörden gelen bir veri varsa hepsi ekranda yazdırılacaktır.
Bunlarda olmazsa delay_ms(15000); gibi yüksek bir değer yaparak dener misiniz. Ben projede 40 mhz göre ayarlamıştım hız ile ilgili sorun olabilir.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:10denedim zaten sensörü rb0 şeklinde tanımlamıştım,lcd bağlantıları lat şeklindeydi onları da normal rd şeklinde düzenledim yine lcdde aynı şeyler görünüyor.
Sensörden cevap gelmemesi ilginç. Zaten normal de hiçbir şey gözükmemesi do-while da takıldığını gösteriyor. Bir sebeple iletişim sağlıklı sağlanamıyor sensör ile.
Satın aldığınız DHT11.c dosyasının en altında //verilerin kontrol edilmesi bölümü var orada ki koşulu iptal edip dener misiniz. Normal main de de do while yi tekrar aktif edin.
DHT11.c nin altına da return=1; yazmanız lazım aksi halde yine sonsuz döngüye girecektir. Bu şekilde sensörden gelen bir veri varsa hepsi ekranda yazdırılacaktır.
Bunlarda olmazsa delay_ms(15000); gibi yüksek bir değer yaparak dener misiniz. Ben projede 40 mhz göre ayarlamıştım hız ile ilgili sorun olabilir.
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:36dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?
dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?
Şu kişiden alıntılanmıştır: ERCAN KOÇLAR tarhinde 5 Mayıs 2024, 21:44Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:36dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?
Öncelikle başka sorunu yaşayan arkadaşlar olabileceği için tam olarak neyi değiştirince sorun düzeldi size zahmet biraz açıklayabilir misiniz?
Maalesef bu sensör ondalıklı ölçüm yapmıyor yani ne yapsanız da böyle birş ey DHT11 ile mümkün değil eğer daha detaylı veri gerekiyorsa emin olmamak ile beraber sanırım DHT22 vardı o ölçüm yapabiliyordu. Bu sensörün ölçüm yeteneği bunun ile sınırlıdır.
İyi Çalışmalar
Şu kişiden alıntılanmıştır: Ali Afacan tarhinde 5 Mayıs 2024, 21:36dediklerinizi yaptım ve ekranda değerler yazmaya başladı değerlerinde aşağı yukarı doğru olduğunu düşünüyorum çok teşekkürler,ama tekrardan bi şey soracaktım virgülden sonraki kısımları da yazdırabilir miyim acaba onu nasıl yapabilirim?
Öncelikle başka sorunu yaşayan arkadaşlar olabileceği için tam olarak neyi değiştirince sorun düzeldi size zahmet biraz açıklayabilir misiniz?
Maalesef bu sensör ondalıklı ölçüm yapmıyor yani ne yapsanız da böyle birş ey DHT11 ile mümkün değil eğer daha detaylı veri gerekiyorsa emin olmamak ile beraber sanırım DHT22 vardı o ölçüm yapabiliyordu. Bu sensörün ölçüm yeteneği bunun ile sınırlıdır.
İyi Çalışmalar