پاسخ : twi ?!?
سلام
ممنون از لطفتون
شرمنده کردین :">
با عرض پوزش یه سوال دیگه داشتم؟!! :redface:
من یه ماژول دارم که پروتکل I2C خروجی میده!
اسم ماژول هست BH1750FVI
شاید بگم حدود 12 تا برنامه تا حالا براش نوشتم و جواب نگرفتم!دیگه اینجوری شدم @-)
میخواد آدرسش (SLAVE) براش ارسال بشه و بعدش دوتا بایت ازش خونده بشه و بعد این دوتا بایت به متغیر float تبدیل بشه که بشه محاسبات روش انجام داد و بعدم روی LCD چاپش کرد.
من در نهایت تونستم یه برنامه براش گیر بیارم که به زبان آردوینو بود.
به خیال خودم اونو به کدویژن تبدیل کردم. :rolleyes:
الان سه هفته ای هست که بهش ور میرم. :cry:
میشه یه نگاه بندازین ببینین مشکل از کجاست؟ ممنون میشم. :redface:
اینم برنامه آردوینو
لطفا اگر مسیری که میرم اشتباهه، بهم بگین و مسیر درست را هم بهم راهنمایی کنید. با سپاس فراوان @};-
سلام
ممنون از لطفتون
شرمنده کردین :">
با عرض پوزش یه سوال دیگه داشتم؟!! :redface:
من یه ماژول دارم که پروتکل I2C خروجی میده!
اسم ماژول هست BH1750FVI
شاید بگم حدود 12 تا برنامه تا حالا براش نوشتم و جواب نگرفتم!دیگه اینجوری شدم @-)
میخواد آدرسش (SLAVE) براش ارسال بشه و بعدش دوتا بایت ازش خونده بشه و بعد این دوتا بایت به متغیر float تبدیل بشه که بشه محاسبات روش انجام داد و بعدم روی LCD چاپش کرد.
من در نهایت تونستم یه برنامه براش گیر بیارم که به زبان آردوینو بود.
به خیال خودم اونو به کدویژن تبدیل کردم. :rolleyes:
الان سه هفته ای هست که بهش ور میرم. :cry:
میشه یه نگاه بندازین ببینین مشکل از کجاست؟ ممنون میشم. :redface:
کد:
//Chip type : ATmega32 //Program type : Application //AVR Core Clock frequency: 8.000000 MHz #include <mega32.h> #include <i2c.h> #include <alcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> void BH1750_Init(int address); int BH1750_read(int address); int BH1750_address=0x23; unsigned char BUFF[2], buf[16]; int DEC; void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00; TIMSK=0x00; UCSRB=0x00; ACSR=0x80; SFIOR=0x00; ADCSRA=0x00; SPCR=0x00; TWCR=0x00; // I2C Port: PORTA // I2C SDA bit: 1 // I2C SCL bit: 0 // Bit Rate: 100 kHz // Note: I2C settings are specified in the // Project|Configure|C Compiler|Libraries|I2C menu. i2c_init(); // RS - PORTD Bit 0 // RD - PORTD Bit 1 // EN - PORTD Bit 2 // D4 - PORTD Bit 3 // D5 - PORTD Bit 4 // D6 - PORTD Bit 5 // D7 - PORTD Bit 6 // Characters/line: 16 lcd_init(16); i2c_start(); BH1750_Init(BH1750_address); delay_ms(200); lcd_clear(); lcd_putsf("START"); while (1) { float valf=0; if(BH1750_read(BH1750_address)==2){ valf=atof(BUFF); valf=valf/1.2; if(valf<0){ lcd_clear(); lcd_putsf(">65535 lx"); } else{ DEC=valf; lcd_clear(); sprintf(buf,"%d lx",DEC); lcd_puts(buf); } delay_ms(1000); } } } //***************************************** int BH1750_read(int address){ int i=0; i2c_start(); i2c_write(address); i2c_start(); i2c_write(address|1); BUFF[i]=i2c_read(1); i++; BUFF[i]=i2c_read(0); i++; i2c_stop(); return i;} //****************************************** void BH1750_Init(int address){ i2c_start(); i2c_write(address); i2c_write(0x10); i2c_stop(); }
کد:
#include <Wire.h> int BH1750_address = 0x23; // i2c Addresse byte buff[2]; void setup(){ Wire.begin(); BH1750_Init(BH1750_address); delay(200); Serial.begin(9600); Serial.println("Start"); } void loop(){ float valf=0; if(BH1750_Read(BH1750_address)==2){ valf=((buff[0]<<8)|buff[1])/1.2; if(valf<0)Serial.print("> 65535"); else Serial.print((int)valf,DEC); Serial.println(" lx"); } delay(1000); } void BH1750_Init(int address){ Wire.beginTransmission(address); Wire.write(0x10); // 1 [lux] resolution Wire.endTransmission(); } byte BH1750_Read(int address){ byte i=0; Wire.beginTransmission(address); Wire.requestFrom(address, 2); while(Wire.available()){ buff[i] = Wire.read(); i++; } Wire.endTransmission(); return i; }
دیدگاه