Hello! It's been a while I've didn't posted anything on Instructables, but now I made a simple project that I've seen on internet in various forms. I managed to build a code using other codes I've found on internet and I got to say it's working good.
For this project you need: - Arduino Uno - 16x2 LCD with i2c module - DS1307 RTC - DHT11 temperature and humidity sensor - a bread board - some wires for connections. As you can see the RTC is homemade because I had a DS1307 chip and a battery extracted from an old german electronic cash registering device. So the connections are very simple: The RTC and the i2c LCD are connected to A4 pin (SDA) and A5(SCL) and DHT11 sensor is connected to D2 pin. DHT11 has 4 pins, but only 3 are actually used. First pin is Vcc, the second is for data and the forth pin is for ground. As I said, connect data pin of the sensor to D2 on Arduino. Now, the hardest part: the code. I've tried some sketches I've found on internet, but there were alot of errors caused by incompatible libraries and so on. I managed to build a code made from parts of other codes and it's working like a charm now. There is a single problem though. You can find in the sketch a bit of code for displaying first 3 letters of the week day, but for some reason it doesn't work. Instead of those letters it shows some unknown characters and it's pretty ugly. I suspect that is a problem caused by i2c communication because in standard connection (4bits) it works without problems. My inspiration came from this page http://arduino-info.wikispaces.com/PROJECT-Temp-Humidity-Display, and this page http://www.ucontrolit.tv/184/ This is the library used for this project http://arduino-info.wikispaces.com/file/view/DHT11.zip/390039522/DHT11.zip and don't forget to use the new LCD library that can be found right here https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads (when you add this new library in the folder, delete the old LiquidCrystal folder!) And this is a PREVIEW of the code: ________________________________________________________________________________________________ /* YourDuino.com Example Software Sketch DHT11 Humidity and Temperature Sensor test Displayed on I2C LCD Display Credits: Rob Tillaart http://arduino-info.wikispaces.com/PROJECT-Temp-Humidity-Display [email protected] Combined with: Mark Johnson's code http://uControlIt.tv December 2012 License: GNU General Public License Modiffied by Timofte Andrei ( http://timofteandreidiy.wordpress.com ) January 2014 */ /*-----( Import needed libraries )-----*/ #include #include #include #include #include //const char* zile[] = // { 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam', 'Dum'}; //days of the week in romanian (not used) const char* luni[] = {'Dec', 'Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Noi' }; //months of the week also in romanian byte termometru[8] = //icon for termometer { B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110 }; byte picatura[8] = //icon for water droplet { B00100, B00100, B01010, B01010, B10001, B10001, B10001, B01110, }; /*-----( Declare objects )-----*/ // Set the pins on the I2C chip used for LCD connections: // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); // Set the LCD I2C address dht11 DHT11; /*-----( Declare Constants, Pin Numbers )-----*/ #define DHT11PIN 2 //dht11 signal pin connected to D2 void setup() /*----( SETUP: RUNS ONCE )----*/ { Wire.begin(); lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight lcd.backlight(); lcd.clear(); lcd.createChar(1,termometru); lcd.createChar(2,picatura); // part code from http://tronixstuff.wordpress.com/ Wire.beginTransmission(0x68); Wire.write(0x07); // move pointer to SQW address Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave Wire.endTransmission(); // end part code from http://tronixstuff.wordpress.com/ setSyncProvider(RTC.get); }/*--(end setup )---*/ void loop() /*----( LOOP: RUNS CONSTANTLY )----*/ { afisare_temperatura(); //displaying temperature data_si_ora(); //displaying date and time } void afisare_temperatura() { int chk = DHT11.read(DHT11PIN); lcd.setCursor(1, 1); lcd.write(1); lcd.setCursor(3, 1); lcd.print((float)DHT11.temperature, 0); lcd.setCursor(5, 1); lcd.print((char)223); //degree sign lcd.print('C'); lcd.setCursor(9, 1); lcd.write(2); lcd.setCursor(11, 1); lcd.print((float)DHT11.humidity, 0); lcd.print('%'); delay(2000); } void data_si_ora() { tmElements_t tm; (RTC.read(tm)); lcd.setCursor(0, 0); afisare2cifre(tm.Hour); lcd.print(':'); afisare2cifre(tm.Minute); lcd.setCursor(7,0); afisare2cifre(tm.Day); lcd.print(' '); lcd.print(tm.Month[luni]); lcd.print(' '); lcd.print(tmYearToCalendar(tm.Year)-2000); // lcd.setCursor(12,1); // this code is used for displaying day of the week // lcd.print(tm.Wday[zile-2]); //it's disabled because for some reason it doesn't work on i2c display } void afisare2cifre(int numar) { //this adds a 0 before single digit numbers if (numar >= 0 && numar < 10) { lcd.write('0'); } lcd.print(numar); } /* ( THE END ) */ ____________________________________________________________________________________________________
2019-04-19.gq/meilleur-cydia-tweaks-ios-7-ecran-de-verrouillage-pour-android 2019-04-19. 2019-04-19 2019-04-19.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |