LED מהבהב - תיאור הקוד
ערכה: LED blinker
הקוד יעשה 3 דברים
1. ישלוט על הרמקול וישמיע צפצופים
2. ישלוט על LED ויהבהב אותה
3. יאזין לכניסת הכפתור ויפעל בהתאם לערכיה
שליטה על הרמקול
void beep(){ digitalWrite(pinSpkr, HIGH); delay(200); digitalWrite(pinSpkr, LOW); }
כלומר בעזרת פקודת digitalWrite משנים את המתח על הפין הרלבנטי וכך יוצרים עליו מתח גבוה/נמוך לפי הצורך
שליטה על ה-LED
void blink1(){ digitalWrite(pinLED, HIGH); delay(500); digitalWrite(pinLED, LOW); delay(200); }
כאשר נרצה לעשות 3 הבהובים, אנו יכולים לעשות לולאה סביב הפונקציה הזו, או לקרוא לה 3 פעמים
void blink3(){ blink1(); blink1(); blink1(); }
הערה: לולאה מאפשרת גמישות רבה יותר לשינוי כמות ההבהובים בעתיד, ולכן יש בה יתרון
למשל:
void blink5(){ for(byte k=0;k<5;k++){ blink1(); } }
קליטת כפתור ופעולה
נרצה גם להאזין לכפתור וגם לפעול לפי הערך שלו.
קליטת ערך פין כניסה מתבצעת עם הפקודה digitalRead
void loop() { // put your main code here, to run repeatedly: val_btn = digitalRead(pinBtn); if(val_btn == HIGH){ beep(); blink3(); delay(2000); } delay(100); }
כלומר החלק האדום קולט את הערך של הפין, והחלק הירוק יוצר פעולה כאשר ערך זה הוא מתח גבוה
סגנון כתיבה
הקוד שאנו כותבים מתייחס אל האופן בו חיברנו את המעגל, ואנו נדרשים לשלב בקוד שלנו את מספרי הפינים אליהם חיברנו את האלמנטים.
עלול להיות מצב בעתיד שבו נשנה את אופן ומיקום החיבורים.
כדי שבשינוי שכזה יהיה לנו קל להתאים את הקוד, מומלץ להגדיר את מספרים הפינים כקבועים בתחילת הקוד, ואז לעבוד רק עם קבועים אלה
למשל
const int pinLED=6; const int pinBtn=7; const int pinSpkr=8; void setup() { // put your setup code here, to run once: pinMode(pinLED, OUTPUT); pinMode(pinSpkr, OUTPUT); pinMode(pinBtn, INPUT); digitalWrite(pinLED, LOW); digitalWrite(pinSpkr, LOW); }
יתרון נוסף שיש בצורת רישום זו - קל למצוא מהר לאיזה חיבורים הקוד מצפה (כי המידע מרוכז בתחילת הקוד). זו אגב סיבה נוספת לתת שמות בעלי משמעות לפינים.