פורסם 2012 ביוני 113 שנים 1.מישהו יודע מהי הפקודה לעצירת מנוע סרוו?2.נכון שמשתמשים בפונקציה SERVO.H ... אז מישהו יודע למה צריך את הפונקציה SERVO.CPP ?והאם אפשר להשתמש בה לתוכנית שלי?3.הרכבתי תוכנית שמורכבת מ SERVO SWEEP ומ BUTTON ...ברגע שאני לוחץ על הכפתור המנוע סרוו מתחיל לפעול.הבעיה היא זאת:אם אני מחכה יותר מ 6-7 שניות,המנוע סרוו מתחיל לעבוד בצורה מאוד איטית(וזה לא טוב לי שהוא עובד)אני מעלה את התוכנית שלי-ואני מקווה שאולי מישהו יוכל לתת לי פתרון לבעיות שלי-תודה מראש#include <Servo.h> Servo servo2; int pos = 0; const int buttonPin = 12; int buttonState = 0; void setup() { pinMode(buttonPin, INPUT); servo2.attach(5); }void loop(){ buttonState = digitalRead(buttonPin);if (buttonState == HIGH) { servo2.write(10); delay(2000); servo2.write(170); delay(2000); }}
פורסם 2012 ביוני 113 שנים 1. מנוע סרבו לא "עוצרים": פשוט נותנים לו ערך, הוא זז לשם ואז עוצר שם בעצמו. אם אתה חייב לבצע "בלימת חירום" באמצע תנועה, הכי פשוט לנתק לו את הזרם.2. קובץ Servo.cpp זה הקוד של הספריה Servo. הקובץ Servo.h הוא הממשק של הקוד הזה בשביל תוכניות אחרות, כמו התוכנית שלך. כשאתה כותב את ההנחיה include אתה בעצם מתחבר דרך הממשק לקוד, וזה מה שמאפשר לך להשתמש בפונקציות של הספריה.3. במבט ראשון התוכנה שלך נראית בסדר, אז אני מנחש שיש בעיה כלשהי בחומרה. האם חיברת ללחצן נגד pull-down? כתבתי על הנושא כאן: http://www.idogendel.com/whitebyte/archives/354
פורסם 2012 ביוני 213 שנים מחבר תודהigendel שהקדשת לרשום תגובה.בקשר לעצירת סרוו...1. לפי התוכנית שפרסמתי,בסופו של דבר אין אני עוצר את הסרוו מלעבוד לאחר הפעולה שאני רוצה שיעשה?(ללא הוצאת המתח)למשל:הדרישה שלי מהסרוו לאחר שאני לוחץ על מתג הפעלה הוא-2 סיבובים עם כיוון השעון ואז סיבוב נגד כיוון השעון ואז סיום פעולה(אני רוצה שיעשה את הפעולה הנ"ל פעם אחת)האם צריך לעשות איזה תנאי או לולאה? אם יש לך פתרון-אשמח אם תרשום לי פקודת קוד להפסקת הסרוו לאחר פעולה אחת2.הדבר המטריד יותר שיש לי -הוא שאם אני ממתין יותר מ 6-7 שניות הסרוו מתחיל לעבוד(לאט מאוד וזה ללא שננתי לו הוראה לפעול דרך הלחצן הפעלה)...איך אני יכול למנוע ממנוע הסרוו שלי להתחיל לעבוד מרצונו?תודה מראש
פורסם 2012 ביוני 213 שנים 1. שוב, אין דרך "רשמית" לעצור סרבו. אם הסרבו שלך הוא כרגע בזווית 0, ואתה מריץ את הפקודהservo2.write(10);הסרבו פשוט יעבור הכי מהר שהוא יכול לזווית של 10 מעלות ויישאר שם עד להודעה חדשה. אתה לא צריך לעשות שום דבר מעבר לזה.שים לב שרוב הסרבואים הנפוצים מוגבלים בטווח התנועה שלהם - בדרך כלל רק 180 מעלות. אם אתה רוצה יותר מסיבוב שלם, אתה צריך מנוע מסוג Continuous Rotation Servo2. אם הסרבו שלך מתחיל לנוע מעצמו והסיבה היא לא בתוכנה, אז כנראה שיש בעיה באספקת החשמל או בסיגנל. למשל, יכול להיות שהוא צריך יותר חשמל ממה שהארדואינו יכול לספק (אם הסרבו מחובר ישירות לארדואינו), יכול להיות שרכיבים חשמליים אחרים במערכת מוסיפים "רעש", יכול להיות שהלחצן שלך יוצר חיבור צף (קרא שוב את הפוסט בקישור שנתתי קודם)... אי אפשר לדעת בלי לראות את המעגל שלך ואת המפרט של הסרבו שבו אתה משתמש.
פורסם 2012 ביוני 213 שנים מחבר אני משתמש בסרוו 360 Continuous Rotation Servoעכשיו כשאני מריץ את התוכנית: (ברגע שאני לוחץ על המתג(כאשר אני לוחץ יש קצר וברגע שאני עוזב אין קצר)-התוכנית מתחילה לעבוד-ואז הסרוו מסתובב לכיוון אחד ב 10 מעלות ואז מסתובב לצד השני ללא הפסקקקה....הוא לא מפסיק לעצור.אז איך אני עוצר?ומה הפקודה להקטין את מהירות סיבוב המנוע?תודה מראשvoid loop(){ buttonState = digitalRead(buttonPin);if (buttonState == HIGH) { servo2.write(10); delay(2000); servo2.write(170); delay(2000);
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.