Benutzer:BerndS: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 
Husqvarna 260 ACX Ultra Sonic
 
Husqvarna 260 ACX Ultra Sonic
  
How tu use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.
+
How to use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.
 +
 
 +
Arduino Code:
 +
_______________________________________________________________
 +
#define threshold 20
 +
#define Sonic_out 03 //10
 +
#define Sign_in 02 //25
 +
#define trigger 04
 +
#define Bumper 05
 +
#define nBumper 06
 +
 
 +
int i;
 +
unsigned long time_cnt_start;
 +
unsigned long time_cnt;
 +
float average_t;
 +
float distance;
 +
bool int_flag=1;
 +
bool valid = 0;
 +
 
 +
void setup() {
 +
  Serial.begin(115200);
 +
  pinMode(Sonic_out, OUTPUT);
 +
  digitalWrite(Sonic_out,0);
 +
  digitalWrite(trigger,0);
 +
  pinMode(Sign_in, INPUT);
 +
  pinMode(Bumper, OUTPUT);
 +
  pinMode(nBumper, OUTPUT);
 +
  Serial.println("Ultra Sonic Start");
 +
}
 +
 
 +
void loop() {
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
 
 +
  for (i=0;i<10;i++){
 +
    digitalWrite(Sonic_out,1);
 +
    delayMicroseconds(4);
 +
    digitalWrite(Sonic_out,0);
 +
    delayMicroseconds(9);
 +
  }
 +
 
 +
  digitalWrite(Sonic_out,0);
 +
  while(digitalRead(!Sign_in)) {    }
 +
  delayMicroseconds(1300);
 +
  attachInterrupt(digitalPinToInterrupt(Sign_in),start_cnt,RISING);
 +
  delay(25);
 +
 
 +
  if (!valid)stop_cnt();
 +
  average_t=average_t*0.95+time_cnt*0.05;
 +
  distance=average_t*33000/1000000;
 +
//  Serial.print(" Laufzeit: ");
 +
//  Serial.print(average_t);
 +
  Serial.print("  Distanz: ");
 +
  Serial.print(distance);        // +/- 20%
 +
  Serial.println();
 +
 
 +
  if( distance<=threshold){
 +
    digitalWrite(Bumper,1);
 +
    digitalWrite(nBumper,0);
 +
  }else{
 +
    digitalWrite(Bumper,0);
 +
    digitalWrite(nBumper,1);
 +
  }
 +
}
 +
 
 +
void start_cnt(){  // start time counting with rising trigger
 +
  valid = 0;
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
  time_cnt_start = micros();
 +
  //Serial.print("start ");
 +
  digitalWrite(trigger,1);
 +
  attachInterrupt(digitalPinToInterrupt(Sign_in),stop_cnt,FALLING);
 +
}
 +
 
 +
void stop_cnt(){    // stop time counting with first falling trigger
 +
  detachInterrupt(digitalPinToInterrupt(Sign_in));
 +
  time_cnt = micros()-time_cnt_start;
 +
  //Serial.print("stop ");
 +
  valid = 1;
 +
  digitalWrite(trigger,0);
 +
}
 +
 
 +
_____________________________________________________________________________
 +
 
 +
Husqvarna 260 ACX Ultra Sonic Board
  
  
 
[[Datei:US260 01.JPG]]
 
[[Datei:US260 01.JPG]]

Version vom 12. Februar 2025, 12:21 Uhr

Husqvarna 260 ACX Ultra Sonic

How to use the Husqvarna 260 ACX Ultra Sonicboard as a bumper.

Arduino Code: _______________________________________________________________

  1. define threshold 20
  2. define Sonic_out 03 //10
  3. define Sign_in 02 //25
  4. define trigger 04
  5. define Bumper 05
  6. define nBumper 06

int i; unsigned long time_cnt_start; unsigned long time_cnt; float average_t; float distance; bool int_flag=1; bool valid = 0;

void setup() {

 Serial.begin(115200);
 pinMode(Sonic_out, OUTPUT);
 digitalWrite(Sonic_out,0);
 digitalWrite(trigger,0);
 pinMode(Sign_in, INPUT);
 pinMode(Bumper, OUTPUT);
 pinMode(nBumper, OUTPUT);
 Serial.println("Ultra Sonic Start");

}

void loop() {

 detachInterrupt(digitalPinToInterrupt(Sign_in)); 
  
 for (i=0;i<10;i++){
    digitalWrite(Sonic_out,1);
    delayMicroseconds(4);
    digitalWrite(Sonic_out,0);
    delayMicroseconds(9);
 }
 
 digitalWrite(Sonic_out,0);
 while(digitalRead(!Sign_in)) {    }
 delayMicroseconds(1300);
 attachInterrupt(digitalPinToInterrupt(Sign_in),start_cnt,RISING); 
 delay(25);
 
 if (!valid)stop_cnt();
 average_t=average_t*0.95+time_cnt*0.05;
 distance=average_t*33000/1000000; 

// Serial.print(" Laufzeit: "); // Serial.print(average_t);

 Serial.print("   Distanz: ");
 Serial.print(distance);         // +/- 20%
 Serial.println(); 
 if( distance<=threshold){
   digitalWrite(Bumper,1);
   digitalWrite(nBumper,0);
 }else{
   digitalWrite(Bumper,0);
   digitalWrite(nBumper,1);
 }

}

void start_cnt(){ // start time counting with rising trigger

 valid = 0;
 detachInterrupt(digitalPinToInterrupt(Sign_in));
 time_cnt_start = micros();
 //Serial.print("start ");
 digitalWrite(trigger,1);
 attachInterrupt(digitalPinToInterrupt(Sign_in),stop_cnt,FALLING);

}

void stop_cnt(){ // stop time counting with first falling trigger

 detachInterrupt(digitalPinToInterrupt(Sign_in));
 time_cnt = micros()-time_cnt_start;
 //Serial.print("stop ");
 valid = 1;
 digitalWrite(trigger,0);

}

_____________________________________________________________________________

Husqvarna 260 ACX Ultra Sonic Board


US260 01.JPG