The new/completed code:
// physical mailbox checker (PMC)
// ------------------------
// 1. photoresistor detects "box open" state. blue activity LED is enabled.
// 2. if pressure sensor detects mail, green "mail present" LED is enabled.
// 3. if pressure is REMOVED, red "mail retrieved" LED is enabled.
// 4. LED is disabled 5 minutes after mail has been removed if
// no more mail is placed into box (accounts for outgoing mail).
const int photoPin = 11; // use pin 11 for photoresistor
const int pressurePin = 12; // use pin 12 for pressure sensor
// rgb led requires 1 pin for each color
const int redPin = 7; // use higher resistor on red!
const int greenPin = 8; //use regular resistor on green
const int bluePin = 9; // use regular resistor on blue
int photoState = 0; // variable for photoresistor state
int pressureState = 0; // variable for pressure sensor state
int mailPresent = 0; // variable for mail presence
char color = 'c'; // variable for color code for rgb led
void setup() { // pin setup (hardware)
pinMode(photoPin, INPUT); // photoresistor is input
pinMode(pressurePin, INPUT); // pressure sensor is input
pinMode(redPin, OUTPUT); // led pins are all output
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600); // enable serial output for debugging
}
char ledColor(char color) {
switch (color) {
case 'c':
digitalWrite(redPin, 0);
digitalWrite(greenPin, 0);
digitalWrite(bluePin, 0);
break;
case 'r':
digitalWrite(redPin, 255);
digitalWrite(greenPin, 0);
digitalWrite(bluePin, 0);
break;
case 'g':
digitalWrite(redPin, 0);
digitalWrite(greenPin, 255);
digitalWrite(bluePin, 0);
break;
case 'b':
digitalWrite(redPin, 0);
digitalWrite(greenPin, 0);
digitalWrite(bluePin, 255);
break;
}
}
void loop() {
photoState = digitalRead(photoPin); // box open?
if (photoState > 0) { // box is open
Serial.println("Mailbox has been opened");
ledColor('b');
delay(30000); // wait 30 seconds for mail
pressureState = digitalRead(pressurePin);
if (pressureState > 0) { // mail is present
ledColor('g');
mailPresent = 1;
delay(30000); // wait 30 seconds for box to be closed
}
else {
ledColor('r');
delay(300000); // stay red for 5 minutes
ledColor('c');
}
photoState = 0;
}
else if (mailPresent = 0) {
ledColor('c'); // clear the led
}
}
As you can see, the ledColor function does not return anything. Maybe your compiler won't complain?