[[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


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS