PDA

View Full Version : مشکل در راه اندازی srf08



aflatoon
یک شنبه 05 بهمن 1393, 17:41 عصر
سلام خدمت تمامی دوستان
من از 6 عدد srf08 استفاده میکنم و از تک تکشون به صورت مجزا عدد میگیرم
اگر با سیم کوتاه سنسورامو وصل کنم باز هم به صورت همزمان از همشون عدد میگیرم
اما وقتی یه سیم با طول 3 متر به sda scl وصل میکنم تمام سنسورها -256 میدن
مقاومت 1K pullup هم یه 5V دارم
فرکانسم هم 100KH است

قبلا این کارو با arduino 2560 انجام دادن و توی این متراژا مشکلی نداشتم

چجوری میتونم این مشکل رو حل کنم

لطفا دوستانی که کار کردن کمک کنن ، دیگه عقلم به جایی قد نمیده

انم برنامه


while (1)
{
// Place your code here
write_i2c(0xF0,0x00,0x51);
delay_ms(70);
x=read_i2c(0xF0,0x02,0);
y=read_i2c(0xF0,0x03,0);
g=read_i2c(0xF0,0x01,0);
s=(x*255)+y;
itoa(s,namayesh);
lcd_gotoxy(0,0);
lcd_puts(namayesh);

delay_ms(500);

write_i2c(0xEA,0x00,0x51);
delay_ms(70);
x_1=read_i2c(0xEA,0x02,0);
y_1=read_i2c(0xEA,0x03,0);
g_1=read_i2c(0xEA,0x01,0);
s_1=(x_1*255)+y_1;
itoa(s_1,namayesh_1);
lcd_gotoxy(0,1);
lcd_puts(namayesh_1);

delay_ms(500);
lcd_clear(); }
}
void write_i2c(unsigned char busaddres , unsigned char reg , unsigned char data)
{
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_write(data);
i2c_stop();
}
//----------------------------------------------------------------------------------------
unsigned char read_i2c(unsigned char busaddres , unsigned char reg , unsigned char ack )
{
unsigned char b;
b = busaddres + 1;
i2c_start();
i2c_write(busaddres);
i2c_write(reg);
i2c_start();
i2c_write(b);
b=i2c_read(ack);
i2c_stop();
return b;
}

aflatoon
دوشنبه 06 بهمن 1393, 13:58 عصر
حل شد دوستان
2 عدد مقاومت pull up رو با قبلی ها موازی کردم و انتهای کابلم قرار دادم یعنی 2 عدد مقاومت 1K ابتدای کابل از 5ولت به scl و sda رفته و 2 عدد هم در انتهای کابل
تا 8 متر با 6 تا سنسور امتحان کردم بدون هیچ مشکلی جواب میده:لبخند: