Seven-segment display GUI
In general, I think the program is well readable, and demonstrates the idea correctly. I have some suggestions for further improving it.

Constants

Consider the following statement:

drawDigit(hour/10, 20, 100);
drawDigit(hour%10, 110, 100);


Since the values are reused more than once, I would suggest introducing constants for them:

final int HOUR_TO_DIGIT_QUOTIENT = 10;
final int  HOURS_FIRST_X = 20;
final int  HOURS_SECOND_X = 110;
final int  HOURS_Y = 100;


Of course, this holds also for all the other numeric constant, and the strings "AM" and "PM", which are repeated more than once as well.

(Btw., I would suggest introducing these constants even if each value was used only once, because this makes the code easier to understand.)

Organising code

There are some blocks of code, which could be separated into subroutines, in order to make the main code shorter, and thus more readable. E.g.:

fill(75);
rect(40, 230, 10, 10);
text("AM", 55, 240);
fill(255, 0, 0);
rect(40, 245, 10, 10);
text("PM", 55, 255);


This part could be extracted to methods, e.g. like this:

void showAmIndicactor(boolean enabled) {
    if (enabled) {
        fill(255, 0, 0);
    }
    else {
        fill(75);
    }
    rect(40, 230, 10, 10);
    text("AM", 55, 240);
}

void showPmIndicactor(boolean enabled) {
    if (enabled) {
        fill(255, 0, 0);
    }
    else {
        fill(75);
    }
    rect(40, 245, 10, 10);
    text("PM", 55, 255);
}


// in the main block:
if (hour &gt;= 12) {
   showAmIndicactor(false);
   showPmIndicactor(true);
 } else {
   showAmIndicactor(true);
   showPmIndicactor(false);
 }


N.B.: I am not familiar with Processing in detail, but since from the question I understand that 'drawDigit' is an own method (i.e. not built in to Processing), I assume, that it is possible to introduce other own methods in a similar way as in Java.

Functionality

I do not understand, how the seconds will be rendered correctly. As far as I see, this is the only part that depends on the seconds:

if (second % 2 == 0) fill(240, 0, 0);
else fill(75);


But as I understand, this code does not show any digits, just fills a space with a colour. Is this the intended behaviour? If so, then I suggest documenting why is it like that (in a comment), otherwise, I propose to extend the functionality so that seconds are rendered as well.

On a side note, I recommend to use always the block-form of if-else statement (and any other statements), even if it has just one instruction per branch. In other words, I suggest rewriting it as follows:

if (second % 2 == 0) {
     fill(240, 0, 0);
}
else {
     fill(75);
}


This prevents that you add more statements (accidentally indented at the level of if-else block), and think they will be executed within if-else.

Validation

Although not part of the original problem statement, I would recommend to extend your code with validation. I.e., make sure that hours are between 0-23 (or 1-12 in case of 12-hour format), minutes and seconds are between 0-59, and throw an exception otherwise (or print an error and exit, whichever is available in Processing).

Before adding validation, it would be also interesting to experiment how your program behaves with invalid input (e.g. negative numbers, hours consisting of three digits or four, etc.)