Skocz do zawartości

Pomocna odpowiedź

@Egzekutor27 Jeśli to ten wyświetlacz o którym pisałeś w innym wątku to przecież podawałem Ci link do biblioteki (driver zgodny z Adafruit_GFX). A do Adafruit_GFX masz w necie przykładów więcej niż pewnie makaronu zjadłeś... w końcu to chyba najpopularniejsza biblioteka dla Arduino.

 

4 godziny temu, ethanak napisał:

@Egzekutor27 Jeśli to ten wyświetlacz o którym pisałeś w innym wątku to przecież podawałem Ci link do biblioteki (driver zgodny z Adafruit_GFX). A do Adafruit_GFX masz w necie przykładów więcej niż pewnie makaronu zjadłeś... w końcu to chyba najpopularniejsza biblioteka dla Arduino.

 

Działa na lcdwiki

(edytowany)
52 minuty temu, Egzekutor27 napisał:

Posiadam ten download ( 45MB ) , są tam przykłady DEMA, i nic po za tym 🙂

Super, że się z tym zapoznałeś. Jeżeli twierdzisz, że producent podaje tylko "przykłady DEMA, i nic po za tym" , to nie mam pomysłu gdzie mogą być informacje które by Ci pomogły.  

Chyba, że "powalczysz" z biblioteką Adafruit_GFX, co już wcześniej mocno sugerował Ci Kolega @ethanakPrzejrzyj https://www.instructables.com/Arduino-and-35-Inch-320x480-TFT-LCD-ILI9488-SPI-In/ 

Edytowano przez keram167
  • Lubię! 1

Jedyne co zrobiłem to złapałem nerwicy. Nie działa to wszystko na innych bibliotekach, prócz LCDWiki. Odpiąłem ten wyświetlacz w diabły i mam tego dosyć. Czekam na kontroler dotyku aby wlutować pod płytkę wyświetlacza i jako dotyk. Albo sprzedam TFT jeśli stwierdzę, że jest mi zbędny albo ... sam nie wiem, wyślę "komuś" i niech się pobawi.

@Egzekutor27 - i pozwolisz żeby struktura elektroniczna ( TFT ) zapanowała nad strukturą biologiczną ( TOBĄ ) 😲 ???. Brzmi prawie jak "Judgement day" z Terminatora ...

Masz zamontowany pomiędzy TFT a Arduino konwerter poziomów logicznych jak podpowiada dokumentacja ? 

900px-MSP2402-012.thumb.png.3968662b9b1211b79a455aa01ac704a3.png

Jeśli w którymś momencie testów, podłączyłeś bezpośrednio ( bez konwertera ) wyświetlacz TFT ( logika 3,3V ) do Arduino ( logika 5V ) to mogłeś uszkodzić wejścia w TFT i ... "Hasta la vista, baby".

4 minuty temu, keram167 napisał:

@Egzekutor27 - i pozwolisz żeby struktura elektroniczna ( TFT ) zapanowała nad strukturą biologiczną ( TOBĄ ) 😲 ???. Brzmi prawie jak "Judgement day" z Terminatora ...

Masz zamontowany pomiędzy TFT a Arduino konwerter poziomów logicznych jak podpowiada dokumentacja ? 

900px-MSP2402-012.thumb.png.3968662b9b1211b79a455aa01ac704a3.png

Jeśli w którymś momencie testów, podłączyłeś bezpośrednio ( bez konwertera ) wyświetlacz TFT ( logika 3,3V ) do Arduino ( logika 5V ) to mogłeś uszkodzić wejścia w TFT i ... "Hasta la vista, baby".

Widzisz gdzieś konwerter w poście który napisałem ?  Są zdjęcia TFT.  Wyświetlacz działa na bibliotece LCDWiki. Na napięciu 3,3V jak i na 5V. Nawet teraz sprawdziłem i jest OK, po podłączeniu następujących pinów :

//             CS  DC/RS  RESET  SDI/MOSI  SDO/MISO  SCK  LED    VCC     GND    
//Arduino Uno  A5   A3     A4      11        12      13   A0   5V/3.3V   GND

//paramters define
#define MODEL ILI9488_18
#define CS   A5    
#define CD   A3
#define RST  A4
#define LED  A0   //if you don't need to control the LED pin,you should set it to -1 and set it to 3.3V

 

#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_SPI.h> //Hardware-specific library
#include "font.h"

 

LCDWIKI_SPI my_lcd(MODEL,CS,CD,RST,LED); //model,cs,dc,reset,led

 

I przez takie podłączenie działa wyświetlacz. Ale oczywiście w Adafruit czy podobnej bibliotece niestety podłączenia  inne. i nie śmiga

 

Proszę cały kod DEMO z pliku 45 MB, który jest dodany jako test TFT... Kodów jest kilka, bo i na dotyk też są. 

 


//             CS  DC/RS  RESET  SDI/MOSI  SDO/MISO  SCK  LED    VCC     GND    
//Arduino Uno  A5   A3     A4      11        12      13   A0   5V/3.3V   GND

#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_SPI.h> //Hardware-specific library
#include "font.h"

//paramters define
#define MODEL ILI9488_18
#define CS   A5    
#define CD   A3
#define RST  A4
#define LED  A0   //if you don't need to control the LED pin,you should set it to -1 and set it to 3.3V

//the definiens of hardware spi mode as follow:
//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_SPI my_lcd(MODEL,CS,CD,RST,LED); //model,cs,dc,reset,led


#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

char *aspect_name[] = {"PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV"};
char *color_name[] = { "BLUE", "GREEN", "RED", "WHITE" ,"CYAN","MAGENTA","YELLOW"};
uint16_t color_mask[] = { 0x001F, 0x07E0, 0xF800, 0xFFFF,0x07FF,0xF81F,0xFFE0 };

    
void show_16font(uint16_t x, uint16_t y,uint16_t fc, uint16_t bc,uint8_t *str,uint8_t mode)
{
    uint16_t i,j,k,c_num,color=0;
    boolean first = true;
    c_num = sizeof(tfont16)/sizeof(typFNT_GB16);
    for(k=0;k<c_num;k++)
    {         //pgm_read_byte
         if((pgm_read_byte(&tfont16[k].Index[0])==*str) && (pgm_read_byte(&tfont16[k].Index[1])==*(str+1)))
         {
            my_lcd.Set_Addr_Window(x, y, x+16-1, y+16-1); 
            for(j=0;j<32;j++)
            {
               for(i = 0;i<8;i++)  
               {
                  if(mode) //łóżko
                  {
                    if(pgm_read_byte(&tfont16[k].Msk[j])&(0x80>>i))
                    {
                        my_lcd.Set_Draw_color(fc);
                        my_lcd.Draw_Pixel(x+((j*8+i)%16),y+((j*8+i)/16));
                     }
                    // x++;
                    // if((x-x0)==16)
                    // {
                   //     x = x0;
                   //     y++;   
                   //  }
     
                  }
                  else   //非叠加模式
                  {
                    if(pgm_read_byte(&tfont16[k].Msk[j])&(0x80>>i))
                    {
                         color = fc;
                     }
                     else
                     {
                        color = bc;
                     }
                     my_lcd.Push_Any_Color(&color, 1, first, 0);
                    first = false;
                  }
               }
            } 
      }
    } 
          
}

void show_24font(uint16_t x, uint16_t y,uint16_t fc, uint16_t bc,uint8_t *str,uint8_t mode)
{
    uint16_t i,j,k,c_num,color;
    boolean first = true;
    c_num = sizeof(tfont24)/sizeof(typFNT_GB24);
    for(k=0;k<c_num;k++)
    {
         if((pgm_read_byte(&tfont24[k].Index[0])==*str) && (pgm_read_byte(&tfont24[k].Index[1])==*(str+1)))
         {
            my_lcd.Set_Addr_Window(x, y, x+24-1, y+24-1); 
            for(j=0;j<72;j++)
            {
               for(i = 0;i<8;i++)  
               {
                  if(mode) //叠加模式
                  {
                    if(pgm_read_byte(&tfont24[k].Msk[j])&(0x80>>i))
                    {
                        my_lcd.Set_Draw_color(fc);
                        my_lcd.Draw_Pixel(x+((j*8+i)%24),y+((j*8+i)/24));
                     }
                  //   x++;
                  //   if((x-x0)==32)
                  //   {
                  //      x = x0;
                  //      y++;   
                  //   }
                  }
                  else   //非叠加模式
                  {
                    if(pgm_read_byte(&tfont24[k].Msk[j])&(0x80>>i))
                    {
                         color = fc;
                     }
                     else
                     {
                        color = bc;
                     }
                     my_lcd.Push_Any_Color(&color, 1, first, 0);
                     first = false;
                  }
               }
            } 
      }
    }
}

void show_32font(uint16_t x, uint16_t y,uint16_t fc, uint16_t bc,uint8_t *str,uint8_t mode)
{
    uint16_t i,j,k,c_num,color;
    boolean first = true;
    c_num = sizeof(tfont32)/sizeof(typFNT_GB32);
    for(k=0;k<c_num;k++)
    {
         if((pgm_read_byte(&tfont32[k].Index[0])==*str) && (pgm_read_byte(&tfont32[k].Index[1])==*(str+1)))
         {
            my_lcd.Set_Addr_Window(x, y, x+32-1, y+32-1); 
            for(j=0;j<128;j++)
            {
               for(i = 0;i<8;i++)  
               {
                  if(mode) //叠加模式
                  {
                    if(pgm_read_byte(&tfont32[k].Msk[j])&(0x80>>i))
                    {
                        my_lcd.Set_Draw_color(fc);
                        my_lcd.Draw_Pixel(x+((j*8+i)%32),y+((j*8+i)/32));
                     }
                   //  x++;
                  //   if((x-x0)==32)
                   //  {
                  //      x = x0;
                  //      y++;   
                   //  }
                  }
                  else   //非叠加模式
                  {
                    if(pgm_read_byte(&tfont32[k].Msk[j])&(0x80>>i))
                    {
                         color = fc;
                     }
                     else
                     {
                        color = bc;
                     }
                    my_lcd.Push_Any_Color(&color, 1, first, 0);
                    first = false;
                  }
               }
            } 
      }
    }
}

void show_chinese(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint16_t csize,uint8_t mode)
{    
    int i = 0;
    if(x>(my_lcd.Get_Display_Width()-csize)||y>(my_lcd.Get_Display_Height()-csize))
      { 
        return;
      }              
    while(*str!='\0')
    { 
  //      i += 5;
  //      my_lcd.Draw_Fast_VLine(i, 10, 100);
       if(csize==32)
       {
          show_32font(x, y,fc, bc,str,mode);
       }
      else if(csize==24)
      {
          show_24font(x, y,fc, bc,str,mode);
      }
      else
      {
          show_16font(x, y,fc, bc,str,mode);
      } 
      str+=3; 
      x+=csize;              
    }   
}

void show_chinese_test(void)
{
    uint16_t i;
     my_lcd.Set_Rotation(1);
     show_chinese(0, 10,RED,BLACK,"欢迎您",16,1);
     show_chinese(0, 26,RED,BLACK,"欢迎您",24,1);
     show_chinese(0, 50,RED,BLACK,"欢迎您",32,1);
     show_chinese(0, 82,GREEN,BLACK,"欢迎您",16,1);
     show_chinese(0, 98,GREEN,BLACK,"欢迎您",24,1);
     show_chinese(0, 122,GREEN,BLACK,"欢迎您",32,1);
     show_chinese(0, 154,BLUE,BLACK,"欢迎您",16,1);
     show_chinese(0, 170,BLUE,BLACK,"欢迎您",24,1);
     show_chinese(0, 194,BLUE,BLACK,"欢迎您",32,1);
     for (i = 1; i <= my_lcd.Get_Display_Width(); i++) 
     {
         my_lcd.Vert_Scroll(0, my_lcd.Get_Display_Width(), i);
         delay(10);
     }
     delay(2000);
     my_lcd.Fill_Screen(BLACK);
     show_chinese(0, 10,RED,WHITE,"欢迎您",16,0);
     show_chinese(0, 26,RED,WHITE,"欢迎您",24,0);
     show_chinese(0, 50,RED,WHITE,"欢迎您",32,0);
     show_chinese(0, 82,GREEN,WHITE,"欢迎您",16,0);
     show_chinese(0, 98,GREEN,WHITE,"欢迎您",24,0);
     show_chinese(0, 122,GREEN,WHITE,"欢迎您",32,0);
     show_chinese(0, 154,BLUE,WHITE,"欢迎您",16,0);
     show_chinese(0, 170,BLUE,WHITE,"欢迎您",24,0);
     show_chinese(0, 194,BLUE,WHITE,"欢迎您",32,0);
}

void show_pic(void)
{
    int i;
    my_lcd.Set_Addr_Window(my_lcd.Get_Display_Width()-40-40, 20, my_lcd.Get_Display_Width()-40-1, 59); 
    my_lcd.Push_Any_Color(penguin_pic, 1600, 1, 1);
 }

void windowScroll(int16_t x, int16_t y, int16_t wid, int16_t ht, int16_t dx, int16_t dy, uint16_t *buf)
{
    if (dx)
    { 
      for (int16_t row = 0; row < ht; row++) 
      {
            my_lcd.Read_GRAM(x, y + row, buf,wid, 1);
            my_lcd.Set_Addr_Window(x, y + row, x + wid - 1, y + row);
            my_lcd.Push_Any_Color(buf + dx, wid - dx, 1,0);
            my_lcd.Push_Any_Color(buf + 0, dx, 0,0);
        }
    }
    if (dy) 
    {
      for (int16_t col = 0; col < wid; col++) 
      {
            my_lcd.Read_GRAM(x + col, y, buf,1, ht);
            my_lcd.Set_Addr_Window(x + col, y, x + col, y + ht - 1);
            my_lcd.Push_Any_Color(buf + dy, ht - dy, 1,0);
            my_lcd.Push_Any_Color(buf + 0, dy, 0,0);
      }
    }
}

void show_string(uint8_t *str,int16_t x,int16_t y,uint8_t csize,uint16_t fc, uint16_t bc,boolean mode)
{
    my_lcd.Set_Text_Mode(mode);
    my_lcd.Set_Text_Size(csize);
    my_lcd.Set_Text_colour(fc);
    my_lcd.Set_Text_Back_colour(bc);
    my_lcd.Print_String(str,x,y);
}
 
void color_test()
{
  int n,i;
  int cnum = sizeof(color_mask)/sizeof(uint16_t);
  for(i=0;i<cnum;i++)
  {
    for(n=0;n<32;n++)
    {
      my_lcd.Set_Draw_color(n*8, n*8, n*8); 
      my_lcd.Set_Draw_color(my_lcd.Get_Draw_color()&color_mask[i]);
      my_lcd.Fill_Rectangle(n*my_lcd.Get_Display_Width()/32,(my_lcd.Get_Display_Height()/cnum)*i,(n+1)*my_lcd.Get_Display_Width()/32,(my_lcd.Get_Display_Height()/cnum)*(i+1));
     }
     show_string(color_name[i],0,((my_lcd.Get_Display_Height()/cnum)-16)/2+(my_lcd.Get_Display_Height()/cnum)*i,2,color_mask[i], BLACK,1);
  }
  delay(1000);
}

void text_test(void)
{
    show_string("Hello World!",0,0,1,RED, BLACK,0);
    my_lcd.Set_Text_colour(YELLOW);
    my_lcd.Set_Text_Size(2);
    my_lcd.Print_Number_Float(01234.56789, 4, 0, 8, '.', 0, ' '); 
    show_string("ABCDEF123456",0,24,3,BLUE, BLACK,0);
    show_string("Good",0,56,5,GREEN, BLACK,0);
    show_string("By utilizing breath",0,96,2,GREEN, BLACK,0);
    show_string("we soften our experiences.",0,112,1,GREEN, BLACK,0);
    show_string("If we dam them up,",0,120,1,GREEN, BLACK,0);
    show_string("our lives will stagnate,",0,128,1,GREEN, BLACK,0);
    show_string("but we keep them flowing,",0,136,1,GREEN, BLACK,0);
    show_string("we allow more newness",0,144,1,GREEN, BLACK,0);
    show_string("and greater experiences",0,152,1,GREEN, BLACK,0);
    show_string("to blossom.Yes OK",0,160,1,GREEN, BLACK,0);
}

