Отрисовка часов на OLED 64х128
- Войдите на сайт для отправки комментариев
Пнд, 10/08/2015 - 19:41
Здравствуйте Товарищи!
Подскажите пожалуйста, как отрисовать корректно цифры, если hour < 10 ?
Часы
#define DS1307_I2C_ADDRESS 0x68 // Clock byte decToBcd(byte val){ return ( (val/10*16) + (val%10) ); } byte bcdToDec(byte val){ return ( (val/16*10) + (val%16) ); } void setDateDs1307(byte second,byte minute,byte hour) { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.endTransmission(); } void getDateDs1307(byte *second,byte *minute,byte *hour) { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 3); *second = bcdToDec(Wire.read()); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read()); }
Код отрисовки
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); myOLED.drawRoundRect(0, 0, 127, 63); myOLED.setFont(MediumNumbers); myOLED.print (String(hour), 10, 12); myOLED.print ("-", 36, 12); myOLED.print (String(minute), 50, 12); myOLED.print ("-", 76, 12); myOLED.print (String(second), 90, 12); myOLED.update(); myOLED.setFont(MediumNumbers); myOLED.print (String(dayOfMonth), 10, 38); myOLED.print ("-", 36, 38); myOLED.print (String(month), 50, 38); myOLED.print ("-", 76, 38); myOLED.print (String(year), 90, 38); myOLED.update();
Не могу понять как привильно это сделать. Дописываю DEC HEX не проходит :(
По этому примеру не чего не выходит :(
if (HOUR < 10) Serial.print("0"); Serial.print(HOUR); Serial.print(":"); if (MIN < 10) Serial.print("0"); Serial.print(MIN); Serial.print(":"); if (SEK < 10) Serial.print("0"); Serial.println(SEK);
Вот код
Который заменяет в строке "hh:mm:ss" буквы цифрами "17:06:01". есть у него и недостатки - строку нужно каждый раз копировать через strcpy, потому что код работает с указателями.
P.S. код писал для модификации библиотеки RTC чтобы небыло таких проблем с незначащими нулями, чтобы выводить время и дату в произвольном формате в любой строке.
О, господи! По сабжекту я подумал, что Вы аналоговые часы со стрелками рисуете :)
а вот такие часики)
........