שְׁאֵלָה:
מצב כפתור משתנה באופן אקראי
sachleen
2014-02-14 07:01:05 UTC
view on stackexchange narkive permalink

יש לי כפתור לחיבור המחובר לארדואינו שלי אך נראה שהוא מופעל באופן אקראי.

יש לי סיכה אחת של הכפתור המחוברת לסיכה 2 בארדואינו והשנייה מחוברת לקרקע.

  התקנת החלל () {Serial.begin (9600); pinMode (2, INPUT);} loop void () {Serial.println (digitalRead (2));}  

אני מצפה שהיא תדפיס 1 ברציפות ותעבור ל- 0 כשאני לוחץ על כפתור למטה אבל לפעמים זה מראה 0 גם כשאני לא נוגע בו.

אחד תשובה:
#1
+17
sachleen
2014-02-14 07:01:05 UTC
view on stackexchange narkive permalink

כאשר מחובר כפתור בתצורה זו, הקלט הוא מה שמכונה צף , כלומר זה לא 0 או 1. כאשר לוחצים על הכפתור, הוא מחובר לקרקע, אז זה בהחלט a, אך כאשר הוא לא נלחץ למטה, איננו יודעים מהו הערך של הסיכה.

Pull Up Resistor

עלינו לכלול את מה שמכונה "pull-up" נגד למשוך את האות עד לוגיקה 1 כאשר הכפתור אינו נלחץ.

pull up resistor

תמונה מ- Sparkfun

המשמעות של זה היא כאשר לא לוחצים על הכפתור, הארדואינו קורא היגיון 1. כאשר לוחצים על הכפתור הזרם זורם דרך הנגד לקרקע והארדואינו קורא הגיון 0. נגד מעלה

ל- Arduino יש גם נגדי משיכה פנימיים כך שלא בהכרח תצטרך להוסיף רכיב נוסף למעגל שלך. ישנן מספר דרכים להשתמש בזה.

פעם היית צריך לעשות את זה ככה:

  pinMode (pin, INPUT); // הגדר סיכה ל- inputdigitalWrite (pin, HIGH); // הפעל נגדי משיכה  

כעת אנו יכולים לעשות זאת בפשטות בשורה אחת:

  pinMode (pin, INPUT_PULLUP);  

זה מאפשר את הנגד למשוך 20k על אותו סיכה. הקלט כבר לא יצוף כאשר לא לוחצים על הכפתור.

הערה: זה עובד רק כאשר הקצה השני מחובר לקרקע.

ראוי לציין שאותו רעיון עובד גם נגד נגדים נפתחים; כלומר הנגד בדרך כלל מושך את הסיכה נמוך, אך לחיצה על הכפתור מביאה אותו גבוה. ברור שזה חייב להיות חיצוני, מכיוון שאין שום נפתח פנימי על Arduinos רגילים.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...