Arduino miga diodą trochę nietypowo

Czy da się wykorzystać port analogowy w Arduino jako cyfrowy?

Wejście analogowe jako cyfrowe?

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

Dioda sterowana przez wejście analogowe

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);).

Poniżej działający kod na Arduino, który wykorzystany został 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
}

Wnioski

Można z pinów A0-A5 korzystać jak z normalnych portów cyfrowych. Warto o tym pamiętaćm, jeżeli w naszym projekcie potrzeba nam więcej wejść/wyjść cyfrowych a nie korzystamy z pomiaru napięć.