Arduino miga diodą, ale trochę nietypowo

Zacznijmy od filmu. Proste miganie dioda, ale czy widzicie coś nietypowego w tym układzie:

Jeżeli nie dostrzegłeś/aś tego to zwróć uwagę, że dioda jest podłączona do wejścia analogowego. No to jak to działa? Cóż, to może pytanie pomocnicze: czy wiesz gdzie na Arduino UNO jest port I2C? Jest na wejściu analogowym, na pinach A4 i A5 (UNO R3 ma wyprowadzone to też na dedykowane piny SDA i SCL, ale elektrycznie jest to to samo).

Czy znaczy to, że wejścia analogowe mogą pracować jako normalne wejścia/wyjścia cyfrowe? Tak, dokładnie. Wystarczy tylko ustawić w odpowiedni tryb pracy dane wejście korzystając z pinMode i można potem korzystać odpowiednio jako wejście czy wyjście. Mają one też wbudowny rezystor pull up jak zwykłe wejścia cyfrowe. Nawet włącza się go tak samo (pinMode(A0, INPUT); digitalWrite(A0,HIGH);).

Czyli kod działający na Arduino pokazane w tym filmie:

void setup() {                
  pinMode(A0, OUTPUT);     
}
void loop() {
  digitalWrite(A0, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(A0, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Po prostu korzystać ze stałych A0-A5. Warto o tym pamiętać jeżeli w naszym projekcie potrzeba nam więcej wejść/wyjść cyfrowych a nie korzystamy z pomiaru napięć.