在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Arduino鍵盤怎樣控制伺服

454398 ? 來源:網絡整理 ? 作者:佚名 ? 2019-11-06 11:28 ? 次閱讀

步驟1:設置硬件

Arduino鍵盤怎樣控制伺服

設置很簡單。我們將使用:

引腳4 - 11:鍵盤輸入

引腳3:伺服電機輸出

VCC(5V)

GND(接地)

鍵盤輸入垂直向下連接。將鍵盤上的每根電線從右到左連接到引腳4-11。伺服電機直接連接到5V,接地和引腳3.在我的伺服(Tower Pro SG90)上,紅線為5V,接地為棕色,輸出引腳為黃色。檢查伺服電機的文檔。

步驟2:代碼

讓我們看一下代碼:

#include

#include

// Set up keypad variables:

int numKeyPresses = 0; // Track number of key presses

int maxKeyPresses = 3; // Only allow 3 digits to be entered

int keyPresses[3] = { 0, 0, 0 }; // Initialize an empty array to hold input

const byte numRows= 4; // # of rows on the keypad

const byte numCols= 4; // # of columns on the keypad

// Set up servo variables:

int angle = 0; // Angle in degrees to position servo [0-180]

int angleMultiplier = 1; // Multiply by each digit, divide by 10 on each input

Servo servo; // Create the servo object

int servoPin = 3; // Set the servo pin

char keymap[numRows][numCols]= // Setup the keypad layout

