جدول المحتويات:
فيديو: نهج مختلف مع Nextion: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
في مشروعي الأول مع Arduino Nano المتصل بشاشة اللمس Nextion ، كنت قد كتبت سلسلة طويلة من الأوامر ليتم توصيلها إلى Nextion عبر المنفذ التسلسلي وهذا أمر لا مفر منه إذا احتجنا إلى إرسال أوامر مستقلة تمامًا ، في لحظات عشوائية.
يجب أن أعترف أيضًا أنني قضيت وقتًا أطول في "القتال" مع المكتبات أكثر من أي شيء آخر. لذلك جئت إلى العمل بشكل تدريجي بدون مكتبات ITEAD الثقيلة.
سرعان ما أدركت أنه ليس لدي حاجة ملحة للتواصل مع Nextion بالتغييرات التي تطرأ على سمات الأشياء المرئية ، لكنني أفضل الانتظار حتى أقوم بجمعها وإرسالها إلى Nextion ككل ، عندما أحصل على مجموعة كاملة.
سأحاول أن أشرح نفسي بشكل أفضل.
عندما أريد في مشروعي المكون من 16 مؤشرًا نصيًا تشغيل بعضها أو إيقاف تشغيلها ، فأنا أفعل ذلك من خلال الاستفادة من سمة "bco" التي يتم تشغيلها (على سبيل المثال) من الرمادي الداكن إلى الأبيض (إذا كان مستطيل أسود) والعكس بالعكس.
في تطبيقي وجدت أنه من غير المجدي إرسال 16 أمرًا إلى المنفذ التسلسلي في 16 لحظة مختلفة ، واحد لكل "bco" من الإشارات الـ 16.
أفضل بدلاً من ذلك أن يجمع Arduino الإشارات التي يجب أن تكون "قيد التشغيل" (عالية) وأي منها يجب أن تكون "متوقفة" (منخفضة) في سجل 16 بت ، حيث يتوافق كل بت مع إشارة من 16 إشارة من Nextion.
بعد تحديث كل جزء من السجل ، أنقل قيمته إلى Nextion ، وهي رسالة واحدة تحتوي على معلومات جماعية تتعلق بـ 16 عنصرًا.
وبهذه الطريقة ، يتم تقليل الاتصال من Arduino و Nextion بشكل كبير لأنه في تلك الرسالة الفردية المنقولة على المسلسل إلى Nextion ، يتم جمع المعلومات التي كانت ستتطلب بخلاف ذلك إرسال 16 رسالة.
صحيح أنه ليس من الضروري دائمًا تحديث جميع التقارير ، لكنني متأكد من أن القيام بخلاف ذلك سيضيع المزيد من الوقت.
وبطبيعة الحال ، فإن كل بت موجود في العدد الصحيح الذي يستقبله Arduino ، سيتعين على شاشة Nextion ربطه بالسمة المرغوبة.
هذا يعني أنه يجب كتابة الكود في شاشة Nextion ، لكن لا داعي للخوف: إذا نجحت …
ثم هناك ميزة مزدوجة: سيكون لدى Arduino رمز أخف وسيكون أقل مشاركة في الاتصال التسلسلي مع Nextion.
Nextion بعد تلقي البيانات في رسالة واحدة ، سوف يستخدمها بشكل أسرع بكثير مما لو كان ينتظر 16 رسالة. وبالتالي ، سيكون تشغيل أو إيقاف تشغيل 16 إشارة معاصرًا تقريبًا فيما يتعلق بالوضع الأكثر شيوعًا ، حيث ينقضي وقت عدد غير معروف من الرسائل بين تنفيذ الأمر الخاص بالإشارة الأولى والأمر الخاص بالإشارة الأخيرة.
في شاشة Nextion ، قمت بإنشاء هذا النظام بالطريقة الكلاسيكية ، أي أن تحويل سجل "القناع" في كل مرة يسمح لك بفحص كل من الـ 16 بت. عندما تكون البتة التي تم فحصها عالية ، تضيء الإشارة المرتبطة بتلك القطعة على الشاشة وتنطفئ عندما يكون البتة منخفضًا.
الجانب السلبي لهذا النظام هو أن الكود المكتوب في شاشة Nextion أقل ملاءمة للتوثيق من كود Arduino. علاوة على ذلك ، يخاطر كود Nextion بالتشتت على كائنات مختلفة. يجب توخي الحذر لتوثيق ما تفعله على الفور.
أستخدم Notepad ++ لكتابة الكود الذي أقوم بنسخه بعد ذلك في كائن Nextion والذي يكون حصريًا تقريبًا في tm0 من الصفحة 0.
يحتوي بناء جملة لغة Nextion على العديد من القيود ، لكنه ينجح في التغلب عليها أو الالتفاف عليها بأقل جهد ومحاولة رؤية المشكلات من وجهات نظر غير عادية أيضًا.
على سبيل المثال ، أبلغت عن الطريقة التي يكتب بها Arduino السجل ليتم إرساله ، والذي كتبته بأبسط طريقة ممكنة.
الخطوة 1: كيف يتم إرسال السجل
في ملف ArduinoCode. PDF أعرض كل مخططي. (قراءة الكود هنا ليست واضحة)
هنا في الأسفل ، أريد فقط أن أوضح الطريقة التي يرسل بها Arduino 16 بت Register إلى Nextion ، دون مساعدة المكتبات ، ولكن مع احترام القواعد اللغوية التي وصفها ITEAD.
//***************************************************************************************
NexUpd () باطل
//***************************************************************************************
{
SRSerial.print ("vINP.val =") ؛
SRSerial.print (InpReg) ، // إرسال الـ 16 بت التي تم جمعها إلى شاشة Nextion
SRSerial.print (InpReg) ، // قم بنقل الـ 16 بت التي تم جمعها إلى شاشة Nextion
SRSerial.write (نهاية) ؛ // 255
SRSerial.write (نهاية) ؛ // 255
SRSerial.write (نهاية) ؛ // 255
}
//***************************************************************************************
الخطوة الثانية:.. ولكن قبل…
بالطبع الكود يبدأ بكل التصريحات والإعداد ().
المدخلات هي INPUT_PULLUP ، لذلك تكون مفاتيح الإدخال مفتوحة عادة وعندما تغلق ، فإنها تطبق GND على المدخلات المتوافقة.
(هذا هو أول Instructable لي ، وأنا آسف لإظهار الكود الخاص بي بهذه الطريقة السيئة. يرجى تنزيل الملف ArduinoCode. PDF أنه واضح جدًا.
دعني أتحدث عنها أكثر
لقد طورت طريقتي الخاصة لأقول لشاشة Nextion ما يجب أن تفعله. عادةً ما ترسل MCU (Arduino في حالتي) رسالة لكل تباين منفرد لتطبيقه على سمة أي كائن واحد. تضيع هذه الطريقة الكثير من الوقت للقيام بأشياء ليست ملحة دائمًا لتحميل الخط التسلسلي باستمرار. لقد وجدت أكثر ملاءمة أن Arduino يجمعها في 16 بت يسجل المعلومات حول السمات لتختلف في Nextion. حوالي كل 500 مللي ثانية ، يرسل Arduino الخاص بي إلى Nextion رسالة واحدة تحتوي على 16 بت الموجودة في كل سجل في الوقت المناسب. من الواضح أننا في Nextion نحتاج إلى الكود الذي يتعامل مع ما يجب تنفيذه. يتيح هذا التوزيع للمهمة (والرمز) الحصول على العديد من المزايا الأخرى. على سبيل المثال ، فكر في كيفية جعل وميض الضوء! من خلال أسلوبي ، يكون الأمر سهلاً: ضع قليلاً في سجل Arduino وأرسله إلى Nextion. نادرًا ما يتم تحديث سجلات Nextion المزدوجة من Arduino ، لأن تردد الوميض مستقل عن الاتصال ؛ يعتمد تردد الوميض على كائن Timer في Nextion ويمكن تشغيله مع أقل قاعدة زمنية قريبة من 50 مللي ثانية. لذلك من خلال طريقتنا ، يمكننا وميض ضوء في Nextion بتردد مرتفع نسبيًا (افترض 2 هرتز) ، حتى لو كان Arduino يرسل رسائل كل 10 ثوانٍ ، فقط للحصول على مثال متطرف. هذا يمكن أن يشير إلى مشكلة معاكسة: كيف تفعل إذا فشل الاتصال؟ هذا ليس موضوع هذه المناقشة ، لكنني قمت بالفعل بحل هذه المشكلة بنوع من Watch Dog: واحد داخل كود Arduino ، وآخر في رمز Nextion.
يتم تنظيم الوميض بواسطة كود Nextion ، حيث يتبع كل ضوء قواعده الصحيحة: ON / OFF أو GREEN / RED أو تغيير الداخل المكتوب (أو غير ذلك). يمكنني أن أخبركم ببعض الأشياء الأخرى عن مشروعي ولكني أفضل انتظار أسئلتكم ، قبل إضافة الكثير من الكلمات التي ليس من السهل علي ترجمتها كما أفعل.
الخطوة 3: تحرير كائنات Nextion
هذا جزء من الكود الذي كتبته باستخدام Nextion Editor على الكائن tm0.
لا يفلت من ملاحظة أنه مع 16 بت التي تم تلقيها من Arduino ، لا تعمل شاشة Nextion فقط على تشغيل وإيقاف الإشارات. في الوقت الحالي أغفل التفسيرات حتى لا أعقد الفهم.
أنا مبتدئ ولذلك من الأفضل تنزيل كود Nextion بدلاً من ذلك لقراءة الكود المربك هنا بالأسفل. (أنا آسف ، هذا هو أول تدريب لي)
إذا كنت ترغب في ذلك يمكنك تنزيل الكود الكامل "HMI" لهذا طلبي. اسم ملف هذا الرمز هو POW1225. HMI. يمكن أن يتم تشغيله في شاشة Nextion الخاصة بك NX4024T032 ولكن لفهم ذلك عليك أن تسبح في العديد من الكائنات وأن تنظر إلى الكود داخل النافذة الصغيرة للمحرر. لذلك أعتقد أنه سيكون من السهل أكثر أن ننظر إلى الكود الرئيسي ، المكتوب في ملف Nextion code. PDF
// مشروع POW1225. HMI 15 مايو 2019
// vACC (va0) المجمع
// vINP (va1) سجل الإدخال xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 ابدأ
tm0.tim = 50 // tm0 قاعدة الوقت 50 مللي ثانية
// RDY ***************
vACC.val = vINP.val & 0x0001 // قناع
إذا (vACC.val! = 0) // اختبار RDY
{
tRDY.pco = أزرق // أحمر
}آخر
{
tRDY.pco = رمادي // رمادي غامق
}
// PWR ***************
vACC.val = vINP.val & 0x0002
إذا (vACC.val! = 0) // اختبار PWR
{
tPWR.pco = أخضر // أخضر فاتح
tPON.txt = "تشغيل" // تشغيل
tPON.pco = أخضر // أخضر فاتح
}آخر
{
tPWR.pco = رمادي // رمادي غامق 33808
tPON.txt = "إيقاف" // إيقاف
tPON.pco = رمادي // رمادي غامق 33808
}
// جاف ***************
vACC.val = vINP.val & 0x0004
إذا (vACC.val! = 0) // اختبار جاف
{
tDRV.pco = أزرق // أزرق
tDRY.pco = أزرق // أزرق
}آخر
{
tDRV.pco = رمادي // رمادي غامق 33808
tDRY.pco = رمادي // رمادي غامق 33808
}
// يركض ***************
vACC.val = vINP.val & 0x0018
إذا (vACC.val! = 0) // اختبار RUN
{
tRUN.bco = أحمر // MARCIA RED (تشغيل)
tRUN.pco = BLACK // في BLACK
tDIR.bco = أحمر // DIR RED
tDIR.pco = BLACK // في BLACK
}آخر
{
tRUN.bco = 32768 // MARCIA GRAY (إيقاف)
tRUN.pco = GREY // على GRAY
tDIR.bco = 32768 // DIR Dark GREEN 1024
tDIR.pco = رمادي // DIR GRAY
tDIR.txt = "---" // إيقاف
}
// اليسار **************
vACC.val = vINP.val & 0x0008
if (vACC.val! = 0) // اختبر RUN Right
{
tDIR.txt = "<<<" // DIR LEFT
}
// حق *************
vACC.val = vINP.val & 0x0010
if (vACC.val! = 0) // اختبر RUN Left
{
tDIR.txt = ">>>" // DIR RIGHT
}
// على حد سواء **************
vACC.val = vINP.val & 0x0018
if (vACC.val == 24) // اختبر RUN كليهما
{
tDIR.txt = ">>! <<" // DIR كلاهما
}
// اختبار **************
vACC.val = vINP.val & 0x0020
إذا (vACC.val! = 0) // Test TEST
{
tTEST.pco = أبيض // أبيض
tsw tTEST، 1 // تمكين أحداث اللمس
}آخر
{
tTEST.pco = رمادي // رمادي غامق 33808
tsw tTEST، 0 // تعطيل أحداث اللمس
}
// عيب *************
vACC.val = vINP.val & 0x0040
إذا (vACC.val == 0) // خطأ الاختبار
{
tFLT.pco = رمادي // خطأ غائب
}
إذا (vACC.val! = 0)
{
tFLT.pco = أصفر // خطأ موجود
}
// EME *****************
vACC.val = vINP.val & 0x0080
إذا (vACC.val == 0) // اختبار EME
{
tEME.pco = رمادي // EME غائب
}
إذا (vACC.val! = 0)
{
tEME.pco = أحمر // EME موجود
}
}
// فيرمو *************
vACC.val = vINP.val & 0x0100
إذا (vACC.val! = 0) // Test FERMO
{
tFER.pco = أسود // أسود
tFER.bco = أخضر // أخضر
}آخر
{
tFER.pco = GREY // GRAY
tFER.bco = 672 // أخضر داكن
}
// *******************
إعتراف
أريد أن أقدم تقديري لجدعون روسوف لأنني قرأت كتابه Instructables اكتسبت بسرعة جزءًا من أهدافي. شكرا السيد. جدعون روسوف
موصى به:
آلة حاسبة Nextion / Arduino: 3 خطوات
Nextion / Arduino Calculator: آلة حاسبة مفيدة لـ Arduino Uno. تشبه الآلة الحاسبة في أسلوبها الآلة الحاسبة القياسية التي تأتي مع Windows 10. ملاحظة: لا تتضمن الوظائف العلمية ووظائف المبرمج التي تقوم بها الآلة الحاسبة في نظام التشغيل Windows 10 ، ولكن هذه الوظائف
Nextion شاشة تعمل باللمس تذكير اجتماع تقويم Outlook: 6 خطوات
تذكير اجتماع تقويم Outlook لشاشة اللمس من Nextion: كان السبب في أنني بدأت هذا المشروع هو أنني غالبًا ما فاتتني الاجتماعات واعتقدت أنني بحاجة إلى نظام تذكير أفضل. على الرغم من أننا نستخدم تقويم Microsoft Outlook ، إلا أنني قضيت معظم وقتي على Linux / UNIX على نفس الكمبيوتر. أثناء العمل مع
OLOID المتحرك - حيوان أليف مختلف في أوقات مختلفة: 10 خطوات (بالصور)
OLOID المتحرك - حيوان أليف مختلف في أوقات مختلفة: لقد غير كورونا حياتنا: يتطلب منا المسافة الجسدية ، مما يؤدي بدوره إلى التباعد الاجتماعي. إذن ماذا يمكن أن يكون الحل؟ ربما حيوان أليف؟ لكن لا ، كورونا يأتي من الحيوانات. دعونا ننقذ أنفسنا من كورونا 2.0 آخر. ولكن إذا كنا
قياس معدل ضربات القلب في متناول يدك: نهج التصوير الضوئي لتحديد معدل ضربات القلب: 7 خطوات
قياس معدل ضربات قلبك في متناول يدك: نهج التصوير الضوئي لتحديد معدل ضربات القلب: يعد مقياس الرسم الضوئي (PPG) تقنية بصرية بسيطة ومنخفضة التكلفة تُستخدم غالبًا للكشف عن التغيرات في حجم الدم في طبقة الأوعية الدموية الدقيقة من الأنسجة. يتم استخدامه في الغالب بشكل غير جراحي لإجراء قياسات على سطح الجلد ، عادةً
تحليل نظام Windows Bluetooth - نهج SensorTag: 7 خطوات (مع الصور)
تحليل نظام Windows Bluetooth - نهج SensorTag: في ما يلي ، سأقوم بتحليل نظام التشغيل Windows (OS) من وجهة نظر الاتصال بأجهزة Bluetooth منخفضة الطاقة - ndash؛ في حالتنا مع أنواع مختلفة من علامات SensorTags: Thunderboard React ، Thunderboard Sense (ب