用超聲波控制舵機(jī):
搞了兩天,分分鐘的事情悦即,結(jié)果BUG千奇百怪吮成。
1橱乱,上傳Nano失敗:工具》開(kāi)發(fā)板或者處理器粱甫,改變他們泳叠。或者? ? 改變編程器茶宵。
2再試試上傳時(shí)候按一下板子上的按鈕危纫。
3程序邏輯自己認(rèn)為沒(méi)問(wèn)題的,在各個(gè)判斷循環(huán)等處加上 Serial.println("helloword"); //測(cè)試用??
4超聲波5V電壓N谑V值!B鞔蟆sφ鳌!透敌!Vcc沒(méi)有特殊說(shuō)明就是5V
5今天BUG已被浪翻盯滚,更多BUG,明天見(jiàn)P锏纭F桥骸!撵术!
代碼:
// Trig接Arduino板的Digital 5口背率,觸發(fā)測(cè)距;Echo接Digital 4口嫩与,接收距離信號(hào)寝姿。#include //舵機(jī)頭文件
Servo myservo;? // 設(shè)置舵機(jī)名
int inputPin = 4; // 定義超聲波信號(hào)接收接口
int outputPin = 5; // 定義超聲波信號(hào)發(fā)出接口
int pos = 0;? ? // varible to store the servo position
void setup()
{
? Serial.begin(9600);
? pinMode(inputPin, INPUT);
? pinMode(outputPin, OUTPUT);
? myservo.attach(9);? // 連接舵機(jī)到數(shù)字接口9
}
void loop()
{
? digitalWrite(outputPin, LOW); // 使發(fā)出發(fā)出超聲波信號(hào)接口低電平2μs
? delayMicroseconds(2);
? digitalWrite(outputPin, HIGH); // 使發(fā)出發(fā)出超聲波信號(hào)接口高電平10μs,這里是至少10μs
? delayMicroseconds(10);
? digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號(hào)接口低電平
? int distance = pulseIn(inputPin, HIGH); // 讀出脈沖時(shí)間
? distance = distance / 58; // 將脈沖時(shí)間轉(zhuǎn)化為距離(單位:厘米)
? Serial.println(distance); //輸出距離值
? delay(2000);
? if (distance < 20)
? { //analogWrite(motor,0);
? ? myservo.write(90);? ? ? ? ? ? ? // tell servo to go to position in variable 'pos'
? ? Serial.println("helloword"); //測(cè)試用
? ? delay(1000);
? ? // tell servo to go to position in variable 'pos'
? }
? else {
? ? // goes from 180 degrees to 0 degrees
? ? myservo.write(0);? ? ? ? ? ? ? // tell servo to go to position in variable 'pos'
? ? // waits 15ms for the servo to reach the position
? ? Serial.println("zk"); //測(cè)試用
? }
}