Input_Pullup خاصيةالـ June 29, 2017 – Posted in: Arduino – Tags: input, Input_Pullup, Pullup, خاصية, مداخل
اعتاد أغلبنا أن يقوم بتوصيل مقاومة كـ pull up resistor أو كـ pull down resistor مع منافذ لوصل مفتاح ال pushbutton عليه حتى يعمل المفتاح بشكل صحيح،
لكن يمكنك أن توصل الزر بدون استخدام مقاومة خارجية وتوصيل المفتاح مباشرة مع منافذ الاردوينو، حيث أن الأردوينو يمتلك مقاومات داخلية قيمتها 50 كيلو أوم موصلة بالـ 5 فولت ويمكنك تفعيل توصيلها كـ pull up resistor مع مدخل الأردوينو وتوصيل الزر مباشرة معه بدون مقاومة أخرى.
ولتفعيل هذه الخاصية يجب ان تقوم بادخال INPUT_PULLUP في الامر pinMode بدلا من INPUT فقط ،ومن ثم قم بتوصيل أحد طرفي الزر بالـ GND والطرف الآخر بمدخل الأردوينو الذي تريد استخدامه والذي قمت بالإعلان عنه مسبقا كـ INPUT_PULLUP
والان دعونا نقوم بإعادة المثال في الدرس السابق باستخدام هذه الخاصية
طريقة التوصيل
في البداية سنقوم بتوصيل الدائرة كما في الشكل التالي، وذلك بتوصيل السلك من منفذ رقم 2 الى احد اطراف المفتاح و الطرف الاخر للمفتاح مع الGND، وأخيرا نوصل اللد في منفذ ١٣ كما في الشكل .
والان سنقوم بالقليل من التعديل في الكود في برنامج الاردوينو
في الامر pinmode الخاص للمفتاح نقوم بكتابة INPUT_PULLUP بدل من INPUT ليصبح الامر كالاتي
1 |
pinMode(buttonPin, INPUT_PULLUP); |
بعد تحميل الكود ستجد أن الزر يعمل بشكل مستقر بدون أن يتأثر بأي ضوضاء خارجية وبدون أن يكون موصولا بمقاومة إضافية مما يوفر الوقت والمساحة في التوصيل.
الكود كامل
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
int buttonPin = 2; int ledPin = 13; int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } |