Wyświetlacze Nextion

Miejsce na posty nie związane z powyższymi
ODPOWIEDZ
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Wyświetlacze Nextion

Post autor: Jacek » 09 lis 2020, 22:54

Witam czytających - co Koledzy myślą, jakie mają doświadczenie z wyświetlaczami jak w tytule wątku. Znalazłem na Youtube tutoriale o tych wyświetlaczach i to po polsku :)
Na forum MCS Bartek w tym wątku opisuje komunikację dwustronna z lcd Nextion w Bascom'ie https://www.mcselec.com/index2.php?opti ... ht=nextion
pozdrawiam Jacek.
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wyświetlacze Nextion

Post autor: Jacek » 15 lis 2020, 22:34

Witam - nie ma nikt z forum doświadczenia z tymi wyświetlaczami :( .
pozdrawiam Jacek.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Wyświetlacze Nextion

Post autor: pimowo » 22 lis 2020, 13:32

Wiem, że Bartek robił sterownik na takim wyświetlaczu (chwalił się tym w moim temacie o pH) Sam nie ma doświadczenia z tym wyświetlaczem - zakupiłem taki wyświetlacz, ale jeszcze go nie odpaliłem. W międzyczasie stwierdziłem, że w przyszłości jak powielę swój projekt sterownika akwarium to przez taki wyświetlacz będzie zbyt mocno rosła cena całego sterownika (temat jeszcze do przemyślenia)

Masz ten wyświetlacz czy chcesz go dopiero zakupić? Jeżeli już masz to pytaj o konkrety, a jeżeli jeszcze go nie masz to możesz coś na nim zrobić, nie mając go fizycznie - zacytuję Kolegę @niveasoft
niveasoft pisze:
31 sty 2020, 1:06
No ja nawet Nextiona z pudełka nie wyciągam jak mam dla kogoś coś napisać bo to się tak nawet 40s potrafi flashować do niego :D Działam na wbudowanym symulatorze i to działa świetnie. Podłaczam Ardu Mega250 na dwa baty czyli na dwa COMy :D
Jeden mam do danych i debug a drugi niby komunikuje się z Nextionem a komputer świetnie go udaje.
Tak więc można sobie napisać i zobaczyć soft zanim jeszcze kupisz wyświetlacz :D
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wyświetlacze Nextion

Post autor: Jacek » 22 lis 2020, 16:28

Witam - wyświetlacza jeszcze nie mam, rozważam kupno ciekawi mnie czy to co opisał Bartek na forum MCS działa poprawnie.
Myślałem nad kupnem wyświetlacza 4Dsystems ale ta cena..... :shock: .
Nie robię projektu na zarobek tylko dla siebie czysto hobbystycznie ;) .
Może Bartek by coś napisał jak to testuje symulując lcd.
Dzięki za odzew pozdrawiam Jacek.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Wyświetlacze Nextion

Post autor: pimowo » 22 lis 2020, 21:35

Jacek pisze:Nie robię projektu na zarobek tylko dla siebie czysto hobbystycznie
Ja również robię dla siebie, ale jak zrobię dwa, może trzy sterowniki to dobre 300zl idzie tylko na same wyświetlacze.
Jacek pisze:Może Bartek by coś napisał jak to testuje symulując lcd.
Zacytowałem Bartka, a tam jest napisane co i jak robił ;)
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wyświetlacze Nextion

Post autor: Jacek » 22 lis 2020, 21:39

Witam - hi właśnie coś klece w edytorze Nextion'a - poszukam tego tematu - muszę zobaczyć jak wysyłać dane na lcd i jak odbierać z niego jak coś już zrobię sensownego :oops: to tutaj wstawię.
pozdrawiam Jacek.
P.S. oglądałem ten film który Bartek umieścił w Twoim temacie bardzo fajnie to wyszło - szkoda że nie umieścił kodu Bascoma - idę po insulinę.
pozdrawiam Jacek.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wyświetlacze Nextion

Post autor: niveasoft » 13 gru 2020, 21:05

Nie pamiętam czy na MCS wstawiłem jakiś kod. Mogę coś wyciąć z gotowego kodu, żeby pokazać jak wysyłać i odbierać komendy, ale to się najlepiej objaśnia na przykładzie, a całego kodu zamieścić nie mogę. Nextiona trzeba trochę "poczytać". Komendy z AVR`a muszą pasować do softu w wyświetlaczu, czyli jak wysyłam "ID tekstu + Enter + Text + Enter" to Nextion musi wiedzieć który to jest ten text po tym ID.

Same Sub`y są proste tylko to potem trzeba zgrać...Tu jeszcze stary Printbin nie miał ilości bajtów do wysłania więc robiłem to w Asm na piechotę. Teraz jest łatwiej.
  1. Sub Set_text(byval Txt_id As String * 12 , Byval New_txt As String * 29)
  2.   Tx_string = Txt_id + ".txt={034}" + New_txt + "{034}"
  3.   Tx_len = Len(tx_string)
  4.   'Debug #usb , Tx_string
  5.   'Printbin #nex , Nex_tx_buff(1) , Tx_len
  6.   Printit
  7.   Nexend
  8. End Sub
  9.  
  10. Sub Set_page(byval Page_nr As Byte)
  11.   Tx_string = "page " + Str(page_nr)
  12.   Tx_len = Len(tx_string)
  13.   Debug #usb , Tx_string
  14.   'Printbin #nex , Nex_tx_buff(1) , Tx_len
  15.   Printit
  16.   Nexend
  17.   Actual_page = Page_nr
  18. End Sub
  19.  
  20. Sub Send_command(byval New_cmd As String * 29)
  21.   Tx_string = New_cmd
  22.   Tx_len = Len(tx_string)
  23.   Debug #usb , Tx_string
  24.   'Printbin #nex , Nex_tx_buff(1) , Tx_len
  25.   Printit
  26.   Nexend
  27. End Sub
  28.  
  29. Sub Printit()
  30. 'Printbin Nex_tx_buff(1) , Tx_len
  31.  R19 = Tx_len
  32.   Loadadr Nex_tx_buff(1) , X
  33.     St_point:
  34.     !LD        R24, X+
  35.     Wait_for_empty:
  36.     !LDS       R0, UCSR1A                                   '1 for second USART
  37.     !SBRS      R0, UDRE1
  38.     !RJMP Wait_for_empty
  39.     !STS       UDR1, R24                                    '1 for second USART
  40.     !DEC       R19
  41.     !BRBC      1,St_point
  42. End Sub
  43.  
  44. Macro Nexend                                                'to end a tx sequence--------------------------
  45.      Nex_tx_buff(1) = &HFF
  46.      Nex_tx_buff(2) = &HFF
  47.      Nex_tx_buff(3) = &HFF
  48.      Tx_len = 3
  49.      Printit
  50.      'Printbin #nex , &HFF ; &HFF ; &HFF
  51. End Macro
  52.  
  53. Macro Nexq                                                  ' to send quote before or after a sentence---------
  54.      Nex_tx_buff(1) = &H22
  55.      Tx_len = 1
  56.      Printit
  57.      'Printbin &H22
  58. End Macro
