所需硬件
Arduino UNO
2伺服電機
面包板
跳線
必需的軟件
Wekinator
Arduino IDE
Wekinator控制的伺服電機電路圖
首先連接每個伺服上的紅線連接到Arduino的5V引腳。然后將每個伺服的黑線連接到Arduino的地線。最后,將其中一個伺服電機的黃色線連接到Arduino上的引腳8,將黃色線從另一個伺服器連接到引腳9.
通過Wekinator控制伺服系統(tǒng)的電路圖
如何在Arduino IDE中運行Wekinator
將本帖末尾提供的Arduino專用代碼粘貼到Arduino的IDE中并上傳。
然后你需要從Wekinator下載草圖文件快速演練頁面。
下載演練頁面上的屏幕鼠標(biāo)控制示例。解壓縮文件并在處理中運行草圖。該草圖為Wekinator提供輸入。您需要另一個輸出部分的草圖,您可以在本文末尾找到它。將該代碼粘貼到處理窗口并運行它 - 兩個處理輸出窗口應(yīng)如下所示:
處理Wekinator中的輸出窗口
打開Wekinator并按如下所示更新設(shè)置:
將輸入窗口設(shè)置為2
將輸出窗口設(shè)置為2
將類型設(shè)置為自定義
更新設(shè)置后,單擊“配置”。
在Wekinator中創(chuàng)建新項目窗口。
單擊“配置”后,將打開“自定義輸出類型”窗口。在此窗口中,按如下方式調(diào)整設(shè)置:
在Wekinator中自定義輸出類型窗口。
拖動處理中的綠框窗口到左側(cè)中心并將Wekinator窗口中的設(shè)置調(diào)整為下面顯示的值,然后短暫開始和停止錄制。
將處理窗口中的綠色框移動到屏幕右側(cè)的中心,并調(diào)整Wekinator窗口中的設(shè)置,如下所示。再一次,短暫地開始和停止錄制
接下來,將處理窗口中的綠框拖到窗口的中央頂部區(qū)域并調(diào)整設(shè)置在下面的Wekinator窗口中顯示的那些。再次,快速開始和停止錄制。
最后,將處理窗口中的綠色框拖到窗口的底部中心,并將設(shè)置調(diào)整為反映Wekinator窗口中顯示的那些。最后一次,快速開始和停止錄制。
單擊“訓(xùn)練”按鈕,然后選擇“運行”。在處理窗口中拖動綠色框時,連接到Arduino的伺服器將相應(yīng)移動。
處理代碼(Wekinator的輸出)
import vsync.*; // Importing the library that will help us in sending and receiving the values from the Arduino
import processing.serial.*; // Importing the serial library
// Below libraries will connect and send, receive the values from Wekinator
import oscP5.*;
import netP5.*;
// Creating the instances
OscP5 oscP5;
NetAddress dest;
ValueSender sender;
// These variables will be synchronized with the Arduino and they should be same on the Arduino side.
public int output;
public int output1;
void setup()
{
// Starting the serial communication, the baudrate and the com port should be same as on the Arduino side.
Serial serial = new Serial(this, “COM10”, 19200);
sender = new ValueSender(this, serial);
// Synchronizing the variables as on the Arduino side. The order should be same.
sender.observe(“output”);
sender.observe(“output1”);
// Starting the communication with Wekinator. listen on port 12000, return messages on port 6448
oscP5 = new OscP5(this, 12000);
dest = new NetAddress(“127.0.0.1”, 6448);
}
// Recieve OSC messages from Wekinator
void oscEvent(OscMessage theOscMessage) {
if (theOscMessage.checkAddrPattern(“/wek/outputs”) == true) {
// Receiving the output from Wekinator
float value = theOscMessage.get(0).floatValue(); // First output
float val = theOscMessage.get(1).floatValue(); // Second output
// Converting the output to int type
output = int(value);
output1 = int(val);
}
}
void draw()
{
// Nothing to be drawn for this example
}
Weoulator控制的舵機的Arduino代碼
#include // Including the library that will help us in receiving and sending the values from processing
#include // Including the servo library
ValueReceiver《2》 receiver; /*Creating the receiver that will receive up to 2 values.
Put the number of values to synchronize in the brackets */
/* The below two variables will be synchronized in the processing
and they should be same on both sides. */
int output;
int output1;
// Creating the instances
Servo myservo;
Servo myservo1;
void setup()
{
/* Starting the serial communication because we are communicating with the
Arduino through serial. The baudrate should be same as on the processing side. */
Serial.begin(19200);
// Initializing the servo pins
myservo.attach(8);
myservo1.attach(9);
// Synchronizing the variables with the processing. The variables must be int type.
receiver.observe(output);
receiver.observe(output1);
}
void loop()
{
// Receiving the output from the processing.
receiver.sync();
// Check for the info we‘re looking for from Processing
if (output 《 180) {
myservo.write(output);
}
if (output1 《180)
{
myservo1.write(output1);
}
}
-
伺服電機
+關(guān)注
關(guān)注
85文章
2020瀏覽量
57628 -
Arduino
+關(guān)注
關(guān)注
187文章
6457瀏覽量
186501
發(fā)布評論請先 登錄
相關(guān)推薦
評論