|

Podstawowe funkcje w Arduino

Programowanie w Arduino odbywa się za pomocą pochodnej języka C/C++ w oparciu o bibliotekę Arduino. Plik z kodem, zwany sketchem, zazwyczaj tworzony jest w środowisku Arduino IDE i za jego pomocą wgrywany do mikrokontrolera.

Metody setup i loop

Sketch Arduino wymaga dwóch podstawowych metod: setup i loop.

setup

Metoda setup() wykonywana jest jeden raz, podczas włączenia płytki lub po jej resecie. Służy do jednorazowej inicjalizacji wartości początkowych.

loop

Pierwsze wywołanie metody loop() następuje tuż po zakończeniu metody setup. Loop powtarza się wiele razy w ciągu każdej sekundy. Częstotliwość wywołań zależna jest od mocy mikroprocesora i złożoności programu.

pinMode

Płytka Arduino posiada szereg pinów, każdy z nich może być pinem wyjściowym – OUTPUT lub wejściowym – INPUT.

Domyślnie piny ustawione są jako piny wejściowe – INPUT.

Za pomocą metody pinMode() można określić piny jako wyjściowe – OUTPUT lub aktywować wewnętrzny pullup rezystor dla trybu wejściowego – INPUT_PULLUP.

pinMode(13, OUTPUT); //Ustawienie pinu nr 13 na wyjściowy

digitalWrite

Metoda digitalWrite() ustawia stan pinu wyjściowego:

1 / HIGH / true

lub

0 / LOW / false

digitalWrite(13, 1); //Stan wysoki 5V
digitalWrite(13, 0); //Stan niski 0V

Ustawienie kilku pinów wyjściowych na stan wysoki 5V

for (int i = 2; i <= 6; i++) {
  pinMode(i, OUTPUT);
  digitalWrite(i, 1);
}

Ustawienie pinów określonych w tablicy

byte pins[] = { 3, 5, 6 };
for (byte i = 0; i < sizeof(pins) / sizeof(pins[0]); i++) {
  pinMode(pins[i], OUTPUT);
  digitalWrite(pins[i], 1);
}

digitalRead

Metoda digitalRead odczytuje wartości cyfrowe napięć wejściowych.

Interpretacja zakresów napięć na pinach cyfrowych w trybie INPUT:

0V – 1V  stan niski LOW

3V – 5V  stan wysoki HIGH.

Przedział 1V – 3V to stan zabroniony, w którym zmiana stanu logicznego nie następuje.

int sensorVal = digitalRead(2); //Wczytuje stan logiczny z pinu nr 2

W zależności od potrzeb, odczytywanie danych z urządzeń analogowych(przycisk, potencjometr, itp.)  zazwyczaj przeprowadza się z pomocą wbudowanego pullup rezystora lub zewnętrznego rezystora pullup lub pulldown, likwidując zjawisko szumów i fałszywych odczytów.

Zobacz: Przycisk chwilowy z Arduino

Pobieranie wartości przycisku chwilowego

int pin = 2;
void setup() {
  pinMode(pin, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  int sensorVal = digitalRead(pin);
  digitalWrite(LED_BUILTIN, !sensorVal);
}

analogWrite

Piny cyfrowe 3, 5, 6, 9, 10, 11 mogą być wykorzystane do generowania przebiegu PWM (przebieg prostokątny o zmiennym współczynniku wypełnienia) z częstotliwością ok. 490Hz dla pinów 3, 9, 10, 11 i ok. 976Hz dla pinów 5 i 6.

Metoda analogWrite(), za pomocą 8-bitowego przetwornika generuje przebieg sygnału PWM w zakresie od 0 do 255.

analogWrite(11, 127); //generuje przebieg PWM 127/255 na pinie 11

analogRead

Piny analogowe A0 – A5 przyjmują dane analogowe za pomocą 10-bitowego przetwornika analogowo-cyfrowego (ADC). Pozwala to na zamianę napięć wejściowych sygnału analogowego z przedziału 0V-5V na postać cyfrową wyrażaną liczbowo w zakresie od 0 do 1023.

int sensorVal = analogRead(A0);

Wyświetlanie wartości potencjometru w procentach

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  int percentage = map(sensorValue, 0,1023, 0, 100); //%
  Serial.println(percentage);
  delay(10);
}

Piny analogowe mogą pracować również jako cyfrowe piny wyjściowe/wejściowe przypisując im numery 14 – 19.

delay / delayMicroseconds

Metoda delay() wstrzymuje działanie programu na określony czas, podany w milisekundach, delayMicroseconds w mikrosekundach.

Ponieważ delay wstrzymuje większość procesów mikrokontrolera, jej stosowanie jest bardzo ograniczone. W wielu przypadkach, w miejsce delay, stosuje się rozwiązania oparte na metodzie millis().

delay(1000); //Wstrzymanie programu na 1000ms (1s)
delayMicroseconds(500); //Wstrzymanie programu na 500us (0,5ms)

Zobacz: Arduino

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *