Wejście analogowe jako cyfrowe?
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);
).
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ęć.