24. Ultrasonic sensor

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.


Fritzing kopplingsschema
24 ultrasonic sensor


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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s