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/23/ 21:38:10, v=21.9757080078125
device=humid, Date=2019/2/23/ 21:38:10,v=43.2373046875
device=lux, Date=2019/2/23/ 21:38:10, v=1
currentDevice="yamaRasPiDp1_1",Date=2019/2/23/ 21:38:10

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS