{"id":1129,"date":"2023-11-16T15:17:41","date_gmt":"2023-11-16T08:17:41","guid":{"rendered":"https:\/\/delta-electronic.com\/Design\/Hardwares\/?p=1129"},"modified":"2024-08-09T02:41:24","modified_gmt":"2024-08-08T19:41:24","slug":"membuat-human-machine-interface-sederhana-dengan-menggunakan-tft-lcd-dan-arduino-uno","status":"publish","type":"post","link":"https:\/\/delta-electronic.com\/Design\/Hardwares\/membuat-human-machine-interface-sederhana-dengan-menggunakan-tft-lcd-dan-arduino-uno\/","title":{"rendered":"Membuat Human Machine Interface sederhana dengan menggunakan TFT LCD dan Arduino Uno"},"content":{"rendered":"<p><strong>Apa itu Human Machine Interface?<\/strong><\/p>\n<p>Human Machine Interface atau biasa disingkat HMI adalah merupakan layar atau dashboard yang merupakan penghubung antara manusia dan mesin. Melalui layar tersebut manusia sebagai operator dapat melihat kondisi yang terjadi pada mesin dan juga sekaligus mengirimkan perintah-perintah untuk mengoperasikan mesin.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-1130 size-full\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/human-machine-interface.jpg\" alt=\"human machine interface\" width=\"275\" height=\"183\" \/><\/p>\n<p><strong>Bagaimana membuat HMI dengan Arduino Uno?<\/strong><\/p>\n<p>Prinsip kerja HMI sebetulnya adalah mengirimkan perintah operator ke mesin dan membuat operator melihat feedback yang dikirim oleh mesin. Untuk melakukan ini dapat digunakan sebuah TFT LCD Touchscreen LCD di mana LCD ini bukan hanya menampilkan gambar namun juga dapat menerima respon dari operator berupa sentuhan pada layarnya. Dengan menggunakan LCD ini maka kita tinggal membuat sebuah program pada Arduino Uno yang akan menampilkan gambar pada layar LCD berdasarkan perintah yang dikirim lewat serial port dan sebaliknya akan mengirimkan data ke serial port berdasarkan penekanan layar touchscreen oleh operator.<\/p>\n<p>Di sini Arduino Uno berfungsi sebagai bagian dari HMI, yaitu membaca perintah-perintah yang dikirim oleh touchscreen LCD dan menampilkan perintah-perintah dari serial port ke layar LCD. Serial port dari Arduino Uno ini nantinya akan dihubungkan ke bagian main controller berupa mikrokontroler \/ arduino lain ataupun PLC yang berfungsi sebagai mesin yang akan dihubungkan dengan operator.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1132\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd.jpg\" alt=\"3.5 inch TFT Touchscreen LCD\" width=\"900\" height=\"900\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd.jpg 900w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd-300x300.jpg 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd-100x100.jpg 100w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd-600x600.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd-150x150.jpg 150w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/3.5-inch-toucscreen-lcd-768x768.jpg 768w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Dengan keterbatasan memori yang dimiliki Arduino Uno maka kali ini saya hanya membuat sebuah HMI sederhana saja yang hanya menampilkan layar keypad 4&#215;3 dan menampilkan pesan yang diterima oleh serial port ke layar LCD dalam bentuk teks. Namun dengan menggunakan aplikasi pada artikel ini anda dapat memiliki sebuah keypad touchscreen yang selain dapat mengirimkan output ke mikrokontroler utama juga dapat sekaligus sebagai penampil pesan di layarnya.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1134\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-1.jpg\" alt=\"flowchart hmi arduino\" width=\"760\" height=\"585\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-1.jpg 760w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-1-600x462.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-1-300x231.jpg 300w\" sizes=\"(max-width: 760px) 100vw, 760px\" \/><\/p>\n<p>Gambar di atas ini adalah merupakan garis besar flowchart dari HMI yang kita buat. Di sini terlihat ada 2 proses utama yaitu proses dari operator ke mesin yang dilakukan dengan mendeteksi penekanan touchscreen dan mengirimkan ke port serial dan proses kedua adalah dari mesin ke operator yaitu dengan menterjemahkan perintah mesin yang dikirim lewat serial port dan ditampilkan di layar LCD.<\/p>\n<p>Flowchart dibawah ini akan menjelaskan alur program pada bagian perintah dari master dan respon pada layar LCD atau bagian yang menampilkan respon mesin ke operator lewat layar LCD.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1135\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin.jpg\" alt=\"flowchart perintah ke mesin\" width=\"1592\" height=\"1533\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin.jpg 1592w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin-600x578.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin-300x289.jpg 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin-1024x986.jpg 1024w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin-768x740.jpg 768w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-perintah-ke-mesin-1536x1479.jpg 1536w\" sizes=\"(max-width: 1592px) 100vw, 1592px\" \/><\/p>\n<p>&amp;RESTART ini akan menampilkan pesan RESTART di LCD saat data &#8220;&amp;RESTART&#8221; dikirim melalui serial port dan &amp;READY akan menampilkan pesan READY di LCD saat data &#8220;&amp;READY&#8221; dikirim.<\/p>\n<p>&amp;DISPLAYON, saat data &#8220;&amp;DISPLAYON&#8221; diterima di serial port maka tampilan LCD untuk semua tombol-tombol ditampilkan di layar.<\/p>\n<p>&amp;DISPLAYOFF, saat data &#8220;&amp;DISPLAYOFF&#8221; diterima di serial port maka tampilan LCD akan hitam.<\/p>\n<p>&amp;TEXT, bagian ini berfungsi untuk hanya menampilkan pesan yang diterima di port serial saja dan menghapus semua tampilan yang lain dari layar LCD. Oleh karena itu sebelum pesan ditampilkan terlebih dahulu layar dihapus. Kemudian posisi koordinat pesan (sumbu x dan y), ukuran font, warna tulisan dan warna background diset terlebih dahulu baru kemudian pesan ditampilkan<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1142 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino2.png\" alt=\"\" width=\"639\" height=\"329\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino2.png 639w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino2-600x309.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino2-300x154.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/p>\n<p>&amp;SUBMENU, hampir sama dengan &amp;TEXT hanya saja pada bagian ini tidak dilakukan penghapusan layar, jadi tampilan yang sebelumnya sudah ada di layar LCD tidak akan dihapus.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1143 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture4.png\" alt=\"hmi arduino picture4\" width=\"632\" height=\"370\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture4.png 632w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture4-600x351.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture4-300x176.png 300w\" sizes=\"(max-width: 632px) 100vw, 632px\" \/><\/p>\n<p>&amp;DISP, bagian ini berfungsi untuk menampilkan tombol-tombol yang ditentukan. Format datanya adalah sebagai berikut, &amp;DISP[numeric0\/spasi][numeric1\/spasi][numeric2\/spasi][numeric3\/spasi][numeric4\/spasi][numeric5\/spasi][numeric6\/spasi][numeric7\/spasi][numeric8\/spasi][numeric9\/spasi][numeric*\/spasi][numeric#\/spasi][ENTER]. Di sini setiap tombol menempati satu lokasi dalam substring, tombol 0 di substring 4, tombol 1 di substring 5 dst sehingga untuk merespon data tersebut dapat digunakan code berikut<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1136 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/substring.png\" alt=\"hmi-arduino-code\" width=\"329\" height=\"284\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/substring.png 329w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/substring-300x259.png 300w\" sizes=\"(max-width: 329px) 100vw, 329px\" \/><\/p>\n<p>Apabila tombol tidak diinginkan tampil maka dapat dituliskan string spasi dan apabila tombol ingin ditampilkan maka dituliskan nilai numeric dari tombol. Contoh apabila kita ingin menampilkan hanya tombol 1,4 dan * maka perintah yang dikirim adalah &amp;DISP 1\u00a0 4\u00a0 \u00a0 \u00a0*[ENTER]<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1137 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/disp.png\" alt=\"perintah-hmi-arduino\" width=\"352\" height=\"372\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/disp.png 352w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/disp-284x300.png 284w\" sizes=\"(max-width: 352px) 100vw, 352px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1138 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture1-e1700038481711.jpg\" alt=\"hmi arduino picture\" width=\"681\" height=\"741\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture1-e1700038481711.jpg 681w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture1-e1700038481711-600x653.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-picture1-e1700038481711-276x300.jpg 276w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><\/p>\n<p>Fungsi ini digunakan apabila kita ingin memandu operator bahwa hanya tombol-tombol yang tampil ini saja yang harus ditekan sebagai pilihan menu.<\/p>\n<p>&amp;LOCK berfungsi untuk mengunci tombol sehingga tidak ada data yang dikirim ke serial port saat layar disentuh. Hal ini biasanya kita gunakan untuk memastikan operator tidak dapat menekan tombol apapun saat mesin sedang sibuk dan tidak dapat diinterupsi.<\/p>\n<p>&amp;UNLOCK berfungsi untuk membuka penguncian tombol sehingga operator dapat kembali bebas melakukan penekanan tombol.<\/p>\n<p>&amp;WAKEUP berfungsi untuk mengubah nilai status wake up menjadi true yang artinya LCD baru saja di &#8220;wake up&#8221; kan dengan penekanan tombol touchscreen di mana sebelumnya tombol dalam keadaan OFF. Pada kondisi ini, maka tidak diperkenankan ada data serial yang terkirim karena penekanan tombol hanya berfungsi untuk menampilkan lagi layar yang sebelumnya OFF<\/p>\n<p>&amp;SLEEP berfungsi sebaliknya yaitu mengubah status wake up menjadi false yang artinya nanti pada setiap penekanan tombol, data serial akan dikirimkan karena asumsi bahwa LCD sudah wake up sejak awal dan semua penekanan di layar tujuannya hanyalah mengirimkan data tombol ke serial port.<\/p>\n<p>&amp;MENU berfungsi untuk menampilkan maksimal 10 baris pesan (bisa kurang dari itu) sekaligus di lokasi yang diawali dari koordinat x,y dan akan bertambah 50 pixel setiap baris pada sumbu y nya. Contoh &amp;MENU(50,0,3,65535,0,1. DELTA,2. ELECTRONIC,3. DESIGN,4. SERVICE,5. RUKO,6. KLAMPIS,7. SQUARE,8. SURABAYA,9. 60117,10. INDONESIA )[ENTER]<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1139 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino.png\" alt=\"hmi-arduino-picture\" width=\"861\" height=\"181\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino.png 861w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino-600x126.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino-300x63.png 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/perintah-menu-hmi-arduino-768x161.png 768w\" sizes=\"(max-width: 861px) 100vw, 861px\" \/><\/p>\n<p>maka yang tampil pada layar LCD adalah sebagai berikut<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1140\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/WhatsApp-Image-2023-11-15-at-16.16.59-e1700040013353.jpeg\" alt=\"Menu HMI Arduino\" width=\"1024\" height=\"768\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/WhatsApp-Image-2023-11-15-at-16.16.59-e1700040013353.jpeg 1024w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/WhatsApp-Image-2023-11-15-at-16.16.59-e1700040013353-600x450.jpeg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/WhatsApp-Image-2023-11-15-at-16.16.59-e1700040013353-300x225.jpeg 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/WhatsApp-Image-2023-11-15-at-16.16.59-e1700040013353-768x576.jpeg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Format data adalah &amp;MENU([x],[y],[font size],[color],[background color],[text1],[text2],&#8230;..,[text10])[ENTER]. Kita juga bisa hanya menampilkan 2 baris saja contohnya text1 dan text2 dan membiarkan baris2 berikutnya kosong.<\/p>\n<p>Flowchart berikutnya ini adalah alur pada bagian respon saat penekanan tombol pada touchscreen yaitu alur di mana operator memberikan perintah ke mesin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1145\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch.jpg\" alt=\"flowchart hmi arduino\" width=\"1369\" height=\"1509\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch.jpg 1369w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch-600x661.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch-272x300.jpg 272w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch-929x1024.jpg 929w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/flowchart-touch-768x847.jpg 768w\" sizes=\"(max-width: 1369px) 100vw, 1369px\" \/><\/p>\n<p>Pada saat terjadi penekanan tombol terlebih dahulu diperiksa apakah status lock nya true. Status lock ini merupakan indikasi bahwa tombol terkunci atau tidak. Terkunci bila kondisinya true sehingga semua penekanan tombol tidak akan direspon. Pada kondisi ini alur program akan skip semua proses dan return. Kemudian selanjutnya dilakukan pemeriksaan akan status button, kondisi false bila tombol sebelumnya tidak aktif sehingga program akan menampilkan semua tombol di mana di sini akan terlihat semua tombol muncul saat layar disentuh. Status wake up = true yang merupakan indikasi bahwa saat ini sedang proses wake up layar LCD dari blank menjadi tampilan numeric keypad. Kemudian juga status button diset true yaitu di mana semua tombol aktif.<\/p>\n<p>Namun apabila sebelumnya tombol sudah dalam keadaan aktif maka ini merupakan indikasi bahwa bukan proses wake up (dari layar off menjadi numeric) yang sedang berjalan melainkan penekanan tombol biasa di mana program harus segera mengirimkan data numeric ke serial port yang selanjutnya akan diterima oleh mesin yang terhubung ke serial port tersebut.<\/p>\n<p><strong>Penjelasan Sketch \/ Source Code<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1146\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1.png\" alt=\"sketch hmi arduino\" width=\"1089\" height=\"586\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1.png 1089w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1-600x323.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1-300x161.png 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1-1024x551.png 1024w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch1-768x413.png 768w\" sizes=\"(max-width: 1089px) 100vw, 1089px\" \/><\/p>\n<p>Program diawali dengan menentukan library-library yang digunakan, kemudian nilai minimum dan maksimum penekanan tombol lalu dilanjutkan dengan deklarasi variabel-variabel yang akan digunakan. Karena di sini kita akan menggunakan 12 tombol dengan susunan 4 baris 3 kolom maka selanjutnya didefinisikan dahulu ke 12 tombol tersebut<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1147 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch2-hmi-arduino.png\" alt=\"sketch hmi arduino\" width=\"713\" height=\"552\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch2-hmi-arduino.png 713w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch2-hmi-arduino-600x465.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch2-hmi-arduino-300x232.png 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/p>\n<p>Lalu di bagian setup diawali dengan inisialisasi LCD, orientasi dan tombol-tombol. Untuk variabel statusbutton diset false yang artinya tidak ada tombol yang ditampilkan dan status lock juga false yang artinya tombol-tombol tidak dikunci alias dapat merespon bila disentuh.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1149 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-inisial-button.png\" alt=\"hmi-arduino-inisial-button\" width=\"717\" height=\"431\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-inisial-button.png 717w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-inisial-button-600x361.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-inisial-button-300x180.png 300w\" sizes=\"(max-width: 717px) 100vw, 717px\" \/><\/p>\n<p>Pada bagian inisial button ini kita dapat mengatur 12 tombol keypad berupa posisi koordinat tombol, lebar dan tinggi tombol, warna border, background dan foreground, teks yang tertulis di tombol dan juga ukuran font.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1150 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch3-hmi-arduino.png\" alt=\"hmi-arduino-sketch\" width=\"589\" height=\"136\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch3-hmi-arduino.png 589w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch3-hmi-arduino-300x69.png 300w\" sizes=\"(max-width: 589px) 100vw, 589px\" \/><\/p>\n<p>Kemudian selanjutnya pada saat ada kondisi di mana tombol 1 ditekan\u00a0 dan kondisi status lock tidak dalam keadaan terkunci yang artinya tombol tidak terkunci, maka warna tombol akan diubah menjadi warna hitam yang merupakan indikasi bahwa tombol tertekan. Fungsi mengirimkan data tombol ke port serial segera dipanggil. Namun fungsi ini belum langsung mengirimkan data ke port serial, melainkan ada variabel-variabel status yang harus dicek terlebih dahulu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1151 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch4-hmi-arduino.png\" alt=\"hmi arduino sketch\" width=\"589\" height=\"169\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch4-hmi-arduino.png 589w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch4-hmi-arduino-300x86.png 300w\" sizes=\"(max-width: 589px) 100vw, 589px\" \/><\/p>\n<p>Pada bagian di atas ini tampak sebelum mengirimkan data tombol ke port serial terlebih dahulu dicek apakah status wakeup false atau true. Status wakeup true apabila sebelumnya display off dan terjadi penekanan tombol sehingga display tombol hanya dinyalakan saja tanpa mengirimkan data apapun ke serial. Namun bila status wakeup false yang artinya kondisi sudah wake up dimana display tombol-tombol sudah nyala maka tidak perlu lagi mengirimkan data tombol ke port serial.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1152 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch5-hmi-arduino.png\" alt=\"sketch5-hmi-arduino\" width=\"552\" height=\"207\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch5-hmi-arduino.png 552w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch5-hmi-arduino-300x113.png 300w\" sizes=\"(max-width: 552px) 100vw, 552px\" \/><\/p>\n<p>Untuk mengetahui status wake up true atau false dilakukan oleh fungsi cekdisplaybutton() yang dipanggil terlebih dahulu sebelumnya. Di sini akan dicek apakah status tombol false atau true. Apabila status tombol false yang artinya belum ditampilkan maka akan dipanggil fungsi untuk menampilkan tombol-tombol di layar dan status wake up maupun status button di set true lalu return ke fungsi pemanggil.<\/p>\n<p>Namun apabila status tombol true, yang artinya tombol sudah tampil maka tidak perlu lagi memanggil fungsi penampil tombol dan status wake up diset false karena dianggap proses wake up sudah selesai.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1153 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch6-hmi-arduino.png\" alt=\"sketch6-hmi-arduino\" width=\"535\" height=\"86\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch6-hmi-arduino.png 535w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch6-hmi-arduino-300x48.png 300w\" sizes=\"(max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Pada saat tombol diangkat dan kondisi tombol tidak terkunci maka akan dipanggil fungsi menampilkan warna putih lagi pada tombol untuk menghilangkan warna hitam yang merupakan ekspresi tombol tertekan.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1154 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch7-hmi-arduino.png\" alt=\"sketch7-hmi-arduino\" width=\"717\" height=\"448\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch7-hmi-arduino.png 717w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch7-hmi-arduino-600x375.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch7-hmi-arduino-300x187.png 300w\" sizes=\"(max-width: 717px) 100vw, 717px\" \/><\/p>\n<p>Bagian di atas ini berfungsi untuk menampilkan pesan RESTART dan READY saat perintah &amp;RESTART dan &amp;READY dikirimkan. Pesan RESTART dengan background layar biru, di koordinat 40,200 dengan ukuran font 6, warna tulisan putih dan background tulisan hitam akan tampil saat &amp;RESTART diterima dan selanjutnya menunggu adanya &amp;READY diterima. Fungsi ini bisa digunakan apabila mikrokontroler utama sedang Restart dan tidak ingin diganggu dengan perintah-perintah dari HMI dulu sampai mikrokontroler utama mengirimkan &amp;READY dan tulisan READY akan ditampilkan selama satu detik kemudian dilanjutkan dengan layar berubah menjadi gelap.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1155 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch8-hmi-arduino.png\" alt=\"sketch8-hmi-arduino\" width=\"757\" height=\"218\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch8-hmi-arduino.png 757w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch8-hmi-arduino-600x173.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch8-hmi-arduino-300x86.png 300w\" sizes=\"(max-width: 757px) 100vw, 757px\" \/><\/p>\n<p>Bagian ini digunakan untuk menampilkan dan mematikan tombol-tombol saja dengan mengirimkan perintah &amp;DISPLAYON dan &amp;DISPLAYOFF<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1156 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch9-hmi-arduino.png\" alt=\"sketch9-hmi-arduino\" width=\"664\" height=\"306\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch9-hmi-arduino.png 664w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch9-hmi-arduino-600x277.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch9-hmi-arduino-300x138.png 300w\" sizes=\"(max-width: 664px) 100vw, 664px\" \/><\/p>\n<p>Pada bagian ini berfungsi untuk menerima perintah &amp;TEXT, perintah ini akan diikuti ([sumbuX],[sumbuY],[fontSize],[textcolor],[background text color],[isi pesan]) dan tampilan sebelumnya akan dihapus sehingga hanya text ini saja yang tampil.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1158 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch10-hmi-arduino-1.png\" alt=\"sketch10-hmi-arduino\" width=\"535\" height=\"293\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch10-hmi-arduino-1.png 535w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch10-hmi-arduino-1-300x164.png 300w\" sizes=\"(max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Untuk perintah SUBMENU sama dengan perintah TEXT, hanya saja di sini tampilan yang sebelumnya tidak dihapus sehingga tidak ada perintah tft.fillScreen(color). Ini digunakan untuk menampilkan tulisan-tulisan tambahan tanpa menghapus tulisan yang sebelumnya di layar.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1159 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch11-hmi-arduino.png\" alt=\"sketch11-hmi-arduino\" width=\"794\" height=\"682\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch11-hmi-arduino.png 794w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch11-hmi-arduino-600x515.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch11-hmi-arduino-300x258.png 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch11-hmi-arduino-768x660.png 768w\" sizes=\"(max-width: 794px) 100vw, 794px\" \/><\/p>\n<p>Pada bagian perintah MENU sama dengan perintah TEXT di mana koordinat X, Y, ukuran font, warna tulisan dan warna background tulisan diatur terlebih dahulu melalui port serial kemudian langsung dilanjutkan dengan 10 baris pesan yang dipisahkan dengan tanda &#8216;,&#8217;. Namun ini tidak harus 10 pesan, bisa kurang dari itu dan nantinya hanya baris yang dikirim tersebut yang akan tampil secara berurutan. Contohnya apabila hanya ada pesan di baris 1,2 dan 3 maka hanya baris tersebut yang ditampilkan sedangkan 4 sampai 10 tidak. Setiap baris akan ditampilkan dalam sumbu y+50 untuk baris 2, y+100 untuk baris 3 dan sterusnya hingga y+450.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1163 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch12-hmi-arduino.png\" alt=\"sketch12-hmi-arduino\" width=\"511\" height=\"390\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch12-hmi-arduino.png 511w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch12-hmi-arduino-300x229.png 300w\" sizes=\"(max-width: 511px) 100vw, 511px\" \/><\/p>\n<p>Untuk perintah DISP telah dijelaskan di bagian atas sebelumnya, berfungsi untuk hanya menampilkan tombol-tombol tertentu saja. Contohnya apabila tombol 0 diterima pada karakter ke 4 maka tombol 0 akan ditampilkan dan status button di set true.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1164 aligncenter\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch13-hmi-arduino.png\" alt=\"sketch13-hmi-arduino\" width=\"621\" height=\"309\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch13-hmi-arduino.png 621w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch13-hmi-arduino-600x299.png 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/sketch13-hmi-arduino-300x149.png 300w\" sizes=\"(max-width: 621px) 100vw, 621px\" \/><\/p>\n<p>Source code lengkap dapat didownload di <a href=\"https:\/\/drive.google.com\/file\/d\/1iBTd93iHuFJtd65WqA9HiRxkpJrNyOF4\/view?usp=sharing\">link berikut<\/a><\/p>\n<p>Anda juga dapat memperoleh produk ini yang telah terisi source code di<a href=\"https:\/\/www.tokopedia.com\/delta-electronic\/hmi-arduino-human-machine-interface-tft-lcd-arduino-uno\"> link<\/a> berikut<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1167\" src=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-board2.jpg\" alt=\"hmi-arduino-board\" width=\"450\" height=\"259\" srcset=\"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-board2.jpg 1024w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-board2-600x345.jpg 600w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-board2-300x173.jpg 300w, https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-content\/uploads\/2023\/11\/hmi-arduino-board2-768x442.jpg 768w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><iframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/6DzG98oLcmc?si=WoT-aUrbYb467_YU\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><br \/>\n<strong>DELTA ELECTRONIC<\/strong><\/p>\n<p><strong>Paulus Andi Nalwan, ST<\/strong><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apa itu Human Machine Interface? Human Machine Interface atau biasa disingkat HMI adalah merupakan layar atau dashboard yang merupakan penghubung antara manusia dan mesin. Melalui layar tersebut manusia sebagai operator dapat melihat kondisi yang terjadi pada mesin dan juga sekaligus mengirimkan perintah-perintah untuk mengoperasikan mesin. Bagaimana membuat HMI dengan Arduino Uno? Prinsip kerja HMI sebetulnya [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119],"tags":[212,210,213,211],"class_list":["post-1129","post","type-post","status-publish","format-standard","hentry","category-aplikasi-arduino","tag-arduino-uno","tag-hmi","tag-human-machine-interface","tag-tft-lcd"],"_links":{"self":[{"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/posts\/1129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/comments?post=1129"}],"version-history":[{"count":0,"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/posts\/1129\/revisions"}],"wp:attachment":[{"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/media?parent=1129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/categories?post=1129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/delta-electronic.com\/Design\/Hardwares\/wp-json\/wp\/v2\/tags?post=1129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}