Hello.
I'm planning to make ultrasonic transducer that can changing ultrasonic dircttion that explained on the picture.
The problem is making phase delay circuit(Xmark box)
I tried to make it with low pass filter with computer plogram but ploblem is occured(signal is distorted or almost 0 voltage.)
So the Arduino is generating the ultrasonic signal which I presume is actually a square wave?
Are you using a timer or code to generate the signal? If code, then the necessary delays can be generated in code. You would need one piece of code for each slew direction.
What I think you want to do:
Rising edge of the incoming wave is detected.
At time 0 output 1 goes high.
At time x output 2 goes high.
At time 2x output 3 goes high.
At time 3x output 4 goes high.
Upon falling edge: the same but then outputs have to be set low.
This should be perfectly doable. I like the shift register idea. That should do great here. I'd want to use interrupts: an interrupt that is triggered by the incoming rising/falling edges (pin change or external, both will do), and a timer interrupt.
Rising edge: write a 1 to the shift register (first output).
Then based on the timer: write three more 1s to the register, based on the phase delay.
Falling edge: start to write zeros, same way.
This way you can even handle overlapping waves easily, and have a virtually unlimited number of outputs with the delayed phase. The moment the new edge is detected, simply start counting again.