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");
}
}
