ST7567 плюс набор полуфабрикатов

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Библиотека для скетча из #44

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

спасибо. а то я вчера начал свою писать))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что то не пошла. на что то ругается. переписал на st7565 из 1202 и либы st7565. ох и замороченно написали либу st7565. не сразу понял почему не работает

сначала хотел простым путем: выводить нужные мне символы через вывод картинки, но там белеберда у них с видеобуфером. в нуле по Y нормально рисует. пытаешься поднять и начинаются чудеса. на spi переписывать не стал, ногодрыгом сделал. если нужно будет скину

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сделал люксметр из этого плеера. недуюсь кто то что нибудь в том же корпусе тоже уместит

 

DIVGENY
Offline
Зарегистрирован: 23.08.2016

 

dimax пишет:

Библиотека для скетча из #44

часы на монохромном дисплее 12864 на контроллере  ST7567 (uc1701)

 с использованием библиотеки https://github.com/olikraus/U8glib_Arduino

размер прошивки зависит от выбранных шрифтов, увы в других библиотеках шрифты очень маленькие

пс. сегодня (смотрите дату сообщения) выложена новая версия библиотеки https://github.com/olikraus/U8g2_Arduino

#include "U8glib.h"
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);  // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8

#include "RTClib.h"
RTC_DS1307 RTC;
uint8_t Hour = 0 ;
uint8_t Min = 0 ;
uint8_t Sec_d = 0 ;

const char *Time(uint16_t rtime) { // создаем текстовую строку с часами и минутами
  static char buf[6];
  buf[0] = ( Hour / 10 ) + '0';
  buf[1] = ( Hour % 10 ) + '0';
  
  buf[2] =  ':';
  buf[3] = ( Min / 10 ) + '0';
  buf[4] = ( Min % 10 ) + '0';
  buf[5] = '\0';
  return buf;
}
const char *Sec(uint16_t r_sec) {  // создаем текстовую строку с секундами
  static char buf[3];
   buf[0] =  '.';
  buf[1] = ( Sec_d / 10 ) + '0';
  buf[2] = ( Sec_d % 10 ) + '0';
  buf[3] = '\0';
  return buf;
  }
  
void drawTime( uint16_t rtime ) {              //рисуем часы и минуты

            u8g.setFont(u8g_font_gdr25n);  //огроиный шрифт          
       u8g.drawStr( 8, 40, Time(rtime) );
  
}
 void drawSec( uint16_t r_sec ) {            // рисуем секунды

          u8g.setFont(u8g_font_gdr17n); // средний шрифт
  u8g.drawStr( 92, 40, Sec(r_sec) );
 }
 
void drawHour_Min(void) {

  drawTime(0);
     u8g.drawFrame(0,0,u8g.getWidth(), u8g.getHeight()); // ЧЕРТИМ РАМКУ ПО КОНТУРУ
}

  void drawSec(void){
    drawSec(0);
    u8g.drawFrame(2,2,u8g.getWidth(), u8g.getHeight()-4);// еще рамка внутри рамки
    u8g.drawVLine(125, 2, 60); // 
  }

void setup(void) {
    
   u8g.setRot180();                  // Разворот экрана
   u8g.setContrast(0);               //  0 - прозрачный фон
   RTC.begin();
}

void loop(void) {
   DateTime now = RTC.now();
   Hour = now.hour();
   Min = now.minute();
   Sec_d = now.second();

  u8g.firstPage();  
  do {
    drawHour_Min();    // для часов и минут
    drawSec();      // секунды, если закомментировать, сек не отрисуются
  } while( u8g.nextPage() );

  delay(100);
}