Benutzer:BerndS: Unterschied zwischen den Versionen
Aus www.wiki.ardumower.de
BerndS (Diskussion | Beiträge) |
BerndS (Diskussion | Beiträge) |
||
| Zeile 4: | Zeile 4: | ||
Arduino Code: | Arduino Code: | ||
| + | |||
_______________________________________________________________ | _______________________________________________________________ | ||
#define threshold 20 | #define threshold 20 | ||
| Zeile 81: | Zeile 82: | ||
digitalWrite(trigger,0); | digitalWrite(trigger,0); | ||
} | } | ||
| + | |||
_____________________________________________________________________________ | _____________________________________________________________________________ | ||
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:
_______________________________________________________________
- 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