Skocz do zawartości

Bezprzewodowa stacja meteo


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.

 

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

@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".

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

  • 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 🙂

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.