Documentation - Code - Images
int photoCellPins[4] = {0, 1, 2, 4}; //analog in pins from photo cells
int electroMagnetPins[4] = {5, 4, 3, 2}; //digital out pins to electromagnets
int electroMagnetState[4] = {0, 0, 0, 0}; //maintains state of each electromagnet
int lightThreshold = 100; //turn electromagnet on when below this value
bool debug = true;
void setup()
{
if(debug)
{
Serial.begin(9600);
}
for(int i=0; i<4; ++i)
{
pinMode(electroMagnetPins[i], OUTPUT);
}
}
/**
* Turns the electromagnet on when its corresponding light sensor is below
* the threshold
*/
void loop()
{
for(int i=0; i<4; ++i)
{
int sensorVal = analogRead(photoCellPins[i]);
//Debug
if(debug)
{
Serial.print(i);
Serial.print(": ");
Serial.print(sensorVal);
Serial.print(" ");
if(sensorVal < lightThreshold)
Serial.print("ON ");
else
Serial.print("OFF ");
if(i==3)
Serial.println();
}
if(sensorVal < lightThreshold)
{
if(electroMagnetState[i] != 1) //only turn ON if not already ON
{
electroMagnetState[i] = 1;
digitalWrite(electroMagnetPins[i], HIGH);
}
}
else
{
if(electroMagnetState[i] != 0) //only turn OFF in not already OFF
{
electroMagnetState[i] = 0;
digitalWrite(electroMagnetPins[i], LOW);
}
}
}
delay(100);
}