Tak Nextion odpowiada.
  1.  '--[ USART1 COM2 NEXTION ]---------------------
  2.   If 0 < Ischarwaiting(#nex) Then
  3.  
  4.     Incr Nex_idx : If Nex_idx > Max_nex_command_len Then Nex_idx = 1       'zabezpieczenie
  5.      Nex_buff(nex_idx) = Waitkey(#nex)
  6.  
  7.     If Nex_idx = 1 Then                                     'check what type of msg we receiving
  8.      Select Case Nex_buff(1)
  9.  
  10.       Case 0
  11.        'it can be 4bytes Invalid_instruction
  12.        'or 6 bytes Nextion_startup (may be after reset)
  13.         Min_len = 1
  14.  
  15.       Case Touch_event
  16.         Min_len = 4
  17.       Case Touch_awake_coordinate                           '9 bytes
  18.         Min_len = 6
  19.       Case Touch_sleep_coordinate                           '9 bytes
  20.         Min_len = 6
  21.  
  22.       Case String_data                                      'it will be string with variable len
  23.         Min_len = 2
  24.       Case Numeric_data                                     'there can be FF`s so we must wait for 8 bytes
  25.         Min_len = 5
  26.  
  27.       Case Else
  28.         Min_len = 1                                         'rest of return`s have one byte followed three FF`s
  29.  
  30.      End Select
  31.  
  32.     Else
  33.                                                         'msg continue
  34.      If Nex_buff(nex_idx) = &HFF Then
  35.       If Nex_idx > Min_len Then
  36.  
  37.        If End_cnt < 2 Then
  38.         Incr End_cnt
  39.  
  40.        Else                                                 'we received third FF
  41.  
  42. '         '-----------------------------[ DEBUG ]----------
  43. '          Debug #usb , "Debug=> ";
  44. '          For N = 1 To Nex_idx
  45. '           Debug #usb , Hex(nex_buff(n)) ; " ";
  46. '          Next
  47. '          Debug #usb , ""
  48. '         '------------------------------------------------
  49.  
  50.          'parse
  51.           Select Case Nex_buff(1)
  52.  
  53.            Case Invalid_instruction
  54.  
  55.             If Nex_idx = 4 Then
  56.              Debug #usb , "Invalid instruction!"
  57.             Elseif Nex_idx = 6 Then
  58.              Debug #usb , "Nextion rebooted OK"
  59.             End If
  60.  
  61.            Case Instruction_okay
  62.              Debug #usb , "Command accepted"
  63.            Case Invalid_variable_name
  64.              Debug #usb , "Variable or component NAME not recognized!"
  65.  
  66.            Case Touch_event
  67.              If Touch_state = 0 Then
  68.               Debug #usb , "Relased object " ; Touch_id ; " on page " ; Touch_page
  69.              Else
  70.               Debug #usb , "Pressed object " ; Touch_id ; " on page " ; Touch_page
  71.              End If
  72.  
  73.            Case Touch_awake_coordinate To Touch_sleep_coordinate
  74.  
  75.               Swap New_x                                    'big endian order received
  76.               Swap New_y
  77.               Debug #usb , "Coordinates are: X=" ; New_x ; " Y=" ; New_y
  78.  
  79.            Case String_data
  80.              Helpb = Nex_idx - 2
  81.              Nex_buff(helpb) = 0                            'add string terminator
  82.              'Debug #usb , "New string=> " ; New_string
  83.              Debug #usb , New_string
  84.  
  85.              'you can parse new commands here
  86.  
  87.            Case Numeric_data
  88.              Debug #usb , "New value=> " ; New_long
  89.  
  90.              'you can parse new values here
  91.  
  92.  
  93.           End Select
  94.  
  95.  
  96.  
  97.  
  98.           Nex_idx = 0
  99.           End_cnt = 0
  100.        End If
  101.  
  102.       End If
  103.      End If
  104.  
  105.     End If
  106.  
  107.  
  108.   End If
Stałe dla rozeznania się w komandach
  1. '*****************************************************************
  2. '*                    NEXTION DISPLAY                            *
  3. '*****************************************************************
  4.  
  5. 'NEXTION RETURN DATA                                        LENGTH
  6. Const Invalid_instruction = &H00                            '4
  7. Const Instruction_okay = &H01                               '4
  8. Const Invalid_component_id = &H02                           '4
  9. Const Invalid_page_id = &H03                                '4
  10. Const Invalid_picture_id = &H04                             '4
  11. Const Invalid_font_id = &H05                                '4
  12. Const Invalid_file_operation = &H06                         '4
  13. Const Invalid_crc = &H09                                    '4
  14. Const Invalid_baud_rate = &H11                              '4
  15. Const Invalid_vaweform_id = &H12                            '4
  16. Const Invalid_variable_name = &H1A                          '4
  17. Const Invalid_variable_operation = &H1B                     '4
  18. Const Assignement_failed = &H1C                             '4
  19. Const Eeprom_operation_failed = &H1D                        '4
  20. Const Invalid_parameters_quantity = &H1E                    '4
  21. Const Io_operation_failed = &H1F                            '4
  22. Const Escape_char_invalid = &H20                            '4
  23. Const Variable_name_to_long = &H23                          '4
  24. 'return codes valid  in all cases
  25. '00 00 00 FF FF FF =>Nextion starup                          '6
  26. Const Serial_buff_overflow = &H24                           '4
  27. Const Touch_event = &H65                                    '7
  28. ' 65 00 01 01 FF FF FF
  29. ' |   |  |  |
  30. ' |   |  |  event 01=press, 00=release
  31. ' |   |  component ID
  32. ' |   page number
  33. ' touch event
  34. Const Curr_page_num = &H66                                  '5 second byte is page num
  35. Const Touch_awake_coordinate = &H67                         '9
  36. Const Touch_sleep_coordinate = &H68
  37.  'first two bytes is X
  38.  'next two bytes is Y
  39.  'last byte is event 01=press, 00=release
  40.  'eg. 67 00 7A 00 1E 01 FF FF FF
  41. Const String_data = &H70                                    'varied len eg.70 xx xx xx xx xx xx FF FF FF
  42. Const Numeric_data = &H71                                   '8 eg.71 xx xx xx xx FF FF FF  <-4bytes 32bit value, little endian
  43. Const Auto_sleep = &H86                                     '4
  44. Const Auto_awake = &H87                                     '4
  45. Const Nextion_ready = &H88                                  '4
  46. Const Micro_sd_upgrade = &H89                               '4
  47. Const Transp_data_finished = &HFD                           '4
  48. Const Transp_data_ready = &HFE                              '4
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Wyświetlacze Nextion

Post autor: Jacek » 13 gru 2020, 22:09

Witam - Bartku dziękuje za programy przez święta po testuje i zobaczymy czy to ogarnę.
pozdrawiam Jacek.
Awatar użytkownika
Pikczu
Posty: 392
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Wyświetlacze Nextion

Post autor: Pikczu » 14 gru 2020, 20:47

Jacek,
Mały kurs nextiona po Niemiecku.
https://www.boecker-systemelektronik.de ... _Tutorials
Google translate będzie twoim przyjacielem :)
ODPOWIEDZ