void setup()
{
  my_lcd.Init_LCD();
  my_lcd.Fill_Screen(BLACK);
 // show_chinese_test();
 // show_pic();
}

void loop() 
{
    uint16_t max_scroll,rotation,i,n;
    my_lcd.Set_Rotation(0);
    uint16_t scrollbuf[my_lcd.Get_Display_Height()]; 
    show_chinese_test();
    delay(500);
    for(rotation = 0;rotation<4;rotation++)
    {
        my_lcd.Set_Rotation(rotation);
        my_lcd.Fill_Screen(BLACK);
        //text
        color_test();
        my_lcd.Fill_Screen(BLACK);
        delay(1000);        
        text_test();    
        delay(1000);
        for(n=0;n<32;n++)
        {
          my_lcd.Set_Draw_color(n*8, n*8, n*8); 
          my_lcd.Set_Draw_color(my_lcd.Get_Draw_color()&color_mask[rotation]);
          my_lcd.Fill_Rectangle(n*my_lcd.Get_Display_Width()/32,48,(n+1)*my_lcd.Get_Display_Width()/32,112);
        }
        show_string("COLOR TESTING",50,72,2,color_mask[rotation+1], BLACK,1);
        show_string(aspect_name[rotation],0,184,2,WHITE, BLACK,0);       
        show_pic();
        show_string("VERTICAL SCROLL UP",0,168,2,YELLOW, BLACK,0);  
        if(my_lcd.Get_Rotation()&1)
        {
            max_scroll = my_lcd.Get_Display_Width();
         }
         else
         {
            max_scroll = my_lcd.Get_Display_Height();
         }
         for(i=1;i<=max_scroll;i++)
         {
            my_lcd.Vert_Scroll(0, max_scroll, i);
            delay(10);
          }
          my_lcd.Vert_Scroll(0, max_scroll, 0);
          show_string("VERTICAL SCROLL DN",0,168,2,GREEN, BLACK,0); 
         for(i=1;i<=max_scroll;i++)
         {
            my_lcd.Vert_Scroll(0, max_scroll, 0-i);
            delay(10);
          }
          delay(1000);
          my_lcd.Vert_Scroll(0, max_scroll, 0);
         if(!(rotation&1))
         {
             show_string("ONLY THE COLOR BAND",0,200,2,BLUE, BLACK,0); 
             for(i=1;i<=64;i++)
            {
              my_lcd.Vert_Scroll(48, 64, i);
              delay(20);
            }
            delay(1000);
            my_lcd.Vert_Scroll(0, max_scroll, 0);
         }
         show_string("SOFTWARE SCROLL",0,216,2,YELLOW, BLACK,0); 
        // for (int16_t i = my_lcd.Get_Display_Width(), dx = 4, dy = 0; i > 0; i -= dx)
        //{
        //     windowScroll(0, 216, my_lcd.Get_Display_Width(), 16, dx, dy, scrollbuf);
        //}
         delay(3000);
     }
     
    my_lcd.Invert_Display(true);
    delay(3000);
    my_lcd.Invert_Display(false);
    my_lcd.Fill_Screen(BLACK);
}

 

  • Lubię! 1
  • Ponowię temat jeśli chodzi o włączenie / wyłączenie LCD o ustalonej godzinie. Czy jest ktoś w stanie dopisać do mojej linijki wpisy, które włączą i wyłączą wyświetlacz LCD ? Co strony WWW, to inne wpisy. włączenie LCD 5:50, wyłączenie 22:30 . 
  • #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <OneWire.h>
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #define DS3231_I2C_ADDRESS 0x68
    
    
    int ThermistorPin = 0;
    int Vo;
    float R1 = 10000;
    float logR2, R2, T, Tc, Tf;
    float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
    
    LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4);
    
    // Konwersja liczby dziesiętnej do postaci binarnej
    byte decToBcd(byte val){
      return( (val/10*16) + (val%10) );
    }
    
    // Konwersja liczby binarnej do postaci dziesiętnej
    byte bcdToDec(byte val){
      return( (val/16*10) + (val%16) );
    }
    
    float temp1, temp2;
    
    byte stopnie[8] = {                //konfigurajca znaku stopnie
      B00111,
      B00101,
      B00111,
      B00000,
      B00000,
      B00000,
      B00000,
      B00000
    };
    
    RF24 radio(9, 10);
    const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL };
    
    void setup(void) {
    
    Serial.begin(9600);
    Wire.begin();
    radio.begin();
    
     radio.setRetries(15,15);
    
     radio.openReadingPipe(1,pipes[1]);
    
     radio.startListening();
    
     radio.printDetails();
    
     radio.openWritingPipe(pipes[1]);
    
     radio.openReadingPipe(1,pipes[0]);
    
     radio.startListening();
    lcd.begin(20, 4);
    lcd.backlight();
    lcd.clear();
    lcd.print("....WELCOME HOME....");
    delay(2000);
    lcd.clear();
    lcd.print("Connecting to sensor");
    delay(2000);
    lcd.clear();
    lcd.createChar(0, stopnie);
    }
    
    void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
    dayOfMonth, byte month, byte year)
    {
      // ustawienie czasu i daty w DS3231
      Wire.beginTransmission(DS3231_I2C_ADDRESS);
      Wire.write(0);                    // określa, że następna wartość ma trafić do rejestru sekund
      Wire.write(decToBcd(second));     // ustawienie sekund
      Wire.write(decToBcd(minute));     // ustawienie minuty
      Wire.write(decToBcd(hour));       // ustawienie godziny
      Wire.write(decToBcd(dayOfWeek));  // ustawienie dnia tygodnia (1=niedziela, 7=sobota)
      Wire.write(decToBcd(dayOfMonth)); // ustawienie dnia (1-31)
      Wire.write(decToBcd(month));      // ustawienie miesiąca
      Wire.write(decToBcd(year));       // ustawienie roku (0-99)
      Wire.endTransmission();
    }
    
    void readDS3231time(byte *second,
    byte *minute,
    byte *hour,
    byte *dayOfWeek,
    byte *dayOfMonth,
    byte *month,
    byte *year)
    {
      Wire.beginTransmission(DS3231_I2C_ADDRESS);
      Wire.write(0); // ustawia rejestr DS3231 na 00h
      Wire.endTransmission();
      Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
      // żąda 7 bajtów danych od modułu DS3231 począwszy od rejestru 00h
      *second = bcdToDec(Wire.read() & 0x7f);
      *minute = bcdToDec(Wire.read());
      *hour = bcdToDec(Wire.read() & 0x3f);
      *dayOfWeek = bcdToDec(Wire.read());
      *dayOfMonth = bcdToDec(Wire.read());
      *month = bcdToDec(Wire.read());
      *year = bcdToDec(Wire.read());
    }
    
    void displayTime(){
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      // retrieve data from DS3231
      readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
      &year);
      
    // Przekazanie danych do wyświetlenie w serial monitorze i do LCD
    
      // CZAS
      // Godziny
        // podczas wyświetlania konwertuje wartość zmiennej typu bitowego do postaci dziesiętnej
      Serial.print(hour, DEC);
      if (hour<10) {
        lcd.setCursor(0,0); 
        lcd.print("0");
        lcd.print(hour, DEC); 
      } else {
        lcd.setCursor(0,0); 
        lcd.print(hour, DEC); 
        }
      Serial.print(":");
     // lcd.setCursor(2,1); 
      lcd.print(":");
      
      // Minuty
      Serial.print(minute, DEC);
      if (minute<10) {
        Serial.print("0");
        lcd.setCursor(3,0); 
        lcd.print("0");
        lcd.print(minute, DEC); 
      } else {
        lcd.setCursor(3,0); 
        lcd.print(minute, DEC); 
        }
      Serial.print(":");
      lcd.print(":");
      
      //Sekundy
      if (second<10){
        Serial.print("0");
        lcd.setCursor(6,0); 
        lcd.print("0");
        lcd.print(second, DEC); 
      } else {
        Serial.print(second, DEC);
        lcd.setCursor(6,0); 
        lcd.print(second, DEC); 
        }
    
    // DATA
      Serial.print(" ");
      Serial.print(dayOfMonth, DEC);
      Serial.print("-");
      Serial.print(month, DEC);
      Serial.print("-");
      Serial.print(year, DEC);
    
      // Dzień
      if (dayOfMonth<10){
        lcd.setCursor(10,0); 
        lcd.print("0");
        lcd.print(dayOfMonth, DEC); 
      } else {
        lcd.setCursor(10,0); 
        lcd.print(dayOfMonth, DEC); 
        }
        lcd.print("-");
        
      // Miesiąc
      if (month<10){
        lcd.setCursor(13,0); 
        lcd.print("0");
        lcd.print(month, DEC); 
      } else {
        lcd.setCursor(13,0); 
        lcd.print(month, DEC); 
        }
        lcd.print("-");
    
       //Rok
        lcd.print("20");
        if (year<10){
        lcd.setCursor(18,0); 
        lcd.print("0");
        lcd.print(year, DEC); 
      } else {
        lcd.setCursor(18,0); 
        lcd.print(year, DEC); 
        }
      
      Serial.print(" ");
      lcd.setCursor(0,1); 
      switch(dayOfWeek){
      case 1:
        Serial.println("Poniedziałek");
        lcd.print("Dzis Poniedzialek");
        break;
      case 2:
        Serial.println("Wtorek");
        lcd.print("Dzis jest Wtorek");
        break;
      case 3:
        Serial.println("Środa");
        lcd.print("Dzis jest Sroda");
        break;
      case 4:
        Serial.println("Czwartek");
        lcd.print("Dzis jest Czwartek");
        break;
      case 5:
        Serial.println("Piątek");
        lcd.print("Dzis jest Piatek");
        break;
      case 6:
        Serial.println("Sobota");
        lcd.print("Dzis jest Sobota");
        break;
      case 7:
        Serial.println("Niedziela");
        lcd.print("Dzis jest Niedziela");
        break;
      }
    }
    
    void loop(void)
    {
    if ( radio.available() )
    {
    delay(50);
    
    Vo = analogRead(ThermistorPin);
      R2 = R1 * (1023.0 / (float)Vo - 1.0);
      logR2 = log(R2);
      T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
      Tc = T - 273.15;
    
    radio.read(&temp1, sizeof(temp1));
    lcd.setCursor(0,3);
    lcd.print("Temp. zewn."); // Odbierana temperatura radiowo 2,4GHz
    lcd.setCursor(12,3);
    lcd.print(temp1);
    lcd.print((char)0);
    lcd.print("C");
    
    delay(50);
    
    lcd.setCursor(0,2);
    lcd.print("Temp. wewn."); // // Odbierana temperatura z termistora 10k
    lcd.setCursor(12, 2);
    lcd.print(Tc); 
    lcd.print((char)0);
    lcd.print("C");
    
    delay(100);
    }
    displayTime(); // wyświetlanie czasu rzeczywistego
      delay(1000);   // odśwież co sekundę
    }
    //else
    //{
    //lcd.println("   Brak sygnalu...");
    //}
    //delay(1000);
    //}

    Z góry dziękuję za pomoc 🙂

  • 2 miesiące później...

