Arduino PCF8575 8xLED LM35 Thermometer
My code:
#include <Wire.h>// Set I2C addressint address = 0x20;int samples = 2;int collectDelay = 1000;int ledPin = 13;int tempPin = 0;float tempC = 0;void setup() {pinMode(ledPin, OUTPUT);Wire.begin();pf575_write(word(B11111111,B11111111));delay(200);pf575_write(word(B00000000,B11111111));delay(200);pf575_write(word(B11111111,B11111111));delay(200);pf575_write(word(B00000000,B11111111));delay(200);pf575_write(word(B11111111,B11111111));delay(1000);}void loop() {tempC = 0;for(int i = 0; i <= (samples - 1); i++) {tempC = tempC + ((5.0 * analogRead(tempPin) * 100.0) / 1024.0);digitalWrite(ledPin, HIGH);delay((collectDelay / 2));digitalWrite(ledPin, LOW);delay((collectDelay / 2));}tempC = tempC / (float)samples;if(tempC > 21) {pf575_write(word(B11111110,B11111111));}if(tempC > 23) {pf575_write(word(B11111100,B11111111));}if(tempC > 25) {pf575_write(word(B11111000,B11111111));}if(tempC > 27) {pf575_write(word(B11110000,B11111111));}if(tempC > 29) {pf575_write(word(B11100000,B11111111));}if(tempC > 31) {pf575_write(word(B11000000,B11111111));}if(tempC > 33) {pf575_write(word(B10000000,B11111111));}if(tempC > 35) {pf575_write(word(B00000000,B11111111));}}void pf575_write(uint16_t data) {Wire.beginTransmission(address);Wire.write(highByte(data));Wire.write(lowByte(data));Wire.endTransmission();}
Permalink: https://hanez.org/2015/09/24/arduino-pcf8575-i2c-8xled-lm35/

