arduino小車入門教學——第四天(感測器)
阿新 • • 發佈:2019-01-07
大家好,我是小編。
今天我們講感測器。
今天講光感和超聲波。
先發一張圖:
光感有三個介面,分別是:
UCC、out、GND。
超聲波有四個介面,分別是:
UCC、T、E、GND。
下面是原理。
超聲波是一頭髮出超聲波,聲波碰到物體後反彈,另一端接收,從而判斷距離。
光感是檢測光值,判斷的最小0最大255.
附上程式:
避障小車
#include <Servo.h> int pinLF=14; int pinLB=15; int pinRF=16; int pinRB=17; int PWMEN1=3; int PWMEN2=5; void setup() { Serial.begin(9600); pinMode(pinLB,OUTPUT); pinMode(pinLF,OUTPUT); pinMode(pinRB,OUTPUT); pinMode(pinRF,OUTPUT); pinMode(PWMEN1,OUTPUT); pinMode(PWMEN2,OUTPUT); } void advance(int a) { digitalWrite(pinRF,HIGH); digitalWrite(pinRB,LOW); analogWrite(pinRF,150); analogWrite(pinRB, 0); digitalWrite(pinLF,HIGH); digitalWrite(pinLB,LOW); analogWrite(pinLF,150); analogWrite(pinLB,0); delay(a * 100); } void right(int b) { digitalWrite(pinRF,LOW); digitalWrite(pinRB,LOW); analogWrite(pinRF,0); analogWrite(pinRB, 0); digitalWrite(pinLF,HIGH); digitalWrite(pinLB,LOW); analogWrite(pinLF,150); analogWrite(pinLB,0); delay(b * 100); } void left(int c) { digitalWrite(pinRF,HIGH); digitalWrite(pinRB,LOW); analogWrite(pinRF,150); analogWrite(pinRB, 0); digitalWrite(pinLF,LOW); digitalWrite(pinLB,LOW); analogWrite(pinLF,0); analogWrite(pinLB,0); delay(c * 100); } void turnR(int d) { digitalWrite(pinRF,LOW); digitalWrite(pinRB,HIGH); analogWrite(pinRF,0); analogWrite(pinRB, 150); digitalWrite(pinLF,HIGH); digitalWrite(pinLB,LOW); analogWrite(pinLF,100); analogWrite(pinLB,0); delay(d * 100); } void turnL(int e) { digitalWrite(pinRF,HIGH); digitalWrite(pinRB,LOW); analogWrite(pinRF,150); analogWrite(pinRB, 0); digitalWrite(pinLF,LOW); digitalWrite(pinLB,HIGH); analogWrite(pinLF,0); analogWrite(pinLB,150); delay(e * 100); } void stopp(int f) { digitalWrite(pinRB,LOW); digitalWrite(pinRF,LOW); digitalWrite(pinLB,LOW); digitalWrite(pinLF,LOW); delay(f * 100); } void back(int g) { digitalWrite(pinRF,LOW); digitalWrite(pinRB,HIGH); analogWrite(pinRF,0); analogWrite(pinRB, 150); digitalWrite(pinLF,LOW); digitalWrite(pinLB,HIGH); analogWrite(pinLF,0); analogWrite(pinLB,150); delay(g * 100); } void loop() { advance(1); delay(1000); back(1); delay(1000); turnL(1); delay(1000); turnR(1); delay(1000); }
循跡小車
#include <Servo.h> int pinLF=14; int pinLB=15; int pinRF=16; int pinRB=17; int PWM1=3; int PWM2=5; void setup() { Serial.begin(9600); pinMode(pinLB,OUTPUT); pinMode(pinLF,OUTPUT); pinMode(pinRB,OUTPUT); pinMode(pinRF,OUTPUT); } void advance(int a) { digitalWrite(pinRF,HIGH); digitalWrite(pinRB,LOW); analogWrite(pinRF,130); analogWrite(pinRB, 0); digitalWrite(pinLF,HIGH); digitalWrite(pinLB,LOW); analogWrite(pinLF,200); analogWrite(pinLB,0); delay(a * 100); } void loop() { advance(1); }
謝謝大家