{

{‘1’, ‘2’, ‘3’, ‘A’},

{‘4’, ‘5’, ‘6’, ‘B’},

{‘7’, ‘8’, ‘9’, ‘C’},

{‘*’, ‘0’, ‘#’, ‘D’},

};

在這里,我們導入鍵盤和伺服庫來幫助進行一些輸入和輸出處理。 numkeyPresses變量跟蹤已輸入的條目數。當達到maxKeyPresses時,這將重置為0.鍵盤映射設置為4x4矩陣,模仿物理鍵盤。

// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.

byte rowPins[numRows] = { 11, 10, 9, 8 };

// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

byte colPins[numCols] = { 7, 6, 5, 4 };

// Create the Keypad

Keypad kpd = Keypad( makeKeymap( keymap ), rowPins, colPins, numRows, numCols );

void setup()

{

Serial.begin(9600); // Start up serial comms

resetAngleMultiplier(); // Start accepting numeric input

servo.attach( servoPin ); // Attaches the servo to the servo object

} // setup

這里我們使用一個名為resetAngleMultiplier的方法,我將使用馬上討論一下。我們的想法是,我們希望在數學上將輸入轉換為可用數字,而不是字符。這使我們做到了這一點。

void loop()

{

char key = kpd.getKey();

if( key ) // Check for a valid key

{

if( key 》= 0x41 && key 《= 0x44 || key == 0x23 || key == 0x2A )

{

resetInput();

Serial.println( “ERROR: Numeric input only!” );

} // ^ if invalid entry

else // Else, entry is valid:

{

angle += angleMultiplier * ( key - 0x30 );

angleMultiplier /= 10;

if( numKeyPresses == maxKeyPresses - 1 )

{

setServo( angle ); // Use the input to turn servo

resetInput();

}

else

{

numKeyPresses++;

}

Serial.println( (String) angle );

}

} // if( key )

} // loop

這里我們接受輸入并處理它。我們將討論如何處理它。

void setServo( int angle )

{

if( angle 》 180 )

angle = 180;

Serial.println( “Setting servo to ” + (String) angle + “ degrees.” );

servo.write( angle ); // Set the servo position

} // setServo

void resetAngleMultiplier()

{

angleMultiplier = 1;

/* We started out with a multiplier of 10^0 (or 1)。 For each

number we want to accept, we want to have a multiplier one

order of magnitude greater. So, for example, for 5 digits, the

multiplier starts out as 10 000. */

for( int i = 0; i 《 maxKeyPresses - 1; i++ )

angleMultiplier *= 10;

} // resetAngleMultiplier

void resetInput()

{

resetAngleMultiplier(); // Reset the numeric input

angle = 0; // Reset the angle

numKeyPresses = 0; // Reset number of key presses

}

數學

在循環中,我們檢查非數字輸入并重置numKeyPresses變量if檢測。進行轉換的部分是:angle + = angleMultiplier *(key - 0x30)。當我們獲得按鍵時,它將作為鍵映射2-diminsional數組中的字符返回。 key - 0x30以十六進制的形式減去30以獲得它的數字等價物。

然后,我們必須將它乘以angleMultiplier。角度乘數從100開始。因此,例如,如果第一個數字輸入為3,則添加到角度的數字將為300.然后將角度乘數除以10,以便下一次迭代,角度乘數將為10如果輸入2,則將其乘以10并相加,得到320.這將一直持續到輸入結束。

我寫這個是可擴展的,允許擴展maxKeyPresses。 C ++的最大整數值是2147483647,所以使用這個程序,理論上你可以輸入多達10位的輸入,只要實際的密鑰代碼加起來不超過這個數。您總是可以使用 long 來存儲輸入,但出于我們的目的,沒有必要。

應用數學

所以,現在我們我們(可能過于復雜)的計算,只需將其傳遞給伺服機構,將其定位到該特定角度。這里限制為180度的移動。如果數字輸入超過180,則重置為180度并傳遞給伺服。這可能有多個應用程序,無論您是想在家中實現鎖定系統,安全攝像機定位器,還是您需要的任何應用程序。

責任編輯:wv

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

    關注

    4

    文章

    860

    瀏覽量

    39940
  • 伺服
    +關注

    關注

    16

    文章

    656

    瀏覽量

    41163
  • Arduino
    +關注

    關注

    188

    文章

    6478

    瀏覽量

    188288
收藏 人收藏

    評論

    相關推薦

    伺服電機原理及控制應用

    伺服電機(Servo Motor)是一種高精度、高性能的電動機系統,廣泛應用于需要精確控制位置、速度和加速度的場合。 一、伺服電機的工作原理 伺服電機是指在
    的頭像 發表于 10-22 16:58 ?1501次閱讀

    伺服控制系統的分類方式和常見伺服控制系統介紹

    伺服控制系統是一種能對試驗裝置的機械運動按預定要求進行自動控制的操作系統。伺服系統的分類方法很多,常見的分類方法有以下三種:1、按被控量參數特性分類。2、按驅動元件的類型分類:
    的頭像 發表于 08-26 17:46 ?963次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>控制</b>系統的分類方式和常見<b class='flag-5'>伺服</b><b class='flag-5'>控制</b>系統介紹

    開源項目!基于 Arduino DIY 漂亮的宏機械鍵盤

    大大簡化你的工作流程。 舉個例子,你可以將宏鍵盤上的一個按鍵設置為 CTRL+C 快捷鍵的映射,這樣,在需要復制文本或文件時,只需一鍵即可輕松完成。當你按下這個按鍵時,內置的 Arduino 會立即
    發表于 08-19 17:02

    PLSY指令怎樣控制伺服正反轉

    PLSY指令(PLC中的脈沖輸出指令)通常用于控制伺服電機的正反轉和速度。 1. 伺服電機概述 伺服電機是一種高精度、高響應速度的電機,廣泛應用于自動化設備、機器人、數控機床等領域。
    的頭像 發表于 08-19 14:51 ?2237次閱讀

    伺服電機也是脈沖控制嗎為什么

    伺服電機是一種高精度、高響應速度的電機,廣泛應用于工業自動化、機器人、航空航天等領域。伺服電機的控制方式有很多種,其中脈沖控制是一種常見的控制
    的頭像 發表于 07-14 10:37 ?1117次閱讀

    通過I2C PWM IC控制伺服,可以為伺服控制進行高優先級中斷嗎?

    () 大約需要 100 毫秒才能完成請求。 我怎樣才能避免那里的事情。 我可以為伺服控制進行高優先級中斷嗎? 使用 Arduino IDE。
    發表于 07-12 06:20

    伺服液壓機控制系統原理是什么

    伺服液壓機是一種利用伺服電機驅動液壓泵,實現精確控制壓力、速度和位置的液壓設備。它廣泛應用于金屬成型、塑料成型、壓裝、校直、拉伸、彎曲、沖壓等領域。伺服液壓機
    的頭像 發表于 06-17 10:04 ?1508次閱讀

    伺服控制系統的分類方式和常見伺服控制系統介紹

    ? 伺服控制系統是一種能對試驗裝置的機械運動按預定要求進行自動控制的操作系統。伺服系統的分類方法很多,常見的分類方法有以下三種: ? 1、按被控量參數特性分類。 ? 2、按驅動元件的類
    的頭像 發表于 06-17 09:00 ?1082次閱讀

    伺服驅動器對伺服電機的控制要求

    伺服驅動器對伺服電機的控制要求是一個復雜而深入的話題。以下是關于伺服驅動器對伺服電機控制要求的概
    的頭像 發表于 06-14 15:24 ?956次閱讀

    mach3控制怎樣連接伺服

    在這篇文章中,我們將詳細介紹如何將Mach3控制卡與伺服電機連接。Mach3是一款廣泛使用的數控(CNC)軟件,它可以控制各種類型的機械設備,包括銑床、車床、激光切割機等。伺服電機是一
    的頭像 發表于 06-12 14:15 ?2416次閱讀

    運動控制伺服電機如何控制

    運動控制伺服電機控制是現代工業自動化領域中一項重要的技術,它涉及到運動控制卡、伺服電機、控制
    的頭像 發表于 06-12 14:13 ?1109次閱讀

    plc控制伺服電機的指令有哪些

    PLC(可編程邏輯控制器)是一種廣泛應用于工業自動化領域的控制設備。伺服電機作為執行元件,可以通過PLC進行精確控制。以下是關于PLC控制
    的頭像 發表于 06-12 11:39 ?2811次閱讀

    求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?

    在esp-idf中使用arduino作為組件后怎樣使用arduino的庫,例如我此時需要使用arduino的第三方庫blinker,怎樣使用
    發表于 06-12 07:21

    液壓伺服控制系統的控制要求

    液壓伺服控制系統是一種利用液壓傳動和伺服控制技術實現精確控制的系統。它廣泛應用于工業、航空、船舶、冶金等領域。本文將詳細介紹液壓
    的頭像 發表于 06-05 15:59 ?1054次閱讀

    伺服驅動器和伺服控制器的區別

    在工業自動化和精密控制領域中,伺服驅動器和伺服控制器是兩個至關重要的組件,它們各自在伺服系統中扮演著不同的角色。盡管兩者在功能和目的上有所重
    的頭像 發表于 06-05 15:24 ?2587次閱讀
    主站蜘蛛池模板: 色香影院| 伊人久久综合成人网小说 | 色婷婷色婷婷 | 奇米影视99| 亚洲伊人久久大香线蕉结合 | 欧美日韩国产一区二区 | 国产伦一区二区三区免费 | 国产v69| 色多多免费观看在线 | 九九re6精品视频在线观看 | 欧美日韩精品一区二区在线线 | 日韩成人免费观看 | 哥也操 | 色偷偷91久久综合噜噜噜噜 | 欧美成人精品一级高清片 | 性欧美黑人| 日本特黄特色大片免费看 | 亚洲第一精品夜夜躁人人爽 | se94se亚洲欧美在线 | 天天激情站 | 久久福利青草精品资源站免费 | 亚洲一区二区三区在线视频 | 天堂免费观看 | 日韩在线三级 | 精品午夜久久福利大片免费 | 黄色免费在线网站 | 日本不卡视频在线播放 | 婷婷国产成人久久精品激情 | 女人张开腿让男人桶视频免费大全 | 天天操人人射 | 亚洲综合在线观看一区www | 四虎永久精品免费网址大全 | 中文字幕 亚洲一区 | 欧美高清一区二区 | 一色屋精品免费视频 视频 一色屋免费视频 | 一级@片| 国产成人综合久久 | 久久成人网18网站 | 亚洲国产精品丝袜在线观看 | 天天干影视 | 天堂avwww |