If you want to transmit at 9600 baud, your delays are wrong.
$$\frac{1}{9600} \approx 104 {\mu}s$$
You need 104 microseconds for each bit period.  Start and stop bits are also 104 microseconds. Now, you will probably have to subtract processing time from the delay.  You can find this by studying the processor's instruction timing and writing in assembly, or cheat and just measure on an oscilloscope.

But for sure _delay_us(2); and _delay_us(156); are wrong.

Bit-bang TX problem
I often do vector addition of Python lists.

Example: I have two lists like these:

a = [0.0, 1.0, 2.0]
b = [3.0, 4.0, 5.0]


I now want to add b to a to get the result a = [3.0, 5.0, 7.0].

Usually I end up doing like this:

a[0] += b[0]
a[1] += b[1]
a[2] += b[2]


Is there some efficient, standard way to do this with less typing?

UPDATE: It can be assumed that the lists are of length 3 and contain floats.
