मस्तिष्क की स्क्रीन पर दूसरा बटन जोड़ना - C++
शिक्षक टूलबॉक्स
-
इस गतिविधि का उद्देश्य
अब चूंकि छात्रों को मस्तिष्क की स्क्रीन को एक बड़े बटन की तरह उपयोग करने का अनुभव हो गया है, वे स्क्रीन को दो बटनों में बदल सकते हैं। यह गतिविधि विद्यार्थियों को सशर्त कथनों को बेहतर ढंग से प्रबंधित करने के लिए नेस्टेडif then elseकथनों का उपयोग करने और ऐसा करने के अंतर्निहित तर्क से परिचित कराएगी। छात्रों को सबसे पहले स्क्रीन दबाने पर रोबोट को बायीं या दायीं ओर घुमाने के लिए प्रोजेक्ट बनाने के लिए निर्देशित किया जाता है। लेकिन, फिर उनसे बटनों को इस प्रकार बदलने को कहा जाता है कि जो चीज रोबोट को बायीं ओर घुमाती है, वह अब उसे दायीं ओर घुमा दे, और इसके विपरीत।
इस गतिविधि में प्रयुक्तif thenऔरif then elseकथनों या अन्य के बारे में अधिक जानकारी के लिए, VEXcode V5 में सहायता जानकारी देखें। इस अंतर्निहित सहायता उपकरण के बारे में अधिक जानकारी के लिए, आपC++में सहायता के बारे में लेख पा सकते हैं।
इस गतिविधि में आपके विद्यार्थी क्या करेंगे, इसकी रूपरेखा निम्नलिखित है:
-
स्टॉपऑरड्राइवपरियोजना और मस्तिष्क की स्क्रीन के पिक्सल में लेआउट की समीक्षा।
-
प्रोग्रामिंग के तर्क के माध्यम से मार्गदर्शन प्राप्त करते हुए एक नयाLeftOrRightप्रोजेक्ट बनाना।
-
परियोजना को संशोधित करना ताकि स्क्रीन पर बटन विपरीत दिशा में काम करें।
-
अपनी शिक्षा का विस्तार करें: स्क्रीन को दो बटनों में विभाजित करें, जिन्हें दबाने पर रोबोट बायीं या दायीं ओर घूम जाएगा।
सुनिश्चित करें कि आपके पास आवश्यक हार्डवेयर, आपकी इंजीनियरिंग नोटबुक और VEXcode V5 तैयार है।
| मात्रा | आवश्यक सामग्री |
|---|---|
| 1 |
VEX V5 क्लासरूम स्टार्टर किट (अप-टू-डेट फर्मवेयर के साथ) |
| 1 |
VEXcode V5 (नवीनतम संस्करण, Windows, macOS) |
| 1 |
इंजीनियरिंग नोटबुक |
| 1 |
पिछले प्ले पेज से StopOrDrive प्रोजेक्ट |
मस्तिष्क की स्क्रीन पर एक से अधिक बटन हो सकते हैं।
यह गतिविधि आपको रोबोट को आगे बढ़ने और मस्तिष्क की स्क्रीन के किस तरफ दबाया जाता है, इसके आधार पर बाएं या दाएं मुड़ने के लिए प्रोग्राम करने देगी।
इस गतिविधि के दौरान आपको जिन तीन अतिरिक्त प्रकार के निर्देशों की आवश्यकता होगी, वे निम्नलिखित हैं:
- ड्राइवट्रेन.टर्न(दाएं);
- संख्या< 50
- ब्रेन.स्क्रीन.xPosition();
निर्देशों के बारे में जानने के लिए आप VEXcode V5 के अंदर सहायता जानकारी का उपयोग कर सकते हैं।

चरण 1: आइए StopOrDrive परियोजना की समीक्षा करके शुरुआत करें।
आइये StopOrDrive परियोजना की समीक्षा से शुरुआत करें।
स्टॉपऑरड्राइव परियोजना में क्लॉबोट को स्क्रीन दबाने पर रुकना था, अन्यथा वह आगे बढ़ जाता था।
पूरी स्क्रीन एक बड़ा बटन थी, लेकिन इस अगली परियोजना में, हम चाहते हैं कि आधी स्क्रीन एक बटन हो और बाकी आधी दूसरी बटन हो।
// प्रोजेक्ट कोड शुरू करें
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है। दूर नहीं करते!
vexcodeInit();
while (true) {
Drivetrain.drive(forward);
if (Brain.Screen.pressing()) {
Drivetrain.stop();
waitUntil(!Brain.Screen.pressing());
}
else {
Drivetrain.drive(forward);
}
}
} स्क्रीन को दो बटनों में विभाजित करने के लिए, हमें स्क्रीन के लेआउट के बारे में अधिक समझने की आवश्यकता है।

- ध्यान दें कि स्तंभों की संख्या बाएं से दाएं बढ़ती जाती है। स्तंभों की संख्या 48 है और स्क्रीन 480 पिक्सेल चौड़ी है।
- अपनी इंजीनियरिंग नोटबुक में लिख लें कि स्क्रीन पर x-मान बाएं से दाएं मापे गए पिक्सेल की संख्या के बराबर है।
- स्क्रीन के केंद्र का x-मान क्या है? इस गतिविधि के लिए, आप केवल x-अक्ष पर ध्यान केंद्रित कर सकते हैं क्योंकि आपको केवल बाएँ और दाएँ बटन की आवश्यकता है।
शिक्षक टूलबॉक्स
-
उत्तर
स्क्रीन के केंद्र पर x-मान पिक्सेल में स्क्रीन की चौड़ाई के आधे के बराबर है। अतः केन्द्र बिन्दु का x-मान 240 है। छात्रों को इस नंबर की आवश्यकता होगी ताकि वे यह निर्धारित कर सकें कि स्क्रीन को बाईं ओर दबाया जाए या दाईं ओर। इसलिए यह सुनिश्चित कर लें कि उन सभी का मान सही है।
आगे देखें तो, रीथिंक अनुभाग में यूजर इंटरफेस चैलेंज में छात्रों को स्क्रीन पर चार बटन बनाने के लिए जो कुछ उन्होंने सीखा है उसे लागू करना होगा। इसके लिए उन्हें x और y दोनों मानों की आवश्यकता होगी।
शिक्षक युक्तियाँ
अधिक सहायता के लिए, पूरक सहायता लेखों के लिएVEX लाइब्रेरीदेखें।
चरण 2: दो बटनों के लिए प्रोग्रामिंग।
- StopOrDriveLeftOrRightप्रोजेक्ट के रूप में सहेजें।
- नीचे दिए गए प्रोजेक्ट का निर्माण करें. स्क्रीन को दबाने पर क्लॉबोट बायीं या दायीं ओर मुड़ जाएगा, यह इस बात पर निर्भर करेगा कि उसे किस ओर दबाया गया है।
// प्रोजेक्ट कोड शुरू करें
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है। दूर नहीं करते!
vexcodeInit();
while (true) {
यदि (Brain.Screen.pressing()) {
यदि (Brain.Screen.xPosition() < 240) {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
} अन्यथा {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
}
} अन्यथा {
Drivetrain.drive(forward);
}
}
} - आइये समीक्षा करें कि यह परियोजना क्या करती है।
यह जाँच करता रहता है कि स्क्रीन दबाई गई है या नहीं। यदि स्क्रीन को दबाया नहीं गया है तो यह आगे की ओर चलता है, लेकिन यदि दबाया गया है तो यह जांचता है कि स्क्रीन कहां दबाई गई है।
यदि प्रेस बाईं ओर थी (240 से कम), तो यह बाईं ओर मुड़ जाता है। अन्यथा, यह दाईं ओर मुड़ता है। जब x-मान 240 से अधिक हो तो हमें किसी अन्य शर्त की आवश्यकता नहीं है, क्योंकि यदि यह 240 से कम नहीं है (बाएं मुड़ें), तो यह अधिक होना चाहिए (दाएं मुड़ें)। हमें केवल दो बटनों की चिंता करनी है।
तब तक प्रतीक्षा करें जब तकप्रत्येक मोड़ के बाद नियंत्रण निर्देश परियोजना को तब तक प्रतीक्षा करने के लिए कहते हैं जब तक कि स्क्रीन को आगे बढ़ने से पहले दबाया नहीं जाता है।

