// Sean Mc Kenna
int a = 4;
int b = 5;
int c = 6;
int d = 7;
int e = 8;
int f = 9;
int g = 10;
int rudder = A0;
float cPosition = 0;
float lPosition = 0;
void setup() {
// serial start and pins
Serial.begin(9600);
pinMode(rudder, INPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void display(float position) {
// Update the display based on the current position
if (position < 1.49) {
// Display "L"
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
} else if (position > 1.51) {
// Display "r"
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
} else if(position == 1.5){
// Display "c"
digitalWrite(a, HIGH);//
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
}
float sPosition() {
// Sample the position by averaging two readings
float sum = 0.0;
for (int i = 0; i < 2; i++) {
int reading = analogRead(rudder);
float voltage = reading * 0.005296;
sum += voltage;
delay(5);
Serial.println(voltage);
}
float avgVoltage = sum / 2.0;
return avgVoltage;
}
void loop() {
// Sample the position and update the display
cPosition = sPosition();
if (abs(cPosition - 1.5) >= 0.2) { //20% threshold from center
display(cPosition);
lPosition = cPosition;
}
delay(100);
}