\ 2006-06-28 EW adv_03.fs --- Thermometer \ \ i2c Bus am R8C \ P1.0 -- SCL \ P1.1 -- SDA \ am Bus: \ PCF8574 (8bit IO), 7-bit Adresse: $20 \ LM75 (Thermometer, 9-bit signed, 7-bit Adresse: $4f rom include SMBus.fs $9e Constant i2c_addr_lm75 : get.T ( -- xh xl ) $00 \ ControlByte 1 i2c_addr_lm75 NB>i2c \ verschicken 2 i2c_addr_lm75 NBR \ store copy for sign abs s>d \ remove sign, make double \ 1 digit, "." 2digits sign_always \ Numbers >= 1000 are truncated in the high digits!!! <# # 46 hold # # R> sign! #> \ == "%+5.1f" ; \ write string to lcd position col (0..15) row (0..1) \ with next lcdtype : lcdpos ( row col -- ) swap $40 * + $80 + lcdctrl! &1 ms ; : thermometer lcdpage BEGIN 0 5 lcdpos get.T decode.T format.T lcdtype 250 ms key? UNTIL ; ram