0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過Wekinator平臺使用手勢控制Arduino

454398 ? 來源:工程師吳畏 ? 2019-07-30 14:35 ? 次閱讀

電路圖

將其中一個蜂鳴器的正極連接到Arduino的9針和Arduino的10針的另一個蜂鳴器的正面。然后將兩個蜂鳴器的負片連接到項目的Arduino.section的地面。

如何運行代碼

首先,在Arduino IDE中粘貼為本文末尾的Arduino提供的代碼并上傳代碼。

然后您需要從Wekinator的示例頁面下載草圖。

下載源代碼以處理簡單的10x10顏色網(wǎng)格。解壓縮并在處理中運行代碼。該程序將使用您的筆記本電腦網(wǎng)絡攝像頭,根據(jù)您在攝像頭前所做的操作,它將為Wekinator提供輸入。

您需要另一個草圖來輸出Wekinator的輸出。這篇文章末尾的草圖代碼。將其粘貼到處理中并運行草圖。這個草圖將從Wekinator輸出并將其發(fā)送到Arduino,蜂鳴器將播放不同的聲音。

兩個處理窗口應如下所示。

現(xiàn)在打開Wekinator并進行如下圖所示的設置。將輸入設置為100,將輸出設置為2.將類型設置為“自定義”,然后單擊“配置”。

點擊“配置”時“,一個新窗口將打開,如下所示。更改設置,如下圖所示。

現(xiàn)在退出網(wǎng)絡攝像頭并點擊“隨機化”。開始錄制半秒。

現(xiàn)在將右手顯示在網(wǎng)絡攝像頭的右側,然后單擊“隨機化”。然后開始錄制半秒。

現(xiàn)在將左手顯示在網(wǎng)絡攝像頭的左側,然后單擊“隨機化”。然后開始錄制半秒。

然后,單擊“訓練”,然后單擊“運行”。現(xiàn)在,Arduino將根據(jù)您在網(wǎ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 syncronized 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

}

Arduino代碼

#include // Including the library that will help us in receiving and sending the values from processing

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;

// Pin connected to buzzer

int buzzer = 9;

int buzzer1 = 10;

int i,j;

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

// Synchronizing the variables with the processing. The variables must be int type.

receiver.observe(output);

receiver.observe(output1);

// Defines the Buzzer pins as output

pinMode(buzzer,OUTPUT);

pinMode(buzzer1,OUTPUT);

}

void loop()

