Mål: Att kunna avläsa avståndet till ett objekt
Teori: Sensorn skickar ultraljudspulser som reflekteras tillbaka från objektet till sensor som mäter tiden för ekot. Ljudets hastighet är ca 330m/s. Med formeln s = vt kan sensorn beräkna sträckan till objektet.
Koppling: Notera att sensorn på bilden är den äldre versionen. Kabeln till A0 ska kopplas till DAC_OUT på sensorn.
Arduino kod 1
int sensorPin = A0; int sensorValue = 0; void setup() { Serial.begin(9600); delay(1000); Serial.println("start sensor"); } void loop() { distance(); delay(100); } void distance() { Serial.print("distance = "); sensorValue = analogRead(sensorPin); if(sensorValue<=10) { Serial.print("invalid"); } else { sensorValue = sensorValue*0.718; Serial.print(sensorValue); Serial.println("cm"); } }
Arduino kod 2
Koppla två lysdioder och en ultraljudsensor. Tanken är att den ena lysdioden lyser konstant tills man kommer för nära sensorn och då börjar den andra lysdioden lysa.
int sensorPin = A0; int sensorValue = 0; int ledred= 13; int ledgreen= 12; void setup() { Serial.begin(9600); delay(1000); Serial.println("start sensor"); pinMode( ledred, OUTPUT); pinMode( ledgreen, OUTPUT); } void loop() { sensorValue = analogRead(sensorPin); sensorValue = sensorValue*0.718; if(sensorValue<=20) { digitalWrite(ledgreen, LOW); digitalWrite (ledred, HIGH); Serial.println(sensorValue); } else { digitalWrite (ledgreen, HIGH); digitalWrite(ledred, LOW); Serial.println (sensorValue); } }
————————-
Arduino kod 3 (workshop, inkluderar fel)
#include <Servo.h> int sensorPin = A0; int sensorValue = 0; int distanceValue = 0; servoPosition = 0; Servo minservo; void setup() { minservo.attach(9); Serial.begin(9600); delay(1000); Serial.println("start sensor"); } void loop() { distance(); delay(50); } void distance() { sensorValue = analogRead(sensorPin); if(sensorValue<=10) { Serial.print("invalid"); } else { distanceValue = sensorValue*0.718; servoPosition = map(distanceValue,7,50,5,175); myservo.write(servoPosition); Serial.print(sensorValue); Serial.print(" cm"); Serial.print(" "); Serial.print(servoPosition); Serial.println(" degrees"); } }