Matching incoming data with a variable
The accepted way to initialize an array in C follows this example:

const char ID [] = {111, 11, 11, 11};


You can read more about it here.

You later use an array name ("ID") with no index ("ID[0]").  The C compiler assumes the programmer who uses an array name with no index is interested in the memory address of the first element of the array.  But you wanted the value in that memory location.  So you should use the array name with the appropriate index.  Guessing, it would appear you intended to use "ID[i]" in the above code fragment.