{

// Receiving the output from the processing.

receiver.sync();

// Making the buzzer to beep according to the output from the processing

tone(buzzer1, output);

delay(5);

noTone(buzzer1);

tone(buzzer,output1);

delay(5);

noTone(buzzer);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    188114
  • 手勢控制
    +關注

    關注

    4

    文章

    44

    瀏覽量

    21865
收藏 1人收藏

    評論

    相關推薦

    如何使用Arduino實現(xiàn)CAN總線通信呢

    CAN(Controller Area Network)總線是一種常用于汽車和工業(yè)控制系統(tǒng)的串行通信協(xié)議,以其高可靠性和實時性而聞名。Arduino,作為一種流行的開源微控制平臺,可
    的頭像 發(fā)表于 12-23 09:06 ?624次閱讀

    HAL庫在Arduino平臺上的使用

    HAL庫在Arduino平臺上的使用 Arduino平臺是一個開源的電子原型平臺,它包括硬件(基于微控制
    的頭像 發(fā)表于 12-02 14:04 ?540次閱讀

    stm32與Arduino的比較

    在微控制器的世界里,STM32和Arduino是兩個經(jīng)常被提及的名字。STM32是一系列由STMicroelectronics生產(chǎn)的高性能微控制器,而Arduino則是一個開源電子原型
    的頭像 發(fā)表于 11-19 15:45 ?1965次閱讀

    如何使用Arduino實現(xiàn)CAN總線通信

    開源硬件平臺,通過添加CAN總線模塊,也可以實現(xiàn)CAN通信。 硬件準備 Arduino開發(fā)板 :可以選擇Arduino Uno、Mega等型號。 CAN總線模塊 :如MCP2515或M
    的頭像 發(fā)表于 11-12 10:09 ?1450次閱讀

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表 組合手勢

    手勢識別組合,即多種手勢組合為復合手勢,支持連續(xù)識別、并行識別和互斥識別。
    的頭像 發(fā)表于 06-19 09:33 ?489次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表 組合<b class='flag-5'>手勢</b>

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表PinchGesture之基礎手勢

    用于觸發(fā)捏合手勢,觸發(fā)捏合手勢的最少手指為2指,最大為5指,最小識別距離為3vp。
    的頭像 發(fā)表于 06-18 09:33 ?420次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表PinchGesture之基礎<b class='flag-5'>手勢</b>

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表RotationGesture之基礎手勢

    用于觸發(fā)旋轉手勢事件,觸發(fā)旋轉手勢的最少手指為2指,最大為5指,最小改變度數(shù)為1度。
    的頭像 發(fā)表于 06-18 09:27 ?366次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表RotationGesture之基礎<b class='flag-5'>手勢</b>

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表PanGesture之基礎手勢

    用于觸發(fā)拖動手勢事件,滑動的最小距離為5vp時拖動手勢識別成功。
    的頭像 發(fā)表于 06-17 15:03 ?553次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表PanGesture之基礎<b class='flag-5'>手勢</b>

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表LongPressGesture之基礎手勢

    用于觸發(fā)長按手勢事件,觸發(fā)長按手勢的最少手指數(shù)為1,最短長按時間為500毫秒。
    的頭像 發(fā)表于 06-17 09:59 ?546次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表LongPressGesture之基礎<b class='flag-5'>手勢</b>

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表【綁定手勢方法】 手勢處理

    為組件綁定不同類型的手勢事件,并設置事件的響應方法。
    的頭像 發(fā)表于 06-15 09:17 ?931次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表【綁定<b class='flag-5'>手勢</b>方法】 <b class='flag-5'>手勢</b>處理

    鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表【觸摸熱區(qū)設置】觸摸交互控制

    適用于支持通用點擊事件、通用觸摸事件、通用手勢處理的組件。
    的頭像 發(fā)表于 06-13 10:33 ?537次閱讀
    鴻蒙ArkTS聲明式開發(fā):跨<b class='flag-5'>平臺</b>支持列表【觸摸熱區(qū)設置】觸摸交互<b class='flag-5'>控制</b>

    基于毫米波雷達的手勢識別算法

    與智能家居系統(tǒng)合作,提供更好的用戶體驗,例如通過遠距離的“空中”手勢控制智能家電。例如,用戶可以直接上下?lián)]動她的手來控制燈的狀態(tài),而不是觸摸開關。此外,當用戶坐在沙發(fā)上,想拉開遠處的窗
    發(fā)表于 06-05 19:09

    基于毫米波雷達的手勢識別神經(jīng)網(wǎng)絡

    基于毫米波雷達的高精度、魯棒的手勢識別方法。該方法包括用毫米波雷達模塊捕獲手部運動的原始信號,并對接收到的雷達信號進行預處理,包括傅立葉變換、距離壓縮、多普勒處理和通過運動目標指示(MTI)降噪。然后,將
    發(fā)表于 05-23 12:12

    OpenHarmony實戰(zhàn)開發(fā)-手勢事件

    手勢表示由單個或多個事件識別的語義動作(例如:點擊、拖動和長按)。一個完整的手勢也可能由多個事件組成,對應手勢的生命周期。支持的事件有:
    的頭像 發(fā)表于 04-29 13:57 ?441次閱讀

    基于FPGA技術的手勢識別控制型多功能機械臂系統(tǒng)

    首先通過圖像采集設備來獲取手勢圖像,通過手勢建模將獲取的手勢圖像用數(shù)學模型描述出來,最后根據(jù)得到的手勢識別所需要的模型參量判別出具體的
    發(fā)表于 04-27 11:21 ?1418次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品