全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

怎样用Wekinator控制与树莓派连接的伺服电机

时间:2019-07-26 08:54

人气:

作者:admin

标签: 伺服电机 

导读:将两个伺服电机的红线连接到Raspberry Pi的5V GPIO引脚。然后将两个伺服系统的黑线连接到Raspberry Pi的地面。最后,将其中一个伺服电机的黄色线连接到Raspberry Pi的GPIO 4,将另一个伺服的黄...

电路图

将两个伺服电机的红线连接到Raspberry Pi的5V GPIO引脚。然后将两个伺服系统的黑线连接到Raspberry Pi的地面。最后,将其中一个伺服电机的黄色线连接到Raspberry Pi的GPIO 4,将另一个伺服的黄色线连接到Raspberry Pi的GPIO 17。

怎样用Wekinator控制与树莓派连接的伺服电机

如何运行程序

《首先,您需要从Wekinator的快速演练页面下载草图。

从那里下载屏幕上的鼠标控制示例。解压缩并在处理中打开草图。该草图将为Wekinator提供输入。您将需要另一个草图来获取Wekinator的输出。该草图的代码在本文末尾。将其粘贴到处理中并运行它。两个处理输出窗口如下所示:

现在打开Wekinator并进行如下图所示的设置。将输入和输出设置为2,然后将类型设置为“自定义”,然后单击“配置”。

当您点击“配置”时,一个新的窗口将打开。更改该窗口中的设置,如下图所示。

现在将处理窗口中的绿框拖到左侧中央并设置设置在Wekinator窗口中,如下所示。之后,开始录制半秒。

现在将处理窗口中的绿色框拖到右侧中央,然后在Wekinator窗口如下图所示。之后,开始录制半秒。

现在将处理窗口中的绿框拖到中心顶部并在Wekinator中设置设置窗口如下图所示。之后,开始录制半秒。

现在将处理窗口中的绿色框拖到底部中心一侧,然后在Wekinator窗口如下图所示。之后,开始录制半秒。

单击“Train”,然后单击“Run”。现在当您在处理窗口中拖动绿色框时,连接到Raspberry Pi的GPIO引脚的伺服器将根据它移动。

处理代码

import processing.io.*; // Importing the library to control the GPIO pins of raspberry pi

// Below libraries will help in connecting and sending, receiving the values from wekinator

import oscP5.*;

import netP5.*;

// Creating the instances

OscP5 oscP5;

NetAddress dest;

// Variable to store the output

public int output;

public int output1;

// Creating the instances to control the servo

SoftwareServo servo1;

SoftwareServo servo2;

void setup()

{

// Initializing the pins for servo

servo1 = new SoftwareServo(this);

servo1.attach(17);

servo2 = new SoftwareServo(this);

servo2.attach(4);

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

// Converting the output to int type

output = int(value);

output1 = int(val);

}

}

void draw()

{

if (output 》 0 && output 《 180)

{

servo1.write(output);

}

if (output1 》 0 && output1 《 180)

{

servo2.write(output1);

}

}

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信