Benutzer:BerndS: Unterschied zwischen den Versionen
Aus www.wiki.ardumower.de
BerndS (Diskussion | Beiträge) |
BerndS (Diskussion | Beiträge) |
||
| Zeile 1: | Zeile 1: | ||
Husqvarna 260 ACX Ultra Sonic | Husqvarna 260 ACX Ultra Sonic | ||
| − | How | + | 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: _______________________________________________________________
- 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