ايران ويج

نسخه‌ی کامل: سنسور ds18b20
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام درود بر اساتید محترم
من چند وقتی دارم روی پروژه ای کار مکنم که میخوام میانگین دمای چهار تا سنسور بگیرم وری lcd نمایش بدم
سنسور ds18b20 را انتخاب کردم
وا پروتکل 1wier استفاده کرم
تا 3 تا سنسو مشکلی نداره ولی سنسور چهارم که مخوام بخونم نمیدونم چرا حالش خراب میشه
کسی هست دلیل شو بدونه؟؟؟؟؟؟؟
اینم کد برنامه برای 4 تا سنسور :
کد php:
while (1)
      {
        
t1=ds18b20_temperature(&rom_codes[0][0]);
        
t2=ds18b20_temperature(&rom_codes[1][0]);
        
t3=ds18b20_temperature(&rom_codes[2][0]);
        
t4=ds18b20_temperature(&rom_codes[3][0]);
        
s=t1+t2+t3+t4;
        
m=s/4;  
        
sprintf(lcd_array,"Temp=%2.2fc",m);
        
lcd_clear(); 
        
lcd_gotoxy(0,0);    
        
lcd_puts(lcd_array);

      }

اینم کد برنامه برای 3 تا سنسور :
کد php:
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <1wire.h>
#include <ds18b20.h>
#include <alcd.h>
#define MAX_DS1820 3
unsigned char ds1820_devices;
unsigned char rom_codes[MAX_DS1820][9];
float t1,t2,t3,s,m;
char lcd_array[16];

void main(void)
{

w1_init();
ds1820_devices=w1_search(0xf0,rom_codes);

lcd_init(16);

while (
1)
      {
        
t1=ds18b20_temperature(&rom_codes[0][0]);
        
t2=ds18b20_temperature(&rom_codes[1][0]);
        
t3=ds18b20_temperature(&rom_codes[2][0]);
        
s=t1+t2+t3;
        
m=s/3;  
        
sprintf(lcd_array,"Temp=%2.2fc",m);
        
lcd_clear(); 
        
lcd_gotoxy(0,0);    
        
lcd_puts(lcd_array);

      }

چ اتفاقي ميافته مگه؟
مشکلم یه جورای حل شد مشکل از شبیه سازی است تو عمل هیچ مشکلی نداره
اگه کسی علت شو میدونه بگه تا ما هم بدونیم ؟؟؟؟؟؟؟؟
آره اين اتفاقا زياد ميافته؛هميشه عملي كار كردن ارجعيت داره؛(شايد مشكل از نسخه نرم افزاري يا كرك كردن اون باشه)