 	moveServo(servoH, widgetH, degrees, servoSpeed, wait, updateDisplay);
 }
 
+// nunchuk
+ArduinoNunchuk nunchuk = ArduinoNunchuk();
+bool nunchukControlMode = false;
+
+void nunchukControlModeToggle(void) {
+	nunchukControlMode = !nunchukControlMode;
+	if (nunchukControlMode) {
+		sendMsgF(MSG_NCM_ON);
+		messageScrollSet("nunchuk control on");
+	} else {
+		sendMsgF(MSG_NCM_OFF);
+		messageScrollSet("nunchuk control off");
+	}
+	messageScrollUpdate(true);
+	sendMsgF(MSG_OK);
+}
+
+void nunchukControlModeUpdate(bool sendValues) {
+	nunchuk.update();
+	// the Z-Button disables nunchukcontrolmode
+	if (nunchuk.zButton)
+		nunchukControlModeToggle();
+	if (sendValues) {
+		sendMsgF(MSG_ANALOG);
+		sendMsgF(MSG_X); Serial.print(nunchuk.analogX, DEC);
+		sendMsgF(MSG_Y); Serial.print(nunchuk.analogY, DEC);
+		sendMsgF(MSG_LF);
+		sendMsgF(MSG_ACCEL);
+		sendMsgF(MSG_X); Serial.print(nunchuk.accelX, DEC);
+		sendMsgF(MSG_Y); Serial.print(nunchuk.accelY, DEC);
+		sendMsgF(MSG_Z); Serial.print(nunchuk.accelZ, DEC);
+		sendMsgF(MSG_LF);
+		sendMsgF(MSG_BUTTON);
+		sendMsgF(MSG_C); Serial.print(nunchuk.cButton, DEC);
+		sendMsgF(MSG_Z); Serial.print(nunchuk.zButton, DEC);
+		sendMsgF(MSG_LF);
+	}
+}
+
 // helper functions
 void softwareReset(void) {
 	wdt_enable(WDTO_15MS);

		cycles++;
		if (cycles == 120)
			cycles = 0;
	}
}

	msg_O,
	msg_T,
	msg_H,
	msg_SAFESP,
	msg_NCM_ON,
	msg_NCM_OFF,
	msg_ANALOG,
	msg_ACCEL,
	msg_BUTTON,
	msg_X,
	msg_Y,
	msg_Z,
	msg_C
};

#define MSG_OK		0
