ScratchBot粉墨登場

Description

Description

作者:Pizg Chen

專案特色

在繪圖或描線時會有畫不直或畫歪的情況嗎?那你一定需要ScratchBot來幫你。ScratchBot是一台能夠畫圖的機器人,只要給予指令它就能繪出你想要的圖形,雖然目前只能使用在簡易的圖形或直線上,而且長度計算、精準度和整體機構外觀也都需要調整,因此未來還會再做改良精進。這個作品的材料取得難度不高、程式碼淺顯易懂,不妨在家自己動手做一台來玩玩吧!

材料準備:

  1. 機構件 * 1
  2. Arduino Nano 開發板 * 1
  3. Arduino Nano 擴展板 * 1
  4. 28BYJ-48 步進馬達 * 2
  5. 步進馬達驅動板 * 2
  6. SG90 伺服馬達 * 1
  7. 2節AA電池盒 * 1
  8. DC5521 電源插頭 * 1
  9. 16500 貍電池 * 2

組裝:

整體上大致很好組裝,唯一要注意的是畫筆要先固定在固定桿上面,然後SG90伺服馬達維持在90度的情況下將固定桿鎖緊。另外,為了避免輪子卡死,在將輪子鎖緊到28BYJ-48步進馬達時,要注意輪軸跟馬達固定板應該留一點空隙,約0.5mm即可。
ScratchBot6

調整SG90伺服馬達的角度:

調整SG90伺服馬達的角度,是為了讓車子行走時畫筆也能夠正確地提筆與下筆。如果沒有調整好伺服馬達轉動的角度,有可能會出現若干狀況,例如:畫筆卡住地面影響車子行進、畫筆沒有接觸地面以致沒有畫出線條…等等。

測試車子前進後退的能力:

程式採用Arduino官方Stepper函式庫,經過測試,激磁512步可以讓28BYJ-48轉動一圈(360度)。ScratchBot的輪徑為60mm,如果激磁5120步,輪子將會轉動10圈。利用簡單的計算,轉動10圈的一棟距離即為輪徑60mm * π * 10 = 1885mm,依照相同的計算方式即可利用激磁來決定想要移動的距離。這邊可以參考-步進馬達控制

程式碼:

//輪子各轉10圈,讓車子前進與後退。
#include
#include

const int stepsPerRevolution = 2048;
Stepper mRight(stepsPerRevolution, 2, 4, 3, 5);
Stepper mLeft(stepsPerRevolution, 6, 8, 7, 9);
const int steps = 512;
int laps;

Servo Pen;

void setup() {
mRight.setSpeed(10);
mLeft.setSpeed(10);

Pen.attach(10);
PenDown();
laps = 10;
}

void loop() {
Forward(steps * laps);
Back(steps * laps);
}

void PenDown() {
Pen.write(116);
}

void PenUp() {
Pen.write(90);
}

void Forward(int steps) {
for(int i=0; i < steps; i++) {
mRight.step(-1);
mLeft.step(1);
}
}

void Back(int steps) {
for(int i=0; i < steps; i++) { mRight.step(1); mLeft.step(-1); } } void Move(int steps) { if (steps > 0)
Forward(steps);
else
Back(steps);
}
※將上述程式碼燒錄至Arduino,讓ScratchBot實際跑一下。再用皮尺測量車子實際行走的距離,並觀察直線歪斜的程度。

變更設計:

  1. 繪圖機構:由於繪圖機構目前是整組設置在車體內部,雖然此舉可以讓ScratchBot的外觀比較簡潔,但相對地也造成讓玩家不方便更換畫筆。玩家必須先拆開頂板上的螺絲、掀開頂板、取出整組繪圖機構、更換畫筆、放回繪圖機構、蓋上頂板,最後鎖緊螺絲,手續上真是繁雜。因此考慮在下一版本將繪圖機構變更到頂板上面,雖然影響車子的外觀,但對於玩家在更換畫筆時應該會便利不少。
    ScratchBot3ScratchBot4
  2. 輪子:在測試時發現輪子會打滑,影響繪圖精準度。因此想為輪子加上橡膠外胎,但好像沒有60mm直徑輪子的市售品只有40mm的。但如果改成40mm的輪子,那麼將會影響到固定在底板下方的電池盒,那就只好將繪圖機構組變更到頂板上,原本的地方就可以拿來放置電池盒,也就可以使用40mm的輪子,打滑的問題一併解決了。

問題討論:

  1. 如果車子實際行走的距離不等於計算的距離時該怎麼辦?
  2. 如果原本應該是直線,實際畫出來有偏斜時該怎麼辦?
  3. 想要畫一條長100mm的直線,程式該怎麼寫?

Resource:

  1. 作品詳細介紹
  2. 更多Pizg Chen的作品

Latest posts by Pizg Chen (see all)

Contact

Contact
  • Category
    Robot Car, Smart Toy, 自走車& mini 4WD

Project簡述

Project簡述
  • 簡述
    ScratchBot是一台能夠畫圖的機器人,只要給予指令它就能繪出你想要的圖形,雖然目前只能使用在簡易的圖形或直線上,而且長度計算、精準度和整體機構外觀也都需要調整,因此未來還會再做改良精進。
  • 作者
    Pizg Chen

您的姓名 〈需填寫〉

您的電子郵件信箱 〈需填寫〉

主旨

您的信件內容