ITEAD Meluncurkan Lini Baru yang Ditingkatkan untuk Panel HMI Berikutnya Perwakilan perusahaan memberi saya salinan garis ini untuk mengintegrasikan fitur panel baru ke dalam program FLProg. Di versi 2.2, ini diterapkan. Dalam pelajaran ini, kami akan mempertimbangkan fitur-fitur baru panel, dan misalnya, membuat pengatur waktu yang dapat diprogram untuk lima saluran.Untuk memulai, pertimbangkan karakteristik panel. Garis Enhanced memiliki jam real-time built-in, 1024 byte memori non-volatile, 8 input / output digital. Masing-masing dapat dikonfigurasi sebagai input atau sebagai output. Empat di antaranya (dari 4 hingga 7) dapat dikonfigurasi sebagai output PWM.
Selain garis Enhanced HMI Nextion itu sendiri, Papan Ekspansi juga dirilis
dan memiliki kontrol dan tampilan yang melekat pada panel GPIO.
Peluang seperti itu memungkinkan pembuatan perangkat yang hampir lengkap berdasarkan panel ini. Dalam pelajaran ini, saya akan fokus pada pemrograman panel itu sendiri, karena ada sedikit informasi tentang subjek ini, tetapi ada banyak jebakan. Tautan ke proyek untuk program Editor Nextion ada di akhir posting.Awal bekerja dengan Editor Nextion, peluncurannya, pilihan awal pengkodean, jenis panel dibahas dalam posting saya sebelumnya tyts , tyts , dan tyts . Karena itu, kami tidak akan memikirkan hal ini.Program ini terdiri dari tiga layar panel Home ( Main ), Mengatur timer ( SetTimer yang ) dan Pengaturan Waktu ( SetCurrentTime ).Mari kita mulai dari layar utama.
Layar ini menampilkan pengaturan untuk menghidupkan, mematikan, status setiap saluran, tombol untuk mengubah status saluran, dan tombol untuk beralih ke layar untuk mengatur waktu saat ini. Ketika Anda mengklik teks yang menampilkan pengaturan saluran, Anda pergi ke pengaturan saluran ini. Selain itu, pada layar ini ada empat tombol tersembunyi yang diperlukan untuk mengikat ke tombol fisik yang terletak di Papan Ekspansi. .
Pertimbangkan kode yang terdapat di layar utama.Acara Preinitialilize Event (layar disebut sebelum inisialisasi).cfgpio 0,1,b0
cfgpio 2,1,b8
cfgpio 3,1,b7
cfgpio 4,1,b6
cfgpio 5,1,b9
SelTim.val=1
Di sini kita mengikat tombol fisik yang terletak di Papan Ekspansi ke tombol virtual di layar.Lebih lanjut tentang perintah cfgpio - mengatur input dan output fisik panel (hanya panel Enhanced yang memiliki perintah ini).:
cfgpio id,state,cmp:
id: / (0-7)
state: (0-4)
cmp: ( 1, — 0).
.
cfgpio .
:
| | |
---|
0 | + 5 ( 50 ). pio0 – pio7 ( 0- 7 / | cfgpio 0,0,0 / GPIO0 , +5. : n0.val = pio0
|
1 | + 5 ( 50 ) . pio0 – pio7 ( 0- 7 / ). . 1 , . 0 . Preinitialilize Event , , . | cfgpio 2,1,b0 / GPIO2 , +5 b0. , b0 , – .
|
2 | . pio0 – pio7 ( 0- 7 / ). | cfgpio 1,2,0 / GPIO1 . : pio1=1
|
3 | . 4-7 /. 0 100. – 50. pwm4- pwm7 ( 4- 7 / ). pwmf . 1 65536. – 1000. | cfgpio 4,3,0 / GPIO4 . : pwm4=20 – 2000 . pwmf=2000
|
4 | . pio0 – pio7 ( 0- 7 / ). | cfgpio 5,4,0 / GPIO5 . : pio5=1
|
Acara Sentuh Tekan acara tombol B0 - «Set waktu»page 2
Ini semua cukup jelasacara Sentuh Tekan acara tombol b1 - «Beralih keadaan saluran pertama"repo TempB.val,0
if(TempB.val==1)
{
if(tsr1.val==1)
{
tsr1.val=2
}else
{
tsr1.val=1
}
}
Pertama kita membaca aktivitas saluran dari EEPROM. Setiap saluran dapat dimatikan dari bekerja pada halaman pengaturan saluran. Perintah repo "membaca dari EEPROM" akan dibahas lebih rinci di bawah ini. Kemudian, jika saluran aktif, alihkan kondisinya. Keadaan saluran saat ini disimpan dalam variabel tsr1 - tsr5 untuk masing-masing saluran.Fitur dalam sintaks ekspresi if elseif(TempB.val==1) – .
. .
}else
, . , else , .
Untuk tombol yang tersisa untuk mengubah status saluran ( b2 - b5 ), kode Acara Tekan Pers adalah sama. Hanya alamat di EEPROM dan variabel status saluran diubah.Acara Sentuh Tekan acara tombol b6 - «Pilih saluran sebelumnya ". Tombolnya tidak terlihat. Mode rendering ( sta ) - memotong gambar (gambar yang dipotong). Sebagai gambar dalam keadaan tidak ditekan ( picc ) dan keadaan ditekan ( picc2 ) gambar latar belakang jendela dipilih. Karena ini, tombol tidak ditampilkan, tetapi berfungsi. Tombol pada layar ini terkait dengan tombol fisik Atas (IO4) pada Papan Ekspansi .if(SelTim.val<2)
{
SelTim.val=5
}else
{
SelTim.val=SelTim.val-1
}
Variabel SelTim berisi jumlah timer yang saat ini dipilih. Segala sesuatu yang lain, saya pikir, jelas dari komentar. Acara Sentuh Tekan acara tombol b7 - «untuk memilih saluran berikutnya ". Tombolnya tidak terlihat. Tombol pada layar ini terkait dengan tombol fisik Turun (IO3) pada Papan Ekspansi . if(SelTim.val>4)
{
SelTim.val=1
}else
{
SelTim.val=SelTim.val+1
}
Di sini saya pikir hal yang sama sudah jelas.Acara Sentuh Tekan acara tombol b8 - «Edit saluran yang dipilih ". Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kanan (IO2) pada Papan Ekspansi .if(SelTim.val==1)
{
click TimerText1,1
}
if(SelTim.val==2)
{
click TimerText2,1
}
if(SelTim.val==3)
{
click TimerText3,1
}
if(SelTim.val==4)
{
click TimerText4,1
}
if(SelTim.val==5)
{
click TimerText5,1
}
Klik detail perintah - mensimulasikan mengklik atau melepaskan elemen:
click cmpID,event
:
cmpID: ID .
event: 0 – ; 1 –
. click .
Acara Sentuh Tekan acara tombol B9 - «Beralih status saluran yang dipilih ". Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kiri (IO5) pada Papan Ekspansi .if(SelTim.val==1)
{
click b1,1
}
if(SelTim.val==2)
{
click b2,1
}
if(SelTim.val==3)
{
click b3,1
}
if(SelTim.val==4)
{
click b4,1
}
if(SelTim.val==5)
{
click b5,1
}
Acara Sentuh Tekan acara dari kotak teks TimerText1 - «channel Tampilan Status 1" .sys0=1
sys1=1
page 1
Untuk bidang teks lainnya ( TimerText2 - TimerText5 ), kode acara Press Press adalah sama. Hanya dalam variabel sistem sys0 adalah nomor saluran yang sesuai dimasukkan.sys0, sys1, sys2 adalah variabel numerik global yang tidak perlu dibuat atau didefinisikan. Mereka dapat digunakan di layar apa saja. Nilai default untuk ketiga variabel ini adalah 0, mereka dapat dibaca dan ditulis, kisaran nilainya adalah 0 ~ 4294967295. Disarankan untuk meneruskan nilai antar halaman.Timer tm0 diatur pada layar ini . Timer ini menyala setiap 200 milidetik (parameter tim), saat halaman aktif. Kode untuk memantau status penghitung waktu dan menggambar ulang komponen pada halaman terletak di Acara Timer dari timer ini.Kode di bawah spoler
temp.val=rtc2
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=tempText.txt+TT1.txt
temp.val=rtc1
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt
temp.val=rtc0
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+"-"+TT1.txt
temp.val=rtc3
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt
temp.val=rtc4
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt
temp.val=rtc5
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt
for(i.val=0;i.val<5;i.val++)
{
temp.val=i.val*52
temp2.val=temp.val+4
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts1.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc2)
{
ts1.val=1
}else
{
ts1.val=2
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=Var0txt.txt+tempText.txt+"-"
temp2.val=temp.val+8
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts2.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc1)
{
ts2.val=1
}else
{
ts2.val=2
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-"
temp2.val=temp.val+12
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts3.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc0)
{
ts3.val=1
}else
{
ts3.val=0
}
cov temp1.val,tempText.txt,0
}
TT1.txt=TT1.txt+tempText.txt+" "
temp2.val=temp.val+16
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts4.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc3)
{
ts4.val=1
}else
{
ts4.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"
temp2.val=temp.val+20
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts5.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc4)
{
ts5.val=1
}else
{
ts5.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"
temp2.val=temp.val+24
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts6.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc5)
{
ts6.val=1
}else
{
ts6.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" / "
temp2.val=temp.val+28
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts7.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc2)
{
ts7.val=1
}else
{
ts7.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-"
temp2.val=temp.val+32
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts8.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc1)
{
ts8.val=1
}else
{
ts8.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-"
temp2.val=temp.val+36
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts9.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc0)
{
ts9.val=1
}else
{
ts9.val=0
}
cov temp1.val,tempText.txt,0
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" "
temp2.val=temp.val+40
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts10.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc3)
{
ts10.val=1
}else
{
ts10.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"
temp2.val=temp.val+44
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts11.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc4)
{
ts11.val=1
}else
{
ts11.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"
temp2.val=temp.val+48
Var0txt.txt=""
repo temp1.val,temp2.val
if(temp1.val==10000)
{
ts12.val=1
tempText.txt="X"
}else
{
if(temp1.val==rtc5)
{
ts12.val=1
}else
{
ts12.val=0
}
cov temp1.val,tempText.txt,0
if(temp1.val<10)
{
Var0txt.txt="0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt
repo temp1.val,temp.val
tsrOn.val=0
if(temp1.val==1)
{
if(ts1.val==1)
{
if(ts2.val==1)
{
if(ts3.val==1)
{
if(ts4.val==1)
{
if(ts5.val==1)
{
if(ts6.val==1)
{
tsrOn.val=1
}
}
}
}
}
}
}
tsrOf.val=0
if(temp1.val==1)
{
if(ts7.val==1)
{
if(ts8.val==1)
{
if(ts9.val==1)
{
if(ts10.val==1)
{
if(ts11.val==1)
{
if(ts12.val==1)
{
tsrOf.val=1
}
}
}
}
}
}
}else
{
tsrOf.val=1
}
if(i.val==0)
{
if(tsr1.val==1)
{
if(tsrOf.val==1)
{
tsr1.val=2
}
}else
{
if(tsrOn.val==1)
{
tsr1.val=1
}
}
if(tsr1.val==1)
{
TimerText1.pco=63488
}else
{
if(temp1.val==1)
{
TimerText1.pco=65504
}else
{
TimerText1.pco=50712
}
}
TimerText1.txt=TT1.txt
}
if(i.val==1)
{
if(tsr2.val==1)
{
if(tsrOf.val==1)
{
tsr2.val=2
}
}else
{
if(tsrOn.val==1)
{
tsr2.val=1
}
}
if(tsr2.val==1)
{
TimerText2.pco=63488
}else
{
if(temp1.val==1)
{
TimerText2.pco=65504
}else
{
TimerText2.pco=50712
}
}
TimerText2.txt=TT1.txt
}
if(i.val==2)
{
if(tsr3.val==1)
{
if(tsrOf.val==1)
{
tsr3.val=2
}
}else
{
if(tsrOn.val==1)
{
tsr3.val=1
}
}
if(tsr3.val==1)
{
TimerText3.pco=63488
}else
{
if(temp1.val==1)
{
TimerText3.pco=65504
}else
{
TimerText3.pco=50712
}
}
TimerText3.txt=TT1.txt
}
if(i.val==3)
{
if(tsr4.val==1)
{
if(tsrOf.val==1)
{
tsr4.val=2
}
}else
{
if(tsrOn.val==1)
{
tsr4.val=1
}
}
if(tsr4.val==1)
{
TimerText4.pco=63488
}else
{
if(temp1.val==1)
{
TimerText4.pco=65504
}else
{
TimerText4.pco=50712
}
}
TimerText4.txt=TT1.txt
}
if(i.val==4)
{
if(tsr5.val==1)
{
if(tsrOf.val==1)
{
tsr5.val=2
}
}else
{
if(tsrOn.val==1)
{
tsr5.val=1
}
}
if(tsr5.val==1)
{
TimerText5.pco=63488
}else
{
if(temp1.val==1)
{
TimerText5.pco=65504
}else
{
TimerText5.pco=50712
}
}
TimerText5.txt=TT1.txt
}
}
if(SelTim.val==1)
{
b1.txt="+"
}else
{
b1.txt=""
}
if(SelTim.val==2)
{
b2.txt="+"
}else
{
b2.txt=""
}
if(SelTim.val==3)
{
b3.txt="+"
}else
{
b3.txt=""
}
if(SelTim.val==4)
{
b4.txt="+"
}else
{
b4.txt=""
}
if(SelTim.val==5)
{
b5.txt="+"
}else
{
b5.txt=""
}
Fitur dalam sintaks untuk ekspresifor(n0.val=0; n0.val<100; n0.val++) — .
. .
Baca lebih lanjut tentang perintah cov - konversi antara data string dan numerik.:
cov att1,att2,lenth
:
att1:
att2:
lenth: ( 0 – )
:
cov number.val,text.txt,0
number text.
cov text.txt,number.val,5
text.
. cov .
Pertimbangkan lokasi data di panel EEPROM. Setiap saluran dialokasikan 52 byte. Untuk setiap nilai - 4 byte.Alamat EEPROM Mulai offset = (nomor saluran mulai dari 0) * 52
| Nilai |
---|
Mulai offset | Aktivitas saluran (0 - saluran dinonaktifkan, 1 - saluran diaktifkan) |
Mulai offset + 4 | Hari pemasukan saluran. Jika tidak diperhitungkan - 10.000 |
Mulai offset + 8 | Bulan pemasukan saluran. Jika tidak diperhitungkan - 10.000 |
Mulai offset + 12 | . — 10000 |
+ 16 | . — 10000 |
+ 20 | . -10000 |
+ 24 | . – 10000 |
+ 28 | . — 10000 |
+ 32 | . – 10000 |
+ 36 | . -10000 |
+ 40 | . -10000 |
+ 44 | . -10000 |
+ 48 | Saluran mati kedua. Jika tidak diperhitungkan -10000 |
Dari layar utama telah selesai, langkah ke layar, pengaturan waktu ( yang SetTimer ID = 1 )
Acara Preinitialilize Event (layar disebut sebelum inisialisasi).cfgpio 0,1,b2
cfgpio 1,1,BYE
cfgpio 2,1,b0
cfgpio 3,1,BYM
cfgpio 4,1,BYP
cfgpio 5,1,b1
StAddr.val=sys0-1
StAddr.val=StAddr.val*52
repo Enable.val,StAddr.val
Di sini kita mendefinisikan kembali pengikatan tombol fisik yang terletak di Papan Ekspansi dengan kebutuhan layar ini, dan pra-baca data.Acara Sentuh Tekan acara tombol B0 - «Pergi ke kolom berikutnya ". Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kanan (IO2) pada Papan Ekspansi .if(sys1>11)
{
sys1=1
}else
{
sys1=sys1+1
}
Acara Sentuh Tekan acara tombol b1 - «Pergi ke bidang sebelumnya ". Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kiri (IO5) pada Papan Ekspansi .if(sys1<2)
{
sys1=12
}else
{
sys1=sys1-1
}
Acara Sentuh Tekan acara tombol b2 - "Aktifkan / Nonaktifkan saluran" atau "Exit" (hold 2 detik). Tombolnya tidak terlihat. Tombol pada layar ini terkait dengan tombol fisik Esc (IO0) pada Papan Ekspansi.tm1.en=1
Di sini kita memulai timer bantu. Jika Anda menahan tombol fisik Esc (IO0) pada Papan Ekspansi selama 2 detik (properti tim timer), timer akan memicu (panggil Event Timer dari timer tm1 ), jika Anda melepaskan tombol sebelumnya, Acara Rilis Sentuh tombol b2 akan dinaikkantm1.en=0
if(Enable.val==1)
{
Enable.val=0
}else
{
Enable.val=1
}
Acara Timer acara Timer TM1 click b11,1 // b11 ("")
Acara Sentuh Tekan acara tombol yang BYE - «Aktifkan / Nonaktifkan Registry pada operasi" dari bidang yang dipilih.if(sys1==1)
{
temp2.val=rtc2
}
if(sys1==2)
{
temp2.val=rtc1
}
if(sys1==3)
{
temp2.val=rtc0
}
if(sys1==4)
{
temp2.val=rtc3
}
if(sys1==5)
{
temp2.val=rtc4
}
if(sys1==6)
{
temp2.val=rtc5
}
if(sys1==7)
{
temp2.val=rtc2
}
if(sys1==8)
{
temp2.val=rtc1
}
if(sys1==9)
{
temp2.val=rtc0
}
if(sys1==10)
{
temp2.val=rtc3
}
if(sys1==11)
{
temp2.val=rtc4
}
if(sys1==12)
{
temp2.val=rtc5
}
temp3.val=sys1*4
temp.val=StAddr.val+temp3.val
repo temp1.val,temp.val
if(temp1.val==10000)
{
temp1.val=temp2.val
}else
{
temp1.val=10000
}
wepo temp1.val,temp.val
Baca lebih lanjut tentang perintah wepo - tulis ke EEPROM dan baca-ulang dari EEPROM (hanya panel yang disempurnakan yang memiliki perintah ini).wepo
:
wepo att,add
:
att:
add: EEPROM
:
wepo number.val,10
number EEPROM 10. EEPROM 0. . wepo .
repo
:
repo att,add
:
att:
add: EEPROM
:
repo number.val,10
number EEPROM , 10. , 4 , . – txt_maxl att +1
. repo .
Acara Sentuh Tekan acara tombol BYP - «Tambahkan 1 ke kolom yang dipilih ".if(sys1==1)
{
temp2.val=31
}
if(sys1==2)
{
temp2.val=12
}
if(sys1==3)
{
temp2.val=9999
}
if(sys1==4)
{
temp2.val=23
}
if(sys1==5)
{
temp2.val=59
}
if(sys1==6)
{
temp2.val=59
}
if(sys1==7)
{
temp2.val=31
}
if(sys1==8)
{
temp2.val=12
}
if(sys1==9)
{
temp2.val=9999
}
if(sys1==10)
{
temp2.val=23
}
if(sys1==11)
{
temp2.val=59
}
if(sys1==12)
{
temp2.val=59
}
temp3.val=sys1*4
temp.val=StAddr.val+temp3.val
repo temp1.val,temp.val
if(temp1.val!=10000)
{
if(temp1.val!=temp2.val)
{
temp1.val=temp1.val+1
wepo temp1.val,temp.val
}
}
Acara Sentuh Tekan acara tombol BYM - «Kurangi 1 dari bidang yang dipilih ".temp2.val=0
if(sys1==1)
{
temp2.val=1
}
if(sys1==2)
{
temp2.val=1
}
if(sys1==3)
{
temp2.val=2016
}
if(sys1==7)
{
temp2.val=1
}
if(sys1==8)
{
temp2.val=1
}
if(sys1==9)
{
temp2.val=2016
}
temp3.val=sys1*4
temp.val=StAddr.val+temp3.val
repo temp1.val,temp.val
if(temp1.val!=10000)
{
if(temp1.val!=temp2.val)
{
temp1.val=temp1.val-1
wepo temp1.val,temp.val
}
}
Acara Sentuh Tekan acara tombol b11 - «Kembali ke halaman rumah ".wepo Enable.val,StAddr.val
sys0=0
sys1=0
page 0
Acara Touch Press pada kotak teks StartD adalah "Day Set Point Trigger ".sys1=1
Untuk bidang teks dengan pengaturan lain, kode Acara Pers Sentuh adalah sama kecuali untuk nomor bidang.Angka bidang nilai pengaturan adalah:StartMo - 2 ("Bulan dari setpoint operasi").MulaiY - 3 ("Tahun perjalanan setpoint").StartH - 4 ("Jam pengaturan operasi").StartMi - 5 (" Setpoint operasi minute").Mulai - 6 ("Kedua setpoint operasi").StopD - 7 ("Hari pengaturan perjalanan").StopMo - 8 ("Bulan pengaturan perjalanan").StopY - 9 ("Tahun pengaturan perjalanan").StopH - 10 ("Pengaturan jam perjalanan").Stopmi- 11 (“Pengaturan perjalanan menit„).StopS - 12 (“Detik setpoint perjalanan„).Timer tm0 juga diatur pada layar ini dengan periode perjalanan 200 milidetik. Dalam Acara Timer dari timer ini, nilai-nilai bidang pengaturan diperbarui.Kode di bawah spoiler
temp1.val=StAddr.val+4
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==1)
{
vis BYP,0
vis BYM,0
}
StartD.txt="X"
}else
{
if(sys1==1)
{
vis BYP,1
vis BYM,1
}
StartD.txt=tempStr1.txt
}
temp1.val=StAddr.val+8
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==2)
{
vis BYP,0
vis BYM,0
}
StartMo.txt="X"
}else
{
if(sys1==2)
{
vis BYP,1
vis BYM,1
}
StartMo.txt=tempStr1.txt
}
temp1.val=StAddr.val+12
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==3)
{
vis BYP,0
vis BYM,0
}
StartY.txt="X"
}else
{
if(sys1==3)
{
vis BYP,1
vis BYM,1
}
StartY.txt=tempStr1.txt
}
temp1.val=StAddr.val+16
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==4)
{
vis BYP,0
vis BYM,0
}
StartH.txt="X"
}else
{
if(sys1==4)
{
vis BYP,1
vis BYM,1
}
StartH.txt=tempStr1.txt
}
temp1.val=StAddr.val+20
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==5)
{
vis BYP,0
vis BYM,0
}
StartMi.txt="X"
}else
{
if(sys1==5)
{
vis BYP,1
vis BYM,1
}
StartMi.txt=tempStr1.txt
}
temp1.val=StAddr.val+24
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==6)
{
vis BYP,0
vis BYM,0
}
StartS.txt="X"
}else
{
if(sys1==6)
{
vis BYP,1
vis BYM,1
}
StartS.txt=tempStr1.txt
}
temp1.val=StAddr.val+28
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==7)
{
vis BYP,0
vis BYM,0
}
StopD.txt="X"
}else
{
if(sys1==7)
{
vis BYP,1
vis BYM,1
}
StopD.txt=tempStr1.txt
}
temp1.val=StAddr.val+32
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==8)
{
vis BYP,0
vis BYM,0
}
StopMo.txt="X"
}else
{
if(sys1==8)
{
vis BYP,1
vis BYM,1
}
StopMo.txt=tempStr1.txt
}
temp1.val=StAddr.val+36
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==9)
{
vis BYP,0
vis BYM,0
}
StopY.txt="X"
}else
{
if(sys1==9)
{
vis BYP,1
vis BYM,1
}
StopY.txt=tempStr1.txt
}
temp1.val=StAddr.val+40
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==10)
{
vis BYP,0
vis BYM,0
}
StopH.txt="X"
}else
{
if(sys1==10)
{
vis BYP,1
vis BYM,1
}
StopH.txt=tempStr1.txt
}
temp1.val=StAddr.val+44
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==11)
{
vis BYP,0
vis BYM,0
}
StopMi.txt="X"
}else
{
if(sys1==11)
{
vis BYP,1
vis BYM,1
}
StopMi.txt=tempStr1.txt
}
temp1.val=StAddr.val+48
repo temp.val,temp1.val
cov temp.val,tempStr.txt,0
if(temp.val<10)
{
tempStr1.txt="0"+tempStr.txt
}else
{
tempStr1.txt=tempStr.txt
}
if(temp.val==10000)
{
if(sys1==12)
{
vis BYP,0
vis BYM,0
}
StopS.txt="X"
}else
{
if(sys1==12)
{
vis BYP,1
vis BYM,1
}
StopS.txt=tempStr1.txt
}
if(sys1==1)
{
StartD.pco=63488
}else
{
StartD.pco=65535
}
if(sys1==2)
{
StartMo.pco=63488
}else
{
StartMo.pco=65535
}
if(sys1==3)
{
StartY.pco=63488
}else
{
StartY.pco=65535
}
if(sys1==4)
{
StartH.pco=63488
}else
{
StartH.pco=65535
}
if(sys1==5)
{
StartMi.pco=63488
}else
{
StartMi.pco=65535
}
if(sys1==6)
{
StartS.pco=63488
}else
{
StartS.pco=65535
}
if(sys1==7)
{
StopD.pco=63488
}else
{
StopD.pco=65535
}
if(sys1==8)
{
StopMo.pco=63488
}else
{
StopMo.pco=65535
}
if(sys1==9)
{
StopY.pco=63488
}else
{
StopY.pco=65535
}
if(sys1==10)
{
StopH.pco=63488
}else
{
StopH.pco=65535
}
if(sys1==11)
{
StopMi.pco=63488
}else
{
StopMi.pco=65535
}
if(sys1==12)
{
StopS.pco=63488
}else
{
StopS.pco=65535
}
Lebih lanjut tentang perintah vis - mengubah visibilitas elemen:
vis obj,state
:
obj: ID .
state: 1- , 0 –
. vis .
Dengan layar pengaturan saluran selesai, buka layar pengaturan waktu saat ini ( SetCurrentTime ID = 2 ).
Di sini, seperti pada layar lain di Preinitialilize Event (dipanggil sebelum layar diinisialisasi), kami mengikat kembali tombol fisik ke tombol virtual pada layar ini.cfgpio 0,1,b11
cfgpio 1,1,b10
cfgpio 2,1,b14
cfgpio 3,1,b13
cfgpio 4,1,b12
cfgpio 5,1,b15
sel.val=1
Acara Sentuh Tekan acara tombol B0 - «Tambahkan ke waktu hari ini ".if(rtc2<31)
{
rtc2=rtc2+1
}
Acara Sentuh Tekan acara tombol b2 - «Add bulan ke waktu saat ini ".if(rtc1<12)
{
rtc1=rtc1+1
}
Acara Sentuh Tekan acara tombol b4 - «Add tahun ke waktu saat ini ".rtc0=rtc0+1
Acara Sentuh Tekan acara tombol b6 - «Tambahkan jam untuk waktu saat ini ". if(rtc3<23)
{
rtc3=rtc3+1
}
Acara Sentuh Tekan acara tombol b8 - «Tambah ke saat saat ini waktu ".if(rtc4<59)
{
rtc4=rtc4+1
}
Acara Sentuh Tekan acara tombol b1 - «Mengambil hari dari waktu saat ini ".if(rtc2>1)
{
rtc2=rtc2-1
}
Acara Sentuh Tekan acara tombol b3 - «Mengambil bulan lalu dari waktu saat ini ".if(rtc1>1)
{
rtc1=rtc1-1
}
Acara Sentuh Tekan acara tombol b5 - «Mengambil setahun dari waktu saat ini ".if(rtc0>2016)
{
rtc0=rtc0-1
}
Acara Sentuh Tekan acara tombol b7 - «terbuang satu jam dari waktu saat ini ".if(rtc3>0)
{
rtc3=rtc3-1
}
Acara Sentuh Tekan acara tombol B9 - «Mengambil menit dari waktu saat ini ".if(rtc4>0)
{
rtc4=rtc4-1
}
Acara Sentuh Tekan acara tombol b10 - «Pengaturan 0 detik ".rtc5=0
Acara Sentuh Tekan acara tombol b11 - «Keluar».page 0
Acara Sentuh Tekan acara tombol b12 - «Pergi ke bidang sebelumnya ". Tombolnya tidak terlihat. Tombol pada layar ini terkait dengan tombol fisik Atas (IO4) pada Papan Ekspansi .if(sel.val<2)
{
sel.val=5
}else
{
sel.val=sel.val-1
}
Acara Sentuh Tekan acara tombol b13 - «Pergi ke kolom berikutnya ". Tombolnya tidak terlihat. Tombol pada layar ini terkait dengan tombol fisik Turun (IO3) pada Papan Ekspansi .if(sel.val>4)
{
sel.val=1
}else
{
sel.val=sel.val+1
}
Acara Sentuh Tekan acara tombol b14 - «Tambahkan 1 dengan nilai bidang yang dipilih ". Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kanan (IO2) pada Papan Ekspansi .if(sel.val==1)
{
click b0,1
}
if(sel.val==2)
{
click b2,1
}
if(sel.val==3)
{
click b4,1
}
if(sel.val==4)
{
click b6,1
}
if(sel.val==5)
{
click b8,1
}
Acara Sentuh Rilis acara tombol b14if(sel.val==1)
{
click b0,0
}
if(sel.val==2)
{
click b2,0
}
if(sel.val==3)
{
click b4,0
}
if(sel.val==4)
{
click b6,0
}
if(sel.val==5)
{
click b8,0
}
Acara Sentuh Tekan acara tombol b15 -. «Kurangi 1 dari nilai kolom yang dipilih" Tombolnya tidak terlihat. Tombol pada layar ini diikat ke tombol fisik kiri (IO5) pada Papan Ekspansi . if(sel.val==1)
{
click b1,1
}
if(sel.val==2)
{
click b3,1
}
if(sel.val==3)
{
click b5,1
}
if(sel.val==4)
{
click b7,1
}
if(sel.val==5)
{
click b9,1
}
Acara Sentuh Rilis acara tombol b15if(sel.val==1)
{
click b1,0
}
if(sel.val==2)
{
click b3,0
}
if(sel.val==3)
{
click b5,0
}
if(sel.val==4)
{
click b7,0
}
if(sel.val==5)
{
click b9,0
}
Yah, seperti di jendela lain, timer tm0 diatur di jendela ini dengan periode respons 200 milidetik. Dalam Acara Timer dari timer ini, nilai-nilai bidang teks diperbarui.Kode di bawah spoiler
temp.val=rtc2
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=tempText.txt+TT1.txt
temp.val=rtc1
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt
temp.val=rtc0
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt
temp.val=rtc3
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt
temp.val=rtc4
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt
temp.val=rtc5
tempText.txt=""
if(temp.val<10)
{
tempText.txt="0"
}
cov temp.val,TT1.txt,0
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt
if(sel.val==1)
{
t1.pco=63488
}else
{
t1.pco=65535
}
if(sel.val==2)
{
t2.pco=63488
}else
{
t2.pco=65535
}
if(sel.val==3)
{
t3.pco=63488
}else
{
t3.pco=65535
}
if(sel.val==4)
{
t4.pco=63488
}else
{
t4.pco=65535
}
if(sel.val==5)
{
t5.pco=63488
}else
{
t5.pco=65535
}
Tentang ini kita selesai dengan panel. Pada prinsipnya, ternyata sistem otonom yang dapat bekerja tanpa peralatan tambahan. Tetapi kami tidak dapat menggunakan respons saluran. Kami hanya memiliki dua pintu masuk gratis - keluar. Di sini arduinka akan datang untuk menyelamatkan.Dalam versi 2.2 dari FLProg, dukungan untuk panel HMI Nextion telah diperbarui. Ada blok baru untuknya.- Blokir " Mengklik item " - memungkinkan Anda untuk mensimulasikan klik dan melepaskan item apa pun di layar panel.
- Blok " Dapatkan nilai variabel sistem " dan " Tetapkan nilai variabel sistem " memungkinkan Anda membaca dan menulis nilai-nilai dari hampir semua variabel sistem panel.
- Blok " Pengaturan GPIO " - memungkinkan Anda untuk mengkonfigurasi mode operasi I / O panel kapan saja
Nah, dalam pelajaran ini (karena masih lebih dikhususkan untuk memprogram panel itu sendiri), kita cukup membaca status saluran timer (variabel tsr1 - tsr5 ) dan output ke LED.Garis besar proyek untuk Arduino dalam program FLProg.
Video kecil dari pengoperasian perangkat (Ini masih proyek pelatihan, jadi ini dirakit secara sementara)Aplikasi:- Project for Nextion Editor (firmware untuk panel)
- Proyek untuk program FLProg (firmware untuk Arduino)