बिटवाइज एनालॉग पिन को लिखें
मैं अभी बिटवाइज़ ऑपरेंड सीखना शुरू कर रहा हूँ और यहाँ मेरा सवाल है। यह करने के लिए:
pinMode (13, OUTPUT);
digitalWrite (13, HIGH);
बिटवाइज़ मैं ऐसा कर सकता हूँ:
DDRB |= B00100000; //set PIN13 as OUTPUT
PORTB |= B00100000; //set PIN13 HIGH
लेकिन मैं यह कैसे कर सकता हूं:
analogWrite(9, 200);
मुझे पता है कि DEC नंबर को BIN में कैसे बदलें, लेकिन इस नंबर को PWM पिन में कैसे भेजें? मुझे वेब में कोई अच्छा उदाहरण नहीं मिल रहा है .. धन्यवाद!
जवाब
ध्यान दें, आपने निर्दिष्ट नहीं किया है कि आप किस Arduino का उपयोग कर रहे हैं। मैं यहाँ एक Armeino328p आधारित Arduino (Uno, नैनो, मिनी) मान रहा हूँ, हालाँकि यह सिद्धांत हर AVR माइक्रोकंट्रोलर के साथ काम करता है, जिसमें यह हार्डवेयर है)।
साथ analogWrite()
नहीं भेज रहे हैं कर रहे हैं डेटा एक पिन से बाहर बिटवाइज़। यह एक विशिष्ट आवृत्ति पर और विशिष्ट कर्तव्य चक्र के साथ उस पिन को सेट करने के लिए हार्डवेयर टाइमर को कॉन्फ़िगर करता है। तो analogWrite()
माइक्रोकंट्रोलर के अंदर हार्डवेयर का एक बिल्कुल अलग टुकड़ा सक्रिय करता है।
Arduino फ़ंक्शन के बिना ऐसा करने के लिए analogWrite()
, आपको सबसे पहले यह तय करना होगा कि किस रास्ते पर जाना है:
- आप हार्डवेयर टाइमर के माध्यम से एक बाधा उत्पन्न कर सकते हैं और फिर ISR के अंदर सॉफ्टवेयर द्वारा वांछित पिन सेट कर सकते हैं (जो आपको पिन का मुफ्त विकल्प देता है, लेकिन संकेत में कुछ घबराहट का भी परिचय देता है)
- या आप हार्डवेयर टाइमर को पिन को टॉगल करने की अनुमति दे सकते हैं, जिसमें चलाने के लिए कोई सॉफ्टवेयर शामिल नहीं है (इसका मतलब है कि आप केवल 2 पिनों में से एक का उपयोग कर सकते हैं, जो संबंधित टाइमर के साथ जुड़े हैं, लेकिन आपको बहुत अधिक स्थिर संकेत मिलेगा )
वेब पर बहुत सारे ट्यूटोरियल हैं कि कैसे करना है। "Arduino टाइमर रजिस्टर pwm" की खोज ने मुझे कुछ आशाजनक परिणाम दिए, उदाहरण के लिए यह एक , जहां वे बताते हैं, कैसे टाइमर 1 रजिस्टर के साथ पीडब्लूएम प्राप्त करें और आवृत्ति चुनने के लिए एक स्वतंत्र। (यह एक 3 भाग श्रृंखला है, प्रत्येक टाइमर के लिए एक भाग। टाइमर 0 के लिए भाग 1 यहाँ है , हालांकि आप टाइमर 0 को रखना चाह सकते हैं, क्योंकि यह पसंद है delay()
और millis()
अभी भी सामान्य रूप से काम करता है)। इस साइट पर कई ऐसे प्रश्न भी हैं, उदाहरण के लिए यह एक ।
संबंधित हार्डवेयर के लिए एक और बहुत महत्वपूर्ण स्रोत संबंधित माइक्रोकंट्रोलर की डेटशीट है। Uno, Nano या Mini के लिए जो Atmega328p है, जो डेटाशीट यहां माइक्रोचिप साइट पर पाया जा सकता है (या जब माइक्रोकंट्रोलर नाम के लिए googling)