עבור לתוכן

צריך עזרה:מהי הפקודה לכיבוי סרוו? ובעיה נוספת עם בניית תוכנית טובה

Featured Replies

פורסם

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);

}

}

פורסם

1. מנוע סרבו לא "עוצרים": פשוט נותנים לו ערך, הוא זז לשם ואז עוצר שם בעצמו. אם אתה חייב לבצע "בלימת חירום" באמצע תנועה, הכי פשוט לנתק לו את הזרם.

2. קובץ Servo.cpp זה הקוד של הספריה Servo. הקובץ Servo.h הוא הממשק של הקוד הזה בשביל תוכניות אחרות, כמו התוכנית שלך. כשאתה כותב את ההנחיה include אתה בעצם מתחבר דרך הממשק לקוד, וזה מה שמאפשר לך להשתמש בפונקציות של הספריה.

3. במבט ראשון התוכנה שלך נראית בסדר, אז אני מנחש שיש בעיה כלשהי בחומרה. האם חיברת ללחצן נגד pull-down? כתבתי על הנושא כאן: http://www.idogendel.com/whitebyte/archives/354

פורסם
  • מחבר

תודהigendel שהקדשת לרשום תגובה.

בקשר לעצירת סרוו...

1. לפי התוכנית שפרסמתי,בסופו של דבר אין אני עוצר את הסרוו מלעבוד לאחר הפעולה שאני רוצה שיעשה?(ללא הוצאת המתח)

למשל:הדרישה שלי מהסרוו לאחר שאני לוחץ על מתג הפעלה הוא-2 סיבובים עם כיוון השעון ואז סיבוב נגד כיוון השעון ואז סיום פעולה(אני רוצה שיעשה את הפעולה הנ"ל פעם אחת)

האם צריך לעשות איזה תנאי או לולאה? אם יש לך פתרון-אשמח אם תרשום לי פקודת קוד להפסקת הסרוו לאחר פעולה אחת

2.הדבר המטריד יותר שיש לי -הוא שאם אני ממתין יותר מ 6-7 שניות הסרוו מתחיל לעבוד(לאט מאוד וזה ללא שננתי לו הוראה לפעול דרך הלחצן הפעלה)...איך אני יכול למנוע ממנוע הסרוו שלי להתחיל לעבוד מרצונו?

תודה מראש

פורסם

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

servo2.write(10);

הסרבו פשוט יעבור הכי מהר שהוא יכול לזווית של 10 מעלות ויישאר שם עד להודעה חדשה. אתה לא צריך לעשות שום דבר מעבר לזה.

שים לב שרוב הסרבואים הנפוצים מוגבלים בטווח התנועה שלהם - בדרך כלל רק 180 מעלות. אם אתה רוצה יותר מסיבוב שלם, אתה צריך מנוע מסוג Continuous Rotation Servo

2. אם הסרבו שלך מתחיל לנוע מעצמו והסיבה היא לא בתוכנה, אז כנראה שיש בעיה באספקת החשמל או בסיגנל. למשל, יכול להיות שהוא צריך יותר חשמל ממה שהארדואינו יכול לספק (אם הסרבו מחובר ישירות לארדואינו), יכול להיות שרכיבים חשמליים אחרים במערכת מוסיפים "רעש", יכול להיות שהלחצן שלך יוצר חיבור צף (קרא שוב את הפוסט בקישור שנתתי קודם)... אי אפשר לדעת בלי לראות את המעגל שלך ואת המפרט של הסרבו שבו אתה משתמש.

פורסם
  • מחבר

אני משתמש בסרוו 360 Continuous Rotation Servo

עכשיו כשאני מריץ את התוכנית: (ברגע שאני לוחץ על המתג(כאשר אני לוחץ יש קצר וברגע שאני עוזב אין קצר)-התוכנית מתחילה לעבוד-ואז הסרוו מסתובב לכיוון אחד ב 10 מעלות ואז מסתובב לצד השני ללא הפסקקקה....הוא לא מפסיק לעצור.

אז איך אני עוצר?ומה הפקודה להקטין את מהירות סיבוב המנוע?

תודה מראש

void loop()

{

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH)

{

servo2.write(10);

delay(2000);

servo2.write(170);

delay(2000);

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים