Funzione If che su Arduino Due non Funziona [Problema aggirato]

da wiring_digital.c:

int digitalRead(uint8_t pin)
{
	uint8_t timer = digitalPinToTimer(pin);
	uint8_t bit = digitalPinToBitMask(pin);
	uint8_t port = digitalPinToPort(pin);

	if (port == NOT_A_PIN) return LOW;

	// If the pin that support PWM output, we need to turn it off
	// before getting a digital reading.
	if (timer != NOT_ON_TIMER) turnOffPWM(timer);

	if (*portInputRegister(port) & bit) return HIGH;
	return LOW;
}

io direi che il problema si nasconde in quella portInputRegister

edit: a quanto pare il fatto di poter leggere con una digitalRead un pin output è un bug lasciato per retrocompatibilità! :slight_smile:

Bravo, bella scoperta :wink:

Complimenti :slight_smile: :slight_smile: :slight_smile:

bhe comunque tradotto: legegere i pin di output con la digitalWrite è una cattiva e sbagliata abitudine dettata da un bug che permetteva di farlo. Gli arduino basati su chip AVR orami restano conformi al bug, ma le nuove schede AVR si "staccano" dal bug per seguire lo standard.

Consiglio di seguire il progetto arduino su github, si imparano tante cose interessanti dal bug tracer.