[[FrontPage]] objectPage http://www.yama-lab.org/fwb4pi/index.php?i2c-sensors-ex3 or http://www.yama-lab.org/fwb4pi/index.php?i2c-sensors-ex3 device yamaRasPiDp9_1 or yamaRasPiDp9_2 start after no write for 10 min. command: set readInterval=30000 command: set execInterval=0 command: set reportLength=120 command: program sensors program: 'ex("service","clear sendBuffer") program: ' program: ' init i2c program: ex("pi4j", "i2c use 1") program: ' program: ' init hdc1080 program: ex("pi4j", "i2c write2 0x40,0x02,0x10,0x00") ' config program: ' program: 'get temp program: ex("pi4j", "i2c write-b 0x40,0x00") ' temp program: delay(15) program: v1s=ex("pi4j", "i2c read-A-2 0x40") ' get temp program: temp=s2i(v1s)/65536.0*165-40 program: ' program: 'get humidity program: ex("pi4j", "i2c write-b 0x40,0x01") ' get humidity program: delay(15) program: v2s=ex("pi4j", "i2c read-A-2 0x40") 'humid program: humid=s2i(v2s)/65536.0*100 program: ex("service","putSendBuffer device=temp, Date="+ex("service","getCurrentDate.")+", v="+temp) program: ex("service","putSendBuffer device=humid, Date="+ex("service","getCurrentDate.")+",v="+humid) program: ' program: ' init lux sensor program: ex("pi4j", "i2c write1 0x29,0x80,0x03") 'power up the tsl2561 lux sensor program: ex("pi4j", "i2c write1 0x29,0x81,0x00") program: ex("pi4j", "i2c write1 0x29,0x86,0x00") 'scale program: ex("pi4j", "i2c write1 0x29,0x80,0x00") 'power down program: ex("pi4j", "i2c write1 0x29,0x80,0x03") ' power up again program: delay(50) program: ' program: 'get the lux value program: v1=ex("pi4j", "i2c read1 0x29,0x8c") program: v2=ex("pi4j", "i2c read1 0x29,0x8d") program: v=s2i(v2)*256+s2i(v1) program: ex("service","putSendBuffer device=lux, Date="+ex("service","getCurrentDate.")+", v="+v) program: ' program: ' init barometer , MPL3115A2 program: 'ex("pi4j", "i2c write1 0x60,0x26,0xbb") 'set to altmeter with an OSR=128 program: 'ex("pi4j", "i2c write1 0x60,0x13,0x07") 'enable data flags in PT_DATA_CFG program: 'ex("pi4j", "i2c write1 0x60,0x28,0x11") 'set int to acive low open drain program: 'ex("pi4j", "i2c write1 0x60,0x29,0x80") 'enabledrdy interrupt program: 'ex("pi4j", "i2c write1 0x60,0x26,0x39") 'Active mode, OSR=128, barometer mode(0x39) program: 'delay(10) program: ' program: '#define CTRL_REG1 0x26 program: ' program: ' init program: ' - set Mode Stanby program: ' -- clear Register Bit CTRL_REG1 0x01 program: ' --- temp = i2cRead(CTRL_REG1) program: temps=ex("pi4j", "i2c read1 0x60,0x26") program: ' --- temp &= ~(0x01) program: temp=s2i(temps) program: temp=temp & 0xfe program: ' --- i2cwrite(CTRL_REG1, 0x01) program: ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: delay(1) program: ' program: ' - set Mode Altimeter program: ' -- set Register Bit CTR_REG1 0x80 program: ' --- temp = i2cread(CTR_REG1) program: '' temps=ex("pi4j","i2c read1 0x60,0x26") program: ' --- temp |= 0x80 program: '' temp=s2i(temps) program: '' temp=temp | 0x80 program: ' --- i2cwrite(CTR_REG1, temp) program: '' ex("pi4j", "i2c write1 0x60, 0x26, "+temp) program: ' program: delay(1) program: ' program: ' - set Over Sample Rate r(=7) program: ' -- if r >7 then r=7; program: ' -- r<<=3 program: '' r=7*8 '8=2^3 program: ' -- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60,0x26") program: ' -- temp &= 0xc7 program: '' temp=s2i(temps) program: '' temp=temp & 0xc7 program: ' -- temp |= r program: '' temp= temp | r program: ' -- i2cwrite(CTRL_REG1, temp) program: '' ex("pi4j", "i2c write1 0x60, 0x26, "+temp) program: ' program: delay(1) program: ' program: ' - enable Event Flags program: ' -- i2cwrite(PT_DATA_CFG, 0x07) program: '' ex("pi4j", "i2c write1 0x60, 0x13, 0x07") program: ' program: delay(1) program: ' program: ' - set Mode Active program: ' -- setRegisterBit(CTRL_REG1, 0x01) program: ' --- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60, 0x26") program: ' --- temp |= (0x01) program: ''temp=s2i(temps) | 0x01 program: ' --- i2cwrite(CTRL_REG1, 0x01) program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: delay(1) program: ' program: ' set Mode Standby program: ' - set Mode Stanby program: ' -- clear Register Bit CTRL_REG1 0x01 program: ' --- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60,0x26") program: ' --- temp &= ~(0x01) program: '' temp=s2i(temps) program: '' temp=temp & 0xfe program: ' --- i2cwrite(CTRL_REG1, 0x01) program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: ' set ModeBarometer program: ' - clear Register Bit (CTRL_REG1, 0x80) program: ' --- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60,0x26") program: ' --- temp &= ~(0x80) program: '' temp=s2i(temps) program: '' temp=temp & 0x7f program: ' --- i2cwrite(CTRL_REG1, 0x01) program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: ' set Mode Active program: ' -- setRegisterBit(CTRL_REG1, 0x01) program: ' --- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60, 0x26") program: ' --- temp |= (0x01) program: '' temp=s2i(temps) | 0x01 program: ' --- i2cwrite(CTRL_REG1, 0x01) program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: ' readPressure program: ' - toggleOneshot() program: ' -- clearRegisterBit(CTRL_REG1, 0x02) // clear OST bit program: ' --- temp = i2cRead(CTRL_REG1) program: '' temps=ex("pi4j", "i2c read1 0x60,0x26") program: ' --- temp &= ~(0x02) program: '' temp=s2i(temps) program: '' temp=temp & 0xfd program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: ' -- setRegisterBit(CTRL_REG1, 0x02) // set the OST bit program: ' --- temp = i2cRead(CTRL_REG1) program: ''temps=ex("pi4j", "i2c read1 0x60, 0x26") program: ' --- temp |= (0x02) program: '' temp=s2i(temps) | 0x02 program: '' ex("pi4j", "i2c write1 0x60,0x26,"+temp) program: ' program: ' - if (!pressureDataReady()) ... dataReady(0x04) program: ' -- dataReady(0x04) program: '--- int attempts=0 program: ' --- while((i2cRead(STATUS) & mask) == 0){ program: ' ---- attempts++ program: ' ---- if(attempts > MAX_DATA_READY_ATTEMPTS) return 0 program: ' ---- wait_ms(1) program: ' ---- write fail program: '' for i= 0 to 512 program: '' temps=ex("pi4j", "i2c read1 0x60,0x00") program: '' f=s2i(temps)& 0x04 program: '' if f <> 0 then i=512 program: '' delay(1) program: '' next i program: ' _i2c->start() program: ' if( _i2c->write(MPL3115A2_address!=1) write fail program: ' if( _i2c->write(OUT_P_MSB)!=1) write fail program: ' _i2c->read(MPL3115A2_address, (*p), pressure::size) program: ' p->setPressure() program: ' program: 'readPressure program: ''v1=ex("pi4j", "i2c read1 0x60,0x01") program: ''v2=ex("pi4j", "i2c read1 0x60,0x02") program: ''v3=ex("pi4j", "i2c read1 0x60,0x03") program: ''v=s2i(v1)*1.0 program: ''v=v*256.0+s2i(v2)*1.0 program: ''v=v*4.0+(s2i(v3) /64)*1.0 program: ''v=v/100 program: ''ex("service","putSendBuffer device=pressure, Date="+ex("service","getCurrentDate.")+", v="+v) program: ' program: ex("pi4j", "i2c close.") program: ex("service","sendResults.") command: end sensors command: run sensors result: device=temp, Date=2019/2/24/ 21:2:53, v=-40.00251770019531 device=humid, Date=2019/2/24/ 21:2:53,v=-0.00152587890625 device=lux, Date=2019/2/24/ 21:2:53, v=10 currentDevice="yamaRasPiDp1_1",Date=2019/2/24/ 21:2:53 device=temp, Date=2019/2/24/ 21:3:22, v=-40.00251770019531 device=humid, Date=2019/2/24/ 21:3:22,v=-0.00152587890625 device=lux, Date=2019/2/24/ 21:3:22, v=10 currentDevice="yamaRasPiDp1_1",Date=2019/2/24/ 21:3:22