איך יוצרים ספירה לאחור במסך סריאלי? מעלים לארדואינו את הקוד הבא:
משימות:
1. שנו את הספירה לאחור כך שתארך 30 שניות.
2. שנו את הספירה לאחור כך שתארך דקה וחצי.
3. דאגו שבמקום המילים The end יופיע Hi והשם שלכם.
4. בנו מעגל שבסוף הספירה ידליק לד מהבהב.
תוכלו להשתמש לצורך המשימה במעגל פשוט כמו זה:
5. שימו לב שחלק מהפקודות של המסך הסיריאלי מופיעות כ Serial.print וחלק מופיעות כ Serial.println. מה ההבדל בין הפקודות? נסו לשנות ולהחליף ביניהן ולגלות מה המשמעות של כל פקודה..
הרעיון הוא בסך הכל די פשוט: התכנית מתחילה לעשות את הספירה לאחור, מחכה שניה (1000 מילי שניה) ואז ממשיכה את הספירה לאחור.
בתחילת התכנית מוגדר זמן ההתחלה, במקרה הזה - 5 דקות. אם תרצו לעשות ספירה למשהו מרגש יותר, תמיד תוכלו להתחיל כמה שעות קודם בשינוי קטן של ההגדרות בתחילת התכנית.
כמובן, שבסיום הספירה לאחור תוכלו להפעיל תכנית משמעותית יותר מאשר התכנית שמופעלת כאן על ידי שינוי בחלק האחרון של התכנית - ה void trigger.
וכמובן, אל תשכחו: לאחר שחיברתם את הארדואינו למחשב והעלתם את הקוד על הארדואינו אתם עדיין לא אמורים לראות כלום. פתחו את החלון הסיריאלי והחלון יתמלא בספירה לאחור...
משימות:
1. שנו את הספירה לאחור כך שתארך 30 שניות.
2. שנו את הספירה לאחור כך שתארך דקה וחצי.
3. דאגו שבמקום המילים The end יופיע Hi והשם שלכם.
4. בנו מעגל שבסוף הספירה ידליק לד מהבהב.
תוכלו להשתמש לצורך המשימה במעגל פשוט כמו זה:
5. שימו לב שחלק מהפקודות של המסך הסיריאלי מופיעות כ Serial.print וחלק מופיעות כ Serial.println. מה ההבדל בין הפקודות? נסו לשנות ולהחליף ביניהן ולגלות מה המשמעות של כל פקודה..
בהצלחה!!
הקוד:
השבמחקint hours = 0;
int minutes = 0;
int seconds = 10;
void setup(){
Serial.begin(9600);
Serial.println("Hello");
pinMode(2,OUTPUT);
}
void trigger() {
Serial.println("The End");
digitalWrite(2,HIGH);
delay(20000);
}
void stepDown() {
if (seconds > 0) {
seconds -= 1;
} else {
if (minutes > 0) {
seconds = 59;
minutes -= 1;
} else {
if (hours > 0) {
seconds = 59;
minutes = 59;
hours -= 1;
}
else {
trigger();
}
}
}
}
void loop(){
Serial.println("Timer on");
delay(2000);
while (hours > 0 || minutes > 0|| seconds >= 0) {
(hours < 10) ? Serial.print("0") : NULL;
Serial.print(hours);
Serial.print(":");
(minutes < 10) ? Serial.print("0") : NULL;
Serial.print(minutes);
Serial.print(":");
(seconds < 10) ? Serial.print("0") : NULL;
Serial.println(seconds);
delay(1000);
stepDown();
}
}
מתן, יפה מאד!!
מחק