1. 程式人生 > >Arduino通過串列埠控制舵機角度實驗

Arduino通過串列埠控制舵機角度實驗

要做向日葵式的太陽能收集器,除了找到光線外,還需要控制方向的部件,這裡選擇使用舵機控制方向,本實驗室是用的是9克舵機。

舵機一般都是有可控制範圍的,標準舵機是90度,也有小於90度的也有360度的舵機,本實驗是180度的舵機。

這次實驗除了實驗了舵機的使用,還涉及到了串列埠的資料讀取與傳送。

1接線方法


PS:板子上數字介面,有些數字旁邊有個~,有些沒有,~代表有PWN,板子上也會有說明,可以留意一下。

2程式

#include <Servo.h> //引入lib

Servo myservo;  // 建立一個伺服電機物件

char inByte = 0; //串列埠接收的資料
int angle = 0;  //角度值
String temp = "";//臨時字元變數,又或者說是快取用的吧

void setup() 
{
  myservo.attach(9);    //定義舵機的引腳為9,舵機只能是10,或者9引腳
  Serial.begin(9600);  //設定波特率
}


void loop() 
{
  while (Serial.available() > 0) //判斷串列埠是否有資料
  {
    inByte = Serial.read();//讀取資料,串列埠一次只能讀1個字元
    temp += inByte;//把讀到的字元存進臨時變數裡面快取,
                   //再繼續判斷串列埠還有沒有資料,知道把所有資料都讀取出來
   }

   if(temp != "")   //判斷臨時變數是否為空
   {
    angle = temp.toInt();    //把變數字串型別轉成整型
    Serial.println(angle);  //輸出資料到串列埠上,以便觀察
   }
  temp = "";//請看臨時變數
  myservo.write(angle);  //控制舵機轉動相應的角度。
  delay(100);//延時100毫秒
}


接好線上電燒好程式

開啟串列埠,輸入0-180的數值,記得是數值哦,

因為程式沒有做資料驗證如果輸入其他會。。。。。。大家可以自己試試看。

正常輸入數值,舵機就會轉動相應的角度。

相關推薦

Arduino通過串列控制角度實驗

要做向日葵式的太陽能收集器,除了找到光線外,還需要控制方向的部件,這裡選擇使用舵機控制方向,本實驗室是用的是9克舵機。舵機一般都是有可控制範圍的,標準舵機是90度,也有小於90度的也有360度的舵機,本實驗是180度的舵機。這次實驗除了實驗了舵機的使用,還涉及到了串列埠的資料

關於arduino通過串列傳送到processing的資料混亂(錯誤\顯示不正確)的問題解答

最近的教學中,已經開始使用processing和arduino進行串列埠通訊的互動,使用中發現有的同學遇到了arduino傳送給processing的資料存在顯示不正確,甚至混亂的現象。這裡給予統一解釋。 arduino程式碼完成的工作是將模擬訊號口讀入模擬資料,然後經過map對映為0到

Arduino通過串列透傳ESP 13板與java程式互動

