Check the sign of $v_x$. If it is less than zero, your direction of motion is $\displaystyle{180^\circ+\arctan\left(\frac{v_y}{v_x}\right)}$. If it is greater than zero, then $\displaystyle{\arctan\left(\frac{v_y}{v_x}\right)}$ works. If it is zero, you're at $\pm 90^\circ$, and the sign of $v_y$ tells you which. If you care about being between $0$ and $360^\circ$ or some other particular range, you can just test the result and add or subtract $360^\circ$ as appropriate.
See this Wikipedia article on a 2-argument arctangent function that exists exactly for this purpose.
You say that angle $0$ is "up" for your purposes. If by this you mean the positive $y$ direction, then you should subtract $90^\circ$ from the result obtained from the above, before testing to see if the angle is in the correct range. The reason is that standard positions of angles, in accordance with the arctangent computations you mentioned, measure the angles counterclockwise from the positive $x$-axis. If you instead measure counterclockwise from the positive $y$-axis, then your starting point is shifted up $90^\circ$, so your angles will correspondingly be shifted down $90^\circ$. (Or you could just apply the above with $v_y$ in place of $v_x$ and $-v_x$ in place of $v_y$, but this might be a bit confusing.)
The three points form a triangle, as in the figure below:
![enter image description here](https://i.stack.imgur.com/Nyaoc.png)
You know the coordinates of the three vertices: $H(x_H,y_H)$, $A(x_A,y_A)$, and $T(x_T,y_T)$. The goal is to compute the angle between $\vec{AT}$ and $\vec{AH}$. I write these as vectors because you want an oriented angle, starting from the segment $\vec{AT}$ and increasing counterclockwise towards $\vec{AH}$.
The derivation below will result in an angle in the range $0 \le \theta < 360^\circ$. You can adjust the range to $-180^\circ \le \theta < 180^\circ$ by simply subtracting $180^\circ$ from the value we'll compute below.
We'll obtain the angle by making use of the dot and cross products of the vectors $\vec{AT}$ and $\vec{AH}$ to find the values of $\cos\theta$ and $\sin\theta$, respectively. The dot product between two vectors in $\mathbb{R}^2$ is a number which can be computed in two ways:
$$
\vec{a}\cdot\vec{b} \equiv a_x\,b_x + a_y\,b_y = |\,\vec{a}\,|\,|\,\vec{b}\,|\cos\theta
$$
Similarly, the cross product between two vectors in $\mathbb{R}^2$ is also a number which can be computed in two ways:
$$
\vec{a}\times\vec{b} \equiv a_x\,b_y - a_y\,b_x = |\,\vec{a}\,|\,|\,\vec{b}\,|\sin\theta
$$
Dividing the result from the cross product by the result for the dot product, we can compute $\tan\theta$:
$$
\tan\theta \equiv \frac{\sin\theta}{\cos\theta} = \frac{a_x\,b_y - a_y\,b_x}{a_x\,b_x + a_y\,b_y}
$$
Note that we can't perform that division when $\cos\theta$ (the denominator) is zero, that is, when $\theta = 90^\circ$ or when $\theta = 270^\circ$. Now for the actual computation.
Let
$$
(\, a_x \,,\, a_y \,) = \left(\,x_T-x_A \,,\, y_T-y_A \,\right)
$$
$$
(\, b_x \,,\, b_y \,) = \left(\,x_H-x_A \,,\, y_H-y_A \,\right)
$$
$$
s = a_x\,b_y - a_y\,b_x
$$
$$
c = a_x\,b_x + a_y\,b_y
$$
Then,
$$
\theta = 0^\circ
\quad\mbox{if}\quad
s = 0
\quad\mbox{and}\quad
c > 0
$$
$$
\theta = 90^\circ
\quad\mbox{if}\quad
s > 0
\quad\mbox{and}\quad
c = 0
$$
$$
\theta = 180^\circ
\quad\mbox{if}\quad
s = 0
\quad\mbox{and}\quad
c < 0
$$
$$
\theta = 270^\circ
\quad\mbox{if}\quad
s < 0
\quad\mbox{and}\quad
c = 0
$$
Now let
$$
\theta_0 = \arctan\left|\frac{s}{c}\right|
\quad\mbox{if}\quad
c \ne 0
$$
Then,
$$
\theta = \theta_0
\quad\mbox{if} \quad s > 0
\quad\mbox{and}\quad c > 0
$$
$$
\theta = 180^\circ - \theta_0
\quad\mbox{if} \quad s > 0
\quad\mbox{and}\quad c < 0
$$
$$
\theta = 180^\circ + \theta_0
\quad\mbox{if} \quad s < 0
\quad\mbox{and}\quad c < 0
$$
$$
\theta = 360^\circ - \theta_0
\quad\mbox{if} \quad s < 0
\quad\mbox{and}\quad c > 0
$$
The case when both $c = 0$ and $s = 0$ cannot happen unless the three points $A$, $T$, and $H$ coincide. As I said at the top, this results in $0 \le \theta < 360^\circ$ but you can adjust the range to $-180^\circ \le \theta < 180^\circ$ by subtracting $180^\circ$ from the angle computed above.
Best Answer
Most computer systems have a function Atan2(x,y) which returns the polar angle of a point in the range $(-\pi,\pi]$ (check the endpoints-I think you get $+\pi$ for (-1,0). If you subtract your position from the target position and take Atan2 of the difference it will be the angle from you to target. Now subtract your heading and you have the angle to turn. If the result is outside $(-\pi,\pi]$, add or subtract $2\pi$ to get into the range. The nice thing of Atan2, as opposed to the regular atan, is it sorts out for you the signs and the branch of tangent.
You can use arcsin as well, but that requires measuring the distance to the target, which has an extra square root in it.