Fajna robota. Taka stacja pogodowa może stać się jednocześnie innym urządzeniem. Planuję wykorzystać to do monitorowania rozgrzania pieca CO w kotłowni, albo inaczej temperatury wychodzącej wody.  Stacja będzie podawała temperaturę "za piecem" a odbiornik na wyświetlaczu gdzieś w mieszkaniu obok będzie podawał aktualny odczyt. 
Egzekutor27 czy mogę liczyć na pomoc w zakresie schematu połączeń?

I100

  • Lubię! 1

Project " GEMINI STATION " . Tak będzie prawdopodobnie się nazywała stacja meteo z zegarem. Obudowa w trakcie wykonywania niezbędnych otworów na diodę podczerwieni, antenka 2,4GHz, LCD, ładowanie USB, reset itp. Elementy obudowy wykonano z płyty Spetobar BAS 340 #3mm . LCD, elementy elektroniczne i programator oraz kabelkomania muszą się zmieścić do obudowy 🤔🤔. Na kartce A4 szkic połączeń, aby wszystko było w jednym porządku. Ufff. To jedziemy 💪💪🍺🍺🧑‍💻🧑‍💻

IMG_20221118_194959.jpg

IMG_20221116_204440.jpg

IMG_20221115_182804.jpg

IMG_20221115_182810.jpg

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...