Arduino通過串列埠透傳ESP13板與java程式互動 這個程式最基本的想法是用java把Arduino抽象出來,忙活了好幾天,雖然沒有達到最後的想法,但是學到了很多。 Main.java public class Main { pu

STM32通過串列與上位通訊除錯

程式如下,採用串列埠DMA中斷方式接收上位機發送的資料,接受區長度為4個位元組,上位機也傳送4個位元組,按理說應該傳送一次進入一次中斷,但是我的會進入兩次中斷,且第一次中斷的資料是上次傳送的資料。 上位機發送的8687是ascii碼,一個碼是8位(一個位元組),8對應的16

stm32 通過串列控制led燈亮滅 並通過lcd顯示led燈的亮滅狀態

#include "main.h" #include "stm32f0xx_hal.h" /* USER CODE BEGIN Includes */ #include "lcd.h" /* USER CODE END Includes */ /* Private var

通過串列傳值給Arduino,再通過Arduino控制小車(直流電機)移動與二自由度雲臺轉動角度

## 首先,先附上程式碼 ## #include<Servo.h> Servo up,down; String comdata=""; //用於接收串列埠資料 int numdata[2]={0,0};

PC通過串列助手如何給單片發送小數,微控制器接收後如何處理?

兩種思路,供參考。1. 原始位元組按原始位元組資料傳送,這也是我個人比較傾向的方式。首先,位、位元組和位元組流本身沒有任何意義,如果按約定的方式去解析,才能有具體的含義。用什麼約定方式呢?使用符合IEEE 754的浮點數標準,每個浮點數為4個位元組,按標準解析就可以了。其實這個標準,包括STM32在

菜鳥江濤帶你學最小物聯網系統之模組篇(02)——STM32通過串列傳送AT指令控制ESP模組連線伺服器

接著上一篇繼續,這篇部落格我將帶大家使用STM32的串列埠來發送AT指令給ESP模組連線伺服器。當然目前測試使用的是區域網,自己的電腦當伺服器使用。使用TCP連線伺服器,STM32通過ESP12F模組透傳上傳溫溼度資料到伺服器。看下效果圖片 好了,看下主要的實現程式

上位通過串列向開發板傳送檔案

工作中用的一款開發板,網路驅動與PCIE驅動有衝突,因此板子的網路功能基本上都不能用,每次我copy檔案都是把SD卡拔下來(作業系統在SD卡上),插到上位機上去copy,插插拔拔很麻煩,後來我想到了可以通過串列埠傳輸檔案到開發板,就方便多了,網上查了一下步驟: 首先是下載l

VS2013+MFC串列控制元件的簡單上位

因為做東西,正好用到這裡。所以就上傳了檔案分享一下。 利用VS帶的MFC庫,用起來還是比較方便的。空間的程式構架都是自動生成的,具體的程式自己加進去就行。 裡面有整個的工程 還帶有一個生成的EXE檔案,不嫌簡陋的可以直接拿來用。 僅供參考。 下載連結:http://down

Arduino學習筆記(1):控制轉速和繼電器開關

準備: Arduino mega 2560 Micro Servo 9g 杜邦線若干 接線方式如圖: 需要上傳到Arduino的程式碼: #include <Servo.h&

基於U2P-016模組,通過51微控制器或者ARM的串列控制惠普印表機

惠普印表機已經被廣泛的應用,但在51微控制器和ARM中,由於記憶體容間太小,cpu速度有限而不能驅動惠普印表機。 U2P-016就可以很好解決這樣的問題,通過串列埠就可完成對惠普印表機的控制 特點 1、可以實現畫點、畫線、畫圓等基本操作,還可以畫貝賽爾曲線; 2、實現圖

STM32 USB 滑鼠+鍵盤 串列控制

*MOS0101000000# 滑鼠左鍵按下 *MOS0102000000# 滑鼠右鍵按下 *MOS0103000000# 滑鼠中鍵按下 *MOS0100000000# 滑鼠擡起 *MOS01000a0000# 滑鼠向+X移動0x0a *MOS01008a0000# 滑鼠向-X移動0x0a補數 *

STM32USB滑鼠+鍵盤串列控制

USB滑鼠鍵盤資料格式以及按鍵鍵值 網上相關的資料很多 ,有點分散,我沒事就邊學習邊整理了下,供大家參考``: 原文來自https://blog.csdn.net/u013771867/article/details/51465193 滑鼠傳送給PC的資料每次4個位元組 BYTE1 BY

android_things_09_pwm 控制旋轉

adb 連線樹莓派,執行程式控制舵機旋轉。 效果圖 連線舵機 樹莓派5V電源線連線舵機的中間的紅線(不同的舵機正負極連線線可能不一樣,需要正確連線,否則可能燒燬舵機) 樹莓派GND連線舵機棕色的負極 樹莓派 P

C++實現串列通訊上位軟體

串列埠使用的是RS232匯流排進行通訊,通訊方式是半雙工。有兩種方式可以實現串列埠通訊,一種是通過ActiveX控制元件這種方法程式簡單,但欠靈活。第二個是可以通過呼叫Windows的API函式,本例程通過第二種方式。 一般通過四步來完成通訊(1)開啟串列埠(2)配置串列埠(3)讀寫串列埠(4)

樹莓派通過串列與計算機通訊

希望此文可以解決部分朋友的問題。 第一步:用“USB TO TTL”將樹莓派和計算機連線。 第二步:在計算機安裝“USB TO TTL”的驅動 第三步:在計算機上安裝串列埠除錯助手。 第四步:到https://pypi.org/project/pyserial/上下載pyserial

樹莓派python OpenCV捕獲顏色塊並通過串列返回座標資訊

樹莓派python OpenCV捕獲顏色塊並通過串列埠返回座標資訊 樹莓派python OpenCV捕獲顏色塊並通過串列埠返回座標資訊 介紹 開發環境 思路 程式碼 串列埠部分 影象處理部分

樹莓派3b+控制、伺服電機的驅動程式碼。

舵機的控制一般需要一個20ms的時基脈衝,該脈衝的高電平部分一般為0.5ms~2.5ms範圍內的角度控制脈衝部分。以180度角度舵機為例,那麼對應的控制關係是這樣的:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0

QT 使用QextSerialPort類通過串列接收資料時出現readyread()不產生訊號

QT 使用QextSerialPort類通過串列埠接收資料時出現readyread()不產生訊號,槽函式無響應,試了很多辦法,在網上找到的都是QT5自帶的QtSerialPort類問題,對我這個問題都不好使。 其實很簡單,將串列埠設定為事件驅動模式就好