首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同的字体大小,相同的液晶屏幕。带有arduino uno时钟的诺基亚5110液晶显示器

不同的字体大小,相同的液晶屏幕。带有arduino uno时钟的诺基亚5110液晶显示器
EN

Stack Overflow用户
提问于 2021-05-09 12:17:11
回答 1查看 638关注 0票数 1

这是我的诺基亚5110 lcd arduino时钟项目。我试图使字体更小,setTextSize(1),只有秒,这是显示的第三行。我可以改变字体大小的一切,但不是特别的秒。任何事情都会有很大的帮助,因为我对阿迪诺非常陌生。耽误您时间,实在对不起!

代码语言:javascript
复制
//Programa : Teste display Nokia 5110 usando biblioteca Adafruit
//Autor : VINICIUS LOPES

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// pin 3 - Serial clock out (SCLK)
// pin 4 - Serial date out (DIN)
// pin 5 - date/Command select (D/C)
// pin 6 - LCD chip select (CS/CE)
// pin 7 - LCD reset (RST)

Adafruit_PCD8544 display = Adafruit_PCD8544(3,4,5,6,7);

int second,minute, hour, day, mounth,year; 
unsigned long UtlTime; 

void setup() 
{
    pinMode(2,OUTPUT);
    UtlTime=0;    

    minute=30;   
    hour=6;   
    day=9;   
    mounth=5;   
    year=21;   
    Serial.begin(9600);   

    display.begin();
    display.setContrast(80); // Adjust the display contrast
    display.clearDisplay();   //Apaga o buffer e o display
    display.setTextSize(2);  //Seta o tamanho do texto
    display.setTextColor(BLACK); //Seta a cor do texto      
    display.print("Date \n & \nTime ");   
    display.setCursor(0,10);   
    display.display();
    delay (5000); 


    //Configura o hour   
    display.clearDisplay();   
    display.setCursor(0,0);   
    display.print("hour:");
    display.display();
    Serial.print("\nin between hour:");  
    while(hour==0)
    {     
        if (Serial.available() > 0)
        {       
            hour= Serial.parseInt();     
        }   
    }   
    display.print(hour);   
    display.display();
    delay(1000); 

    //Configura a minute   
    display.clearDisplay();   
    display.setCursor(0,0);   
    display.print("minute:");   
    display.display();
    Serial.print("\nin between minute:"); 
    while(hour==0)
    {     
        if (Serial.available() > 0)
        {       
            minute= Serial.parseInt();     
        }   
    }   
    display.print(minute);   
    display.display();
    delay(1000);    

    //Configura o month   
    display.clearDisplay();   
    display.setCursor(0,0);   
    display.print("month:");
    display.display();   
    Serial.print("\nin between month:");   
    while(mounth==0)
    {     
        if (Serial.available() > 0)
        {       
            day= Serial.parseInt();     
        }   
    }   
    display.print(mounth);   
    display.display();
    delay(1000);    

    //Configura o mês   
    display.clearDisplay();   
    display.setCursor(0,0);   
    display.print("day:"); 
    display.display();  
    Serial.print("\nin between day:");  
    while(day==0)
    {     
        if (Serial.available() > 0)
        {       
            day= Serial.parseInt();     
        }   
    }   
    display.print(day);  
    display.display();
    delay(1000);    

    //Configura o year   
    display.clearDisplay();   
    display.setCursor(0,0);   
    display.print("year:");   
    display.display();
    Serial.print("\nin between year:");   
    while(year==0)
    {     
        if (Serial.available() > 0)
        {       
            year= Serial.parseInt();     
        }   
    }   
    display.print(year);   

    display.display();   
    delay(1000);
    display.clearDisplay(); 

} 

