通過串口輸出PWM信號,也就是脈沖寬度調制。改變占空比,可以近似輸出不同的電壓,從而對電機進行調速。
所有資料51hei提供下載:
串口_調_PWM.rar
(4.84 KB, 下載次數: 54)
2017-8-10 21:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
arduino源程序如下:
- // 串口管理單元
- // Alita 2016-10-13 嘗試簡單的數值命令--實用版
- // Alita 2016-10-15 v2:支持負數
- int GetCMD()
- {
- // Read serial input:
- while (Serial.available() > 0)
- {
- // 讀取一個字符
- int inChar = Serial.read();
- // Alita 2016-10-15 負數符號判定
- if(inChar == 45 and inString.length() == 0)
- {
- // 負號條件必須出現在字符串的開頭(當前先這樣處理)
- inString += (char)inChar;
- }
- // 判定是不是數值字符(0~9)
- // [注意]該判定方法組會導致只提取字符串中的所有數字并將其構成一個數字字符序列
- if (isDigit(inChar)) {
- // 添加到字符串中(byte轉換為char類型)
- inString += (char)inChar;
- }
- // 換行符表示結束--也可以使用特殊字符但是需要小心處理
- if (inChar == '\n')
- {
- // 有效性判定
- if(inString.length() <=0)
- {
- // 無效數據
- return 0;
- }
- // 將字符轉換為數值
- int intCMD = inString.toInt();
- if(intCMD == -10)
- {
- Serial.println("right");
- }
- Serial.println(intCMD);
- // 清空輸入
- inString = "";
- // 反饋結果
- return intCMD;
- }
- }
- // 無效結果
- return 0;
- }
- //對串口接受到的數據進行有效性判定
- void Test_SerialPort_CMD1()
- {
- int intCMDValue = 0;
- intCMDValue = GetCMD();
- if(intCMDValue < -255 or intCMDValue > 255)
- {
- // 無效命令
- Serial.println("[Error]Err Speed CMD,Range exception ,not between[0,255]");
- return;
- }
- else if(intCMDValue == 0)
- {
- return;
- }
- else
- {
- analogWrite(13, intCMDValue);
- }
-
- }
復制代碼
|