जनरेटिव आर्ट
स्प्रिंग 2022 में प्रोफेसर मार्क सैंटोलुसिटो के क्रिएटिव एंबेडेड सिस्टम्स (COMS 3930) कोर्स के लिए ESP32 TTGO टी-डिस्प्ले पर एक जनरेटिव आर्ट इंस्टॉलेशन
जीथब रेपो:https://github.com/sedona-thomas/TTGO-Text-Visualization
*क्लास डेमो वीडियो जोड़ा जाएगा
अवलोकन
मेरी रचनात्मक कला स्थापना को प्रोफेसर मार्क सैंटोलुसिटो के क्रिएटिव एंबेडेड सिस्टम कोर्स के सहयोग से डिजाइन किया गया था। प्रत्येक छात्र ने अपने ईएसपी32 टीटीजीओ टी-डिस्प्ले पर अपने स्वयं के प्रतिनिधि पाठ को बर्नार्ड के मिलस्टीन सेंटर की पांचवीं मंजिल के हॉलवे में सामूहिक स्थापना के लिए प्रदर्शित किया।
प्रेरणा
कोलंबिया विश्वविद्यालय के 4-1 कार्यक्रम (कोलंबिया के इंजीनियरिंग और उदार कला स्कूलों के बीच एक दोहरे डिग्री कार्यक्रम) के माध्यम से कंप्यूटर विज्ञान और मानवाधिकारों का अध्ययन करने वाले एक छात्र के रूप में, मैंने इस परियोजना को अपने परस्पर शैक्षणिक फ़ोकस का प्रतिनिधित्व करने के लिए डिज़ाइन किया है। मैंने मानवाधिकारों की सार्वभौम घोषणा (यूडीएचआर) को इसकी दो मूल भाषाओं - अंग्रेजी और फ्रेंच में प्रदर्शित करना चुना - क्योंकि वे दो भाषाएं हैं जिन्हें मैं बोलता हूं (एक देशी वक्ता के रूप में अंग्रेजी और एक मध्यवर्ती छात्र के रूप में फ्रेंच)। कक्षा स्थापना के मेरे हिस्से में मेरे सभी सबसे महत्वपूर्ण शैक्षणिक जुनून शामिल हैं - कंप्यूटर विज्ञान, मानवाधिकार, और फ्रेंच भाषा और संस्कृति।
डिजाइन विकल्प
मैंने सी ++ में एक सफेद पृष्ठभूमि और काले पाठ के साथ एक साधारण डिस्प्ले प्रोग्रामिंग शुरू किया जो चालू और बंद चमकता है। इससे, मैंने अपने इच्छित प्रोजेक्ट के टुकड़ों को तोड़ना शुरू कर दिया - पूरे डिस्प्ले पर स्क्रॉलिंग टेक्स्ट। एक बार जब मेरे पास पाठ की एक पंक्ति को प्रिंट करने वाला कार्यक्रम था, तो मैंने इस कार्यक्षमता में जोड़ा, ताकि दो पंक्तियों को एक साथ प्रदर्शित किया जा सके। एक बार जब यह काम कर रहा था, तो मैंने अतिरेक को कम करने के लिए सहायक तरीके बनाकर अपना कोड साफ करना शुरू कर दिया। अंत में, मैंने हर 10 फ्रेम में बेतरतीब ढंग से पृष्ठभूमि रंग उत्पन्न करके प्रदर्शन को वैयक्तिकृत करने का निर्णय लिया। अंत में, मैंने अपने काम के लिए हस्ताक्षर के रूप में निचले दाएं कोने में अपना नाम जोड़ने का फैसला किया।

सीखा
सबसे पहले, मैंने सीखा कि कैसे एक Arduino डिस्प्ले पर उदाहरण प्रोग्राम सेट अप और लोड करना है। एक बार यह काम कर रहा था, मैंने शोध करना शुरू किया कि TFT_eSPI लाइब्रेरी का उपयोग कैसे करें और पृष्ठभूमि और टेक्स्ट रंग बदलने, स्क्रीन पर टेक्स्ट जोड़ने और टेक्स्ट आकार बदलने में सक्षम था। मैंने ड्रॉस्ट्रिंग () और प्रिंट () दोनों विधियों का उपयोग करने का अभ्यास किया, जिससे मुझे लंबे स्ट्रिंग्स का उपयोग करते समय ड्रॉस्ट्रिंग () विधि पर प्रिंट () विधि का उपयोग करके स्ट्रिंग्स की स्थिति के कम नियंत्रण के साथ मुद्दों को डीबग करने में मदद मिली। इससे मुझे यह महसूस करने में भी मदद मिली कि ड्रॉस्ट्रिंग() विधि और आकार पैरामीटर का उपयोग करने में कोई समस्या है, इसलिए मैं प्रत्येक स्ट्रिंग के आकार को इनपुट करने के बजाय समग्र फ़ॉन्ट आकार को बदलकर अपने टेक्स्ट का आकार बढ़ाने में सक्षम था।
इच्छित सुधार
मैंने शुरू में ESP32 पर सहेजी गई फ़ाइल में पढ़ने के लिए प्रोग्राम लिखने का प्रयास किया था जिसे बाद में स्क्रीन पर प्रदर्शित किया जा सकता था, लेकिन फ़ाइल में पढ़ने के अपने प्रयासों के साथ मैं कई मुद्दों में भाग गया। समय की कमी के कारण और चूंकि यह Arduino डेवलपमेंट बोर्ड की प्रोग्रामिंग का मेरा पहला प्रयास है, इसलिए मैंने स्क्रॉलिंग टेक्स्ट की मुख्य कार्यक्षमता पर ध्यान केंद्रित करने का निर्णय लिया, लेकिन इस प्रोजेक्ट के भविष्य के पुनरावृत्तियों में डायनेमिक टेक्स्ट इनपुट शामिल होगा जिसे सीधे फ़ाइल से पढ़ा जा सकता है। मुख्य कार्यक्रम में हार्डकोड करने के बजाय। दूसरा प्रमुख मुद्दा मैंने फ्रेंच पाठ में उच्चारण वर्णों के साथ निपटाया। एक Arduino के लिए ASCII के बजाय यूनिकोड का उपयोग कैसे करें और सभी उच्चारण वर्णों को गैर-उच्चारण वर्णों में बदलने का प्रयास करने के बाद, मैं पाठ को ठीक से प्रस्तुत करने में असमर्थ था, इसलिए मुझे उच्चारण वाले पात्रों को छोड़ने के लिए मजबूर होना पड़ा क्योंकि उन्होंने स्वचालित रूप से प्रस्तुत किया था। इस परियोजना के भविष्य के पुनरावृत्तियों में, मैं यह देखने के लिए खरोंच से शुरू करूंगा कि मैं पूरे कार्यक्रम को डिजाइन करने से पहले या तो उच्चारण वर्णों को कैसे प्रिंट कर सकता हूं या उन्हें ठीक से हटा सकता हूं। मैं यह भी सीखना चाहता हूं कि फ्रेम के बीच एक सहज संक्रमण कैसे बनाया जाए। वर्तमान में, प्रत्येक फ्रेम उनके बीच एक काली स्क्रीन प्रदर्शित करता है, और इसे हटाने के मेरे प्रयास असफल रहे। मेरा मानना है कि यह पिछले फ्रेम के समाप्त होने के बाद अगले फ्रेम की गणना में अंतराल के कारण है। प्रत्येक फ्रेम उनके बीच एक काली स्क्रीन प्रदर्शित करता है, और इसे हटाने के मेरे प्रयास असफल रहे। मेरा मानना है कि यह पिछले फ्रेम के समाप्त होने के बाद अगले फ्रेम की गणना में अंतराल के कारण है। प्रत्येक फ्रेम उनके बीच एक काली स्क्रीन प्रदर्शित करता है, और इसे हटाने के मेरे प्रयास असफल रहे। मेरा मानना है कि यह पिछले फ्रेम के समाप्त होने के बाद अगले फ्रेम की गणना में अंतराल के कारण है।