Schritt 4: Code & Bibliotheken
In diesem Schritt zeige ich Ihnen die wichtigsten code kopieren oder als vollständige .ino-Datei, die Sie mit Arduino IDE öffnen können herunterladen werden kann. Die Datei heißt ThermoClock_v2.6.16 und es im Beta-Test ist, so will ich Ihre Anregungen auf, wie und was ich ändern sollte, um es besser zu machen.
Nun nehmen Sie einen Blick auf sie.
<br><p>/*************LIBRARIES**********************/<br>#include <U8glib.h> // OLED#include <Wire.h> // I2C #include <Time.h> // Time Manipulation #include <DS1307RTC.h> // DS1307 RTC /*************VARIABLES**********************/ char timebuf[10]; // Time char datebuf[10]; // Date int year2digit; // 2 digit year int year4digit; // 4 digit year int tmp102Address = 0x48;</p><p>const int SwitchTime = 10000; //switching time in millis /********************************************/ U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8); // CLK=13, DIN=11, CS=10, DC=9, Reset=8 // // // /****************DRAW FUNCTION***************/ void draw(void) {</p><p>u8g.setFont(u8g_font_fub17r); // select font u8g.setPrintPos(30, 28); // set position u8g.print(timebuf); // display time u8g.drawHLine(0,33,128); // draw line u8g.setPrintPos(12, 55); // set position u8g.print(datebuf); // display date }</p><p>void draw1(void) { float celsius = getTemperature(); float fahrenheit = (1.8 * celsius) + 32; u8g.setFont(u8g_font_fub17r); u8g.setPrintPos(15, 28); u8g.print(celsius); u8g.print(" C"); u8g.setPrintPos(12, 55); u8g.print(fahrenheit); u8g.println(" F"); }</p><p>float getTemperature(){ Wire.requestFrom(tmp102Address,2); </p><p> byte MSB = Wire.read(); byte LSB = Wire.read();</p><p> //it's a 12bit int, using two's compliment for negative int TemperatureSum = ((MSB << 8) | LSB) >> 4; </p><p> float celsius = TemperatureSum*0.0625; if (celsius > 180) { celsius = (celsius - 256); // For negative temperatures } else { celsius; } return celsius; }</p><p>void setup(void) { } void loop(void) {</p><p>tmElements_t tm; if (RTC.read(tm)) { year2digit = tm.Year - 30; // 2 digit year variable //year4digit = tm.Year + 1970; // 4 digit year variable</p><p>sprintf(timebuf, "%02d:%02d",tm.Hour, tm.Minute, tm.Second); // format time sprintf(datebuf, "%02d/%02d/%02d",tm.Day, tm.Month, year2digit); // format date /********************************************/</p><p>u8g.firstPage(); // Put information on OLED do { draw(); } while( u8g.nextPage() ); delay(SwitchTime);</p><p>u8g.firstPage(); // Put information on OLED do { draw1(); } while( u8g.nextPage() ); } delay(SwitchTime); // Delay }</p>
Wenn Sie nicht wie die aktuelle Schriftart können Sie es ändern, indem Sie den Code bearbeiten. Alle unterstützte Schriftarten finden Sie hier.
Bibliotheken, die Sie benötigen:
DS1307RTC, u8glib und Zeit, die Bibliotheken herunterladen und dann entpacken Sie sie in /Program Files(x86)/Arduino/Bibliotheken (Standard).