Hur ska jag avgöra vilken av två sensorer som triggas först?

Hej!

Jag gjorde om koden i dit problem lite. Var det meningen att knapp2 skulle göra Reset?
I vilket fall så blev det så här:
KnappA tänder Led1 i läget då KnappA trycks in. Det finns ett värde hur länge knappen "får" vara intryckt innan den känner av att man trycker på knappen igen, variabeln debounce. Detta för att få bort lite störningar när inputen går från Low till High.
Trycker man gång nr 2 så släcks Led1 och tänder Led2.
Om KnappB trycks in så gör man reset och slänger både Led1 och Led2.

På Uno-kortet så kan man använd Interrupt på pin 2 (pin 2 = interrupt 0) och 3 (pin 3 = interrupt 1) . Dvs gör något när knappen trycks in eller ändrar från High till Low osv. RISING är att ingången ändrar från Low till High. Här finns info om attachInterrupt och hur det fungerar http://arduino.cc/en/Reference/AttachInterrupt
Genom att använda interrupt på knapparn så blir renare kod i loop-metoden för annan logik som körs helatiden.

int buttonAPin = 2;    // button A pin number (interrupt 0)
int buttonBPin = 3;    // button B pin number (interrupt 1)

int ledAPin = 12;      // led A pin number
int ledBPin = 13;      // led A pin number

volatile long time = 0; // the last time the output pin was toggled
long debounce = 400;		// the debounce time, increase if the output flickers

volatile byte lastCount = 0; // 0 to 255

void setup() {
  pinMode(ledAPin, OUTPUT);
  pinMode(ledBPin, OUTPUT);
  
  // Arduino Uno interrupt setting:
  attachInterrupt(0, onButtonAPress, RISING);
  attachInterrupt(1, reset, RISING);
}

void loop() {
  // Do something else here.
}

void toggleLed() {
  switch (lastCount % 2 == 0) {
    case 0:
			digitalWrite(ledAPin, HIGH);
			digitalWrite(ledBPin, LOW);
      break;
    case 1:
			digitalWrite(ledAPin, LOW);
			digitalWrite(ledBPin, HIGH);
      break;
    default: 
      digitalWrite(ledAPin, LOW);
			digitalWrite(ledBPin, LOW);
  }
}

void onButtonAPress() {
  if (millis() - time > debounce) {
		if (lastCount == 255) 
			lastCount = 0;
		else
			lastCount++;
		time = millis();
	}
	toggleLed();
}

void reset() {
	if (millis() - time > debounce) {
		lastCount = 0;
		digitalWrite(ledAPin, LOW);
		digitalWrite(ledBPin, LOW);
		time = millis();
	}
}

Mvh
Dan