- अब जब परियोजना पूरी हो गई है, तो यह देखने के लिए कि यह कैसे काम करती है, इसे डाउनलोड करें और चलाएं।

- अपनी इंजीनियरिंग नोटबुक में नोट करें कि बटन क्लॉबोट की गतिविधियों को किस प्रकार नियंत्रित करते हैं।
शिक्षक युक्तियाँ
परीक्षण करते समय, छात्रों को यह पहचानना चाहिए कि क्लॉबोट के पीछे से उपयोग किए जाने पर यूजर इंटरफेस विपरीत दिशा में काम करता प्रतीत होता है। उपयोगकर्ता के दृष्टिकोण से, क्लॉबोट उस ओर से दूर मुड़ जाता है जिसे उपयोगकर्ता द्वारा दबाया जा रहा है। यह इष्टतम उपयोगकर्ता अनुभव नहीं है।
चरण 3: बेहतर उपयोगकर्ता अनुभव के लिए परियोजना को समायोजित करें।
जब क्लॉबोट आगे बढ़ रहा था, तो उसके पीछे से स्क्रीन के बटन दबाते समय, आप बाईं ओर मुड़ने के लिए स्क्रीन के दाईं ओर दबाते थे, तथा दाईं ओर मुड़ने के लिए स्क्रीन के बाईं ओर दबाते थे। यह एक अच्छा उपयोगकर्ता अनुभव नहीं है. उपयोगकर्ता अनुभव यह है कि एक उपयोगकर्ता कंप्यूटर सिस्टम को नियंत्रित करने के लिए उपयोगकर्ता इंटरफ़ेस के साथ कितनी अच्छी तरह से बातचीत कर सकता है। इस लैब के लागू करें अनुभाग में उपयोगकर्ता इंटरफ़ेस के बारे में अधिक जानकारी उपलब्ध है।
इस मामले में, उपयोगकर्ता अनुभव को बेहतर बनाने के लिए हमें उपयोगकर्ता इंटरफ़ेस में सुधार करने की आवश्यकता है।
- LeftOrRight परियोजना की समीक्षा करें और इसे संशोधित करें ताकि जब उपयोगकर्ता क्लॉबोट के पीछे से बटन दबाए, तो उपयोगकर्ता द्वारा स्क्रीन के बाईं ओर दबाने पर रोबोट दाईं ओर मुड़ जाए। अन्यथा, क्लॉबोट बायीं ओर मुड़ जाता है।
// प्रोजेक्ट कोड शुरू करें
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है। दूर नहीं करते!
vexcodeInit();
while (true) {
यदि (Brain.Screen.pressing()) {
यदि (Brain.Screen.xPosition() < 240) {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
} अन्यथा {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
}
} अन्यथा {
Drivetrain.drive(forward);
}
}
} - अपनी इंजीनियरिंग नोटबुक में इस परियोजना की योजना बनाएं, परीक्षण करें और पुनरावृत्ति करें, ताकि परियोजना क्लॉबोट को स्क्रीन के उस ओर मोड़ दे, जिसे उपयोगकर्ता क्लॉबोट के पीछे से दबा रहा है।
शिक्षक टूलबॉक्स
छात्रों को परियोजना में इन परिवर्तनों की योजना बनानी चाहिए, उनका परीक्षण करना चाहिए तथा उन्हें परिष्कृत करना चाहिए तथा साथ ही उन्हें अपनी इंजीनियरिंग नोटबुक में भी दर्ज करना चाहिए। व्यक्तिगत इंजीनियरिंग नोटबुक रूब्रिक के लिए, निम्नलिखित में से किसी एक लिंक पर क्लिक करें (Google Doc / .docx / .pdf), या टीम नोटबुक के लिए निम्नलिखित में से किसी एक लिंक पर क्लिक करें (Google Doc / .docx / .pdf)। काम शुरू करने से पहले छात्रों को स्कोरिंग के बारे में समझाना न भूलें।
शिक्षक टूलबॉक्स
-
समाधान
उपरोक्त समस्या को हल करने के दो संभावित तरीके हैं। पहला तरीका वह है जो निर्देश में लिखा गया है: LeftOrRight परियोजना की समीक्षा करें और इसे संशोधित करें ताकि जब उपयोगकर्ता क्लॉबोट के पीछे से बटन दबाए, तो जब उपयोगकर्ता स्क्रीन के बाईं ओर दबाए तो रोबोट दाईं ओर मुड़ जाए। अन्यथा, क्लॉबोट बायीं ओर मुड़ जाता है।
// प्रोजेक्ट कोड शुरू करें
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है। दूर नहीं करते!
vexcodeInit();
while (true) {
यदि (Brain.Screen.pressing()) {
यदि (Brain.Screen.xPosition() < 240) {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
} अन्यथा {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
}
} अन्यथा {
Drivetrain.drive(forward);
}
}
} दूसरा समाधान ऑपरेटर निर्देश को स्विच करना है ताकि जब x-मान 240 से अधिक हो, तो क्लॉबोट बाईं ओर मुड़ जाए।
// प्रोजेक्ट कोड शुरू करें
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है। दूर नहीं करते!
vexcodeInit();
while (true) {
यदि (Brain.Screen.pressing()) {
यदि (Brain.Screen.xPosition() > 240) {
Drivetrain.turn(left);
waitUntil(!Brain.Screen.pressing());
} अन्यथा {
Drivetrain.turn(right);
waitUntil(!Brain.Screen.pressing());
}
} अन्यथा {
Drivetrain.drive(forward);
}
}
}
चर्चा को प्रेरित करें
जब आपने x-मान 240 (स्क्रीन के बाईं ओर) से कम होने पर सशर्त कथन को प्रोग्राम किया था, तो आपको निर्देशांक तल से निर्देशांकों का उपयोग करने की आवश्यकता थी। मस्तिष्क की स्क्रीन पर दृश्य बटन बनाने के लिए, आपको निर्देशांकों का भी उपयोग करना होगा।
चरण 2 पर वापस जाएँ जहाँ आपको V5 रोबोट मस्तिष्क की स्क्रीन के लिए निर्देशांक दिखाए गए थे।

