ברמת "קבלת ההחלטות" של הפח היו כמה מכשולים שהיינו צריכים לעבור על מנת להביא את הפח ל"אישיות" נכונה והתנהגות מול משתמש טיפוסי, ראשית היה צורך בהגדרת התנאים הבסיסים ואז בדרך שבה הם חופפים.
התנאים:
1. מישהו עובר ליד הפח -> תוצאה -> השיר: לתת
2. מישהו עובר ליד הפח אחרי זמן קצוב (30 שניות) -> השיר: בדד
3. מישהו זורק לפח אשפה -> השיר: תודה
4. מישהו זורק לפח אשפה אחרי זמן קצוב (30 שניות) -> השיר: אש
5. מישהו דוחף את הפח או מזיז אותו מהמקום -> השיר זה הזמן לסלוח.
מכיוון התנאים מופעלים דרך ערכים שמתקבלים מהחיישנים שממוקמים על הפח, ישנה חפיפה בין הקרבה לפח לזריקת אשפה, זאת אומרת אם מישהו מתקרב לפח ורוצה לזרוק, אנחנו לא רוצים להשמיע את שיר המעבר אלא רק את שיר הזריקה, וכאשר יתבצע מעבר בלי זריקה יושמע שיר המעבר.
בנוסף, עניין פרקי הזמן גם היה חשוב ביצירת האישיות של הפח משום שהפח הוא יצור חביב ונחמד שמעניק משירין למי שמתייחס אליו, כאשר אלמנט הזמן הוא קריטי והפח מגיב ביתר התרגשות באמצעות שיר חדש זה מעצים את החוויה אשר הפח נותן.
מערכת התנאים המורכבת לקרבה+זריקה:
כאשר:
dist הוא הערך שמתקבל מחיישן הקרבה
trash הוא הערך שמתקבל מחיישן האור (כניסת זבל לפח)
big time הוא הזמן מרגע הפעלת הפח
last_dist_time ו last_in_time הם הזמנים שנספרים מרגע הפעולות של זריקה או התקרבות.
התנאי:
if (dist<20 || dist1<20)
{
if (trash==0)
{
digitalWrite(inled,HIGH);
if((big_time - last_in_time) / 1000 > 30 && last_in_time!=0) {
gotoTrack(4);
pp();delay(23000);pp();
last_in_time = big_time;
} else if((big_time - last_in_time) / 1000 <30) {
gotoTrack(3);
pp();delay(16500);pp();
last_in_time = big_time;
}
} else {
digitalWrite(inled,LOW);
digitalWrite(distled,HIGH);
if((big_time - last_dist_time) / 1000 >30 && last_dist_time!=0) {
gotoTrack(2);
pp();delay(13000);pp();
last_dist_time = big_time;
} else if((big_time - last_dist_time) / 1000 <30){
gotoTrack(1);
pp();delay(16000);pp();
last_dist_time = big_time;
}
}
if (dist>20 || dist1>20)
{
digitalWrite(distled,LOW);
}
}
{
if (trash==0)
{
digitalWrite(inled,HIGH);
if((big_time - last_in_time) / 1000 > 30 && last_in_time!=0) {
gotoTrack(4);
pp();delay(23000);pp();
last_in_time = big_time;
} else if((big_time - last_in_time) / 1000 <30) {
gotoTrack(3);
pp();delay(16500);pp();
last_in_time = big_time;
}
} else {
digitalWrite(inled,LOW);
digitalWrite(distled,HIGH);
if((big_time - last_dist_time) / 1000 >30 && last_dist_time!=0) {
gotoTrack(2);
pp();delay(13000);pp();
last_dist_time = big_time;
} else if((big_time - last_dist_time) / 1000 <30){
gotoTrack(1);
pp();delay(16000);pp();
last_dist_time = big_time;
}
}
if (dist>20 || dist1>20)
{
digitalWrite(distled,LOW);
}
}
אין תגובות:
הוסף רשומת תגובה