Crazy corruption in byte Array when Serial.write

A data definition like:

byte dataPacket [4];  // 0-4  --> 5 bytes

specifies the number of elements you want for the array, not index positions. Your definition asks for 4 elements when you really need 5. Change the definition to:

byte dataPacket [5];  // 0-4  --> 5 bytes