प्रश्न:स्क्रीन के दाहिने किनारे पर x-मान क्या है?
उत्तर:x-मान बाएं किनारे पर 0 से बढ़कर दाहिने किनारे पर 480 हो जाता है।
प्रश्न:अतः x-मान की सीमा 480 (0 से 480) है। Y-मान की सीमा क्या है?
उत्तर:y-मान की सीमा 240 (0 से 240) है।
प्रश्न:इस निर्देशांक तल का मूल बिंदु (0, 0) कहां है?
उत्तर:मूल बिंदु ऊपरी बाईं ओर है।
प्रश्न:जब y-मान 0 के बराबर होता है तो आप स्क्रीन के शीर्ष पर होते हैं। यह असामान्य क्यों है?
A:आमतौर पर, जब आप ऊपर की ओर बढ़ते हैं तो y-मान बढ़ता है लेकिन V5 स्क्रीन पर, जब आप नीचे की ओर बढ़ते हैं तो y-मान बढ़ता है। लेकिन आप इसे इस प्रकार समझ सकते हैं कि जैसे-जैसे आप स्क्रीन के ऊपरी बाएँ भाग में मूल बिंदु (0, 0) से दूर जाते हैं, y-मान बढ़ता जाता है।
अपनी शिक्षा का विस्तार करें
रीथिंक अनुभाग के यूजर इंटरफेस चैलेंज में, छात्रों को एक प्रोजेक्ट विकसित करने के लिए कहा जाएगा जो क्लॉबोट के पंजे और हाथ को नियंत्रित करने के लिए स्क्रीन पर चार बटन बनाएगा। इस चुनौती के लिए, उनसे स्क्रीन पर दिखाए गए चार बटनों को भी दिखाने को कहा गया। यह "अपने सीखने का विस्तार करें", पिछले पृष्ठ की तरह, उन्हें उस चुनौती के लिए तैयार करने में मदद करेगा क्योंकि चुनौती में प्रोग्राम करने के लिए चार बटन हैं और इसमें केवल दो हैं।
छात्रों को प्रोग्राम में एक घटना जोड़ने के लिए कहें ताकि जब परियोजना चले तो स्क्रीन पर दो दृश्यमान बटन दिखाई दें। सुझाव दें कि छात्र ईवेंट के बारे में जानकारी के लिए VEXcode V5 में सहायता सुविधा का उपयोग करें, विशेष रूप सेड्रा आयतनिर्देश की जानकारी के लिए। विद्यार्थियों को यह समीक्षा करने के लिए निर्देशित करें कि मस्तिष्क की स्क्रीन कोड्रा आयतब्लॉक में उपयोग किए जाने पर पिक्सेल की संख्या के आधार पर समन्वय प्रणाली में कैसे व्यवस्थित किया जाता है। उन्हें उस ब्लॉक के भीतर पैरामीटर निर्धारित करने के लिए यह समझने की आवश्यकता होगी। इसके अतिरिक्त, उन्हें यह भी समझना होगा कि घटनाओं का प्रसारण कैसे किया जाए। इस मामले में, घटना बटन खींचना है।
छात्रों को अपने इंजीनियरिंग नोटबुक के भीतर दस्तावेजीकरण करते समय परियोजना में इन परिवर्तनों की योजना बनाना, परीक्षण करना और उन्हें परिष्कृत करना चाहिए। व्यक्तिगत इंजीनियरिंग नोटबुक रूब्रिक के लिए, निम्नलिखित में से किसी एक लिंक पर क्लिक करें (Google Doc / .docx / .pdf), या टीम नोटबुक के लिए निम्नलिखित में से किसी एक लिंक पर क्लिक करें (Google Doc / .docx / .pdf).
यहाँ एक उदाहरण समाधान है:
// प्रोजेक्ट कोड शुरू करें
event ScreenButtons = event();
void HasScreenButtons() {
Brain.Screen.setFillColor(हरा);
Brain.Screen.drawRectangle(0, 0, 240, 120);
Brain.Screen.setFillColor(बैंगनी);
Brain.Screen.drawRectangle(240, 0, 480, 120);
Brain.Screen.setFillColor(नारंगी);
Brain.Screen.drawRectangle(0, 120, 240, 240);
Brain.Screen.setFillColor(cyan);
Brain.Screen.drawRectangle(240, 120, 480, 240);
wait(1, seconds);
}
int main() {
// रोबोट कॉन्फ़िगरेशन आरंभ कर रहा है. दूर नहीं करते!
vexcodeInit();
ScreenButtons(HasScreenButtons);
while (true) {
ScreenButtons.broadcast();
if (Brain.Screen.pressing()) {
if (Brain.Screen.xPosition() < 240) {
if (Brain.Screen.yPosition() < 120) {
ClawMotor.spin(forward);
waitUntil(!Brain.Screen.pressing());
} else {
ClawMotor.spin(reverse);
waitUntil(!Brain.Screen.pressing());
}
} else {
if (Brain.Screen.yPosition() < 120) {
ArmMotor.spin(forward);
waitUntil(!Brain.Screen.pressing());
} अन्यथा {
ArmMotor.spin(reverse);
waitUntil(!Brain.Screen.pressing());
}
}
ClawMotor.stop();
ArmMotor.stop();
}
wait(5, msec);
}
}
एक अतिरिक्त व्यावसायिक रूप से यथार्थवादी अनुभव के लिए, छात्रों को अपने सहपाठियों से उनके दो रंग विकल्पों पर प्रतिक्रिया मांगने को कहें।
क्या चुने गए रंग आपको इंटरफ़ेस का उपयोग करने के लिए प्रेरित करते हैं, या उपयोगकर्ता के रूप में वे कौन से रंग पसंद करेंगे?
एक बेहतरीन उपयोगकर्ता इंटरफ़ेस विकसित करने का एक हिस्सा उपयोगकर्ता अनुभव, यहाँ तक कि सौंदर्य संबंधी प्राथमिकताओं के बारे में डेटा एकत्र करना है।