void loop() {   

    if(millis()-UtlTime<0)
    {     
        UtlTime=millis();   
    }   
    else
    {  
        second=int((millis()-UtlTime)/1000);   
    }   
    if(second>59)   
    {     
        second=0;     
        minute++;     
        UtlTime=millis();     
        if(minute>59)     
        {       
            hour++;       
            minute=0;       
            if(hour>23)       
            {         
                day++;         
                hour=0;         
                if(mounth==1||mounth==3||mounth==5||mounth==7||mounth==8||mounth==10||mounth==12)         
                {           
                    if(day>31)           
                    {             
                        day=1;             
                        mounth++;             
                        if(mounth>12)             
                        {               
                            year++;               
                            mounth=1;             
                        }           
                    }         
                }         
                else if(mounth==2) 
                {           
                    if(year%400==0)           
                    {             
                        if(day>29)             
                        {               
                            day=1;               
                            mounth++;             
                        }           
                    }           
                    else if((year%4==0)&&(year%100!=0))
                    {             
                        if(day>29)
                        {              
                            day=1;               
                            mounth++;             
                        }           
                    }           
                    else           
                    {             
                        if(day>28)
                        {               
                                day=1;               
                                mounth++;             
                        }           
                    }         
                }         
                else         
                {           
                    if(day>30)           
                    {             
                        day=1;             
                        mounth++;           
                    }         
                }       
            }     
        }   
    }    

    display.clearDisplay(); 
    delay(1000); 
    Serial.print(mounth);   
    Serial.print("/");   
    Serial.print(day);   
    Serial.print("/");   
    Serial.print(year);   
    Serial.println();      

    display.setCursor(0,0);   
    display.print(" ");   
    display.print(mounth);   
    display.print("/");   
    display.print(day);   
    display.print("/");   
    display.print(year);
     
    display.display();

    Serial.print(hour);   
    Serial.print(":");   
    Serial.print(minute);   
    Serial.print(":");   
    Serial.print(second);   
    Serial.print("\n");   
    Serial.println();  
        
    display.setCursor(0,16);   
    display.print(" ");   
    display.print(hour);   
    display.print(":");   
    display.print(minute);  
    display.print("\n -");  
    display.print(second); 
    display.print("-");
    display.display();

    char tecla;
    tecla = Serial.read();
    if(tecla=='1')
    {
        digitalWrite(2,LOW);
    }
    if(tecla=='2')
    {
        digitalWrite(2, HIGH);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-02 00:10:36

setTextSize()设置‘放大率’,而不是直接设置文本大小,因此setTextSize(1)使用默认文本大小,setTextSize(2)将使文本大小翻倍。

GFX.cpp

代码语言:javascript
复制
/*!
    @brief   Set text 'magnification' size. Each increase in s makes 1 pixel
   that much bigger.
    @param  s  Desired text size. 1 is default 6x8, 2 is 12x16, 3 is 18x24, etc
*/
void Adafruit_GFX::setTextSize(uint8_t s) { setTextSize(s, s); }

当使用像setTextSize()这样的函数时,setTextSize()会改变字符的像素被打印到显示器上的方式(或者在Adafruit_PCD8544被打印到内部缓冲区的情况下),允许我们改变每个print调用的文本大小。

代码语言:javascript
复制
Adafruit_PCD8544 screen = Adafruit_PCD8544(3,4,5,6,7);
//... begin(), setContrast(), etc...
screen.setTextSize(1);
screen.println("Regular");
screen.setTextSize(2);
screen.println("Double");
screen.setTextSize(1);
screen.println("Regular again");
screen.display();

这将显示默认文本大小中的字符串“正则”和“规则再次”,而字符串“双”则是默认文本大小的两倍。

在您的代码中,块:

代码语言:javascript
复制
display.setCursor(0,16);   
display.print(" ");   
display.print(hour);   
display.print(":");   
display.print(minute);
display.print("\n -");  
display.print(second); 
display.print("-");
display.display();

应该是这样的:

代码语言:javascript
复制
display.setCursor(0,16);   
display.print(" ");   
display.print(hour);   
display.print(":");   
display.print(minute);
display.setTextSize(1); //Change to smaller text size for seconds since you already use size 2 by default
display.print("\n -");  
display.print(second); 
display.print("-");
display.setTextSize(2) //Change back to larger text size for other values
display.display();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67457589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档