#define PIN_A0 A0 // Analog Input Pin
#define PIN_D8 8 // Digital Output Pin
#define PIN_D9 9 // Digital Output Pin
#define PIN_D10 10 // Digital Output Pin
unsigned long iterationCounter = 0;
void setup() {
Serial.begin(9600); // Start serial communication for debugging
// Setup all pins as input except D8 which needs to start as output
pinMode(PIN_A0, INPUT);
pinMode(PIN_D9, INPUT);
pinMode(PIN_D10, INPUT);
pinMode(PIN_D8, INPUT);
}
// Function to change state of pins
int changeState(int currentState){
if(currentState == 2){
return 0;
}else{
return currentState + 1;
}
}
void loop(){
static int d8state = 0, d9state = 1, d10state = 2; // States for digital pins
// Change states for digital pins
d8state = changeState(d8state);
d9state = changeState(d9state);
d10state = changeState(d10state);
switch(d8state){
case 0: digitalWrite(PIN_D8,HIGH); break;
case 1: digitalWrite(PIN_D8,LOW); break;
case 2: digitalWrite(PIN_D8,INPUT); break;
}
switch(d9state){
case 0: digitalWrite(PIN_D9,HIGH); break;
case 1: digitalWrite(PIN_D9,LOW); break;
case 2: digitalWrite(PIN_D9,INPUT); break;
}
switch(d10state){
case 0: digitalWrite(PIN_D10,HIGH); break;
case 1: digitalWrite(PIN_D10,LOW); break;
case 2: digitalWrite(PIN_D10,INPUT); break;
}
int adcValue = analogRead(PIN_A0); // Read from ADC
delay(100); // Delay between cycles
// Printing values
Serial.print("Iteration: ");
Serial.print(iterationCounter++);
Serial.print("\t ADC Value: ");
Serial.print(adcValue);
Serial.print("\t Pin D8 State: ");
Serial.print(d8state);
Serial.print("\t Pin D9 State: ");
Serial.print(d9state);
Serial.print("\t Pin D10 State: ");
Serial.print(d10state);
Serial.println();
}