#PHP, <s>125</s> 116 bytes:

<!-- language: lang-php -->

	function m($i){static$a;$a+=$d=($i-$a+10)%17-9;echo$d*21,"
	";}for(;$c=ord($argv[1][$i++]);m($c%16))m($c/16|0);m(-1);

**breakdown**

<!-- language: lang-php -->

	function m($i)				// function to turn camera:
	{
		static$a;					// remember angle
		$a+=						// add delta to angle
		$d=($i-$a+10)%17-9;			// delta: target=nibble value+1-current angle
									// add 9, modulo 17, -9 -> shortest movement
		echo$d*21,"\n";					// print delta * 21 and a linebreak
	}
	for(;$c=ord($argv[1][$i++]);// loop through input characters
		m($c%16))					// 2. move to low nibble value
		m($c/16|0)					// 1. move to high nibble value
	;
	m(-1);						// move back to "?"

---
Of course, `21` is pretty inaccurate and may fail for strings longer than 14 characters; but then ... `360/17` would be four bytes longer.

> An alternative solution would have been to attach a laser pointer to the camera;  
we could use all printable ascii chars and a "question" card at 3.75 degrees each with that.

> Another alternative: Use 16 cards (at 22.5 degrees) with 6 characters each:  
implement some sort of T9 and we can omit the high nibble. ;)