V tomto článku si vyzkoušíme připojení a použití potenciometru. Protože Arduino umí převod analogových hodnot na digitální, lze k němu připojit různé potenciometry či další součástky, které mají na výstupu analogovou hodnotu napětí. V základním použití lze pomocí analogových vstupních pinů měřit napětí mezi hodnotami 0 až 5 V, případně lze spodní hranici posouvat přivedením referenčního napětí na pin AREF. Při měření napětí je vždy rozsah rozdělen na hodnoty 0 až 1023, to tedy znamená, že hodnota proměnné 1 odpovídá napětí 4,88 mV. Jako první příklad jsem si zapojil potenciometr podle uvedeného schématu. Většina potenciometrů má 3 výstupní piny, přičemž na krajních pinech je připojen odpor odpovídající hodnotě uvedené na potenciometru a jako prostřední pin je vyvedený jezdec. Při otočení osičky potenciometru tedy měníme odpor mezi jedním z krajních pinů a prostředním pinem. Já jsem tedy zapojil potenciometr tak, že na jeden z krajních pinů jsem připojil napájecí napětí 5 V a na druhý 0 V. Prostřední pin jsem připojil do analogového vstupu A0 a LED diodu jsem připojil společně s odporem k digitálnímu pinu 3.

Schéma zapojení tlačítka s LED diodou

Zde ještě uvádím obrázek nepájivého pole vytvořeného pomocí programu Fritzing.

Schéma zapojení tlačítka s LED diodou

Ukázkový kód pro uvedené zapojení je uveden níže. Jako nový příkaz je zde analogRead(pin), který do nastavené proměnné potProm uloží převedenou hodnotu napětí z připojeného potenciometru. Poté se zapne LED dioda a program je zastaven po dobu hodnoty napětí z potenciometru. Po uběhnutí zastavení se LED diody vypne a opět se program zastaví po dobu hodnoty napětí. Tento jednoduchý příklad nám tedy vytvoří blikač, u kterého si potenciometrem nastavujeme periodu blikání v rozsahu 0 až 1023 ms s pevnou střídou 50%.

// Potenciometr
// navody.dratek.cz

int potPin = A0;    // číslo pinu připojeného potenciometru
int ledPin = 3;     // číslo pinu připojené LED diody

int potProm = 0;    // proměnná pro analogovou hodnotu potenciometru

void setup() {
  // nastavení LED jako výstup
  pinMode(ledPin, OUTPUT);
  // nastavení potenciometru jako vstup
  pinMode(potPin, INPUT);
}

void loop() {
  // načtení analogové hodnoty senzoru a uložení do proměnné
  potProm = analogRead(potPin);
  // zapne LED diodu
  digitalWrite(ledPin, HIGH);
  // zastaví program po dobu odpovídající
  // analogové hodnotě potenciometru
  delay(potProm);
  // vypne LED diodu
  digitalWrite(ledPin, LOW);
  // zastaví program po dobu odpovídající
  // analogové hodnotě potenciometru
  delay(potProm);
}

Jako další příklad jsem si vybral řízení svitu LED diody pomocí PWM regulace. Tato regulace ve zkratce funguje tak, že se změnou střídy (poměru času zapnutí a vypnutí) řídí například svit LED diody či otáčky motorů a podobně. Pro správné řízení je nutné přemapovat  naměřenou hodnotu z potenciometru na výstupní analogovou hodnotu napětí. Hodnoty naměřené pomocí funkce analogRead jsou v rozsahu 0 až 1023, zatímco na výstup PWM pinů musíme nastavovat napětí v rozsahu 0 až 255. Tento přepočet obstará funkce map, která je přímo v příkladu uvedena - na prvním místě je zdrojová proměnná z potenciometru, na druhém a třetím rozsah zdrojové proměnné a na posledních 2 místech rozsah cílové proměnné. Dále bych chtěl ještě zmínit tu skutečnost, že výstupní napětí lze nastavovat pouze u pinů, které jsou označeny jako PWM, u Arduino Duemilanove jsou to  3, 5, 6, 9, 10 a 11. Program je obdobný předchozímu, přičemž jsem přidal také využití komunikace po sériové lince. Ve funkci setup se nachází příkaz pro samotné zapnutí a nastavení komunikace a dále se po řízení svitu LED diody odesílají naměřené hodnoty z potenciometru přes sériovou linku do připojeného počítače. Okno pro zobrazení zaslaných hodnot si můžete aktivovat po nahrání programu přes ikonku lupy v pravém horním rohu či v nabídce Nástroje-Sériový monitor. Je také ještě nutné nastavit v Sériovém monitoru stejnou rychlost, jakou máme nastavenou v programu - v tomto případě 9600 bps.

// Potenciometr PWM LED
// navody.dratek.cz

int potPin = A0;    // číslo pinu připojeného potenciometru
int ledPin = 3;     // číslo pinu připojené LED diody

int potProm = 0;    // proměnná pro analogovou hodnotu potenciometru
int ledProm = 0;    // proměnná pro analogovou hodnotu PWM

void setup() {
  // nastavení LED jako výstup
  pinMode(ledPin, OUTPUT);
  // nastavení potenciometru jako vstup
  pinMode(potPin, INPUT);
  // nastavení komunikace přes sériovou linku s rychlostí 9600 bps
  Serial.begin(9600);
}

void loop() {
  // načtení analogové hodnoty senzoru a uložení do proměnné
  potProm = analogRead(potPin);
  // přepočet hodnot z potenciometru na PWM LED diody
  ledProm = map(potProm, 0, 1023, 0, 255);
  // nastavení napětí na LED diodě odpovídající hodnotě PWM
  analogWrite(ledPin, ledProm);

  // vytisknutí naměřených údajů přes sériovou linku
  Serial.print("Senzor = " );
  Serial.print(potProm);
  Serial.print("\t vystup = ");
  Serial.println(ledProm);

  // pauza programu na 2 ms pro ustálení 
  // analogově-digitálního převodníku
  // po předchozím čtení hodnot
  delay(2);
}

Po správném zapojení by jste měli dostat obdobné výsledky v Sériovém monitoru jako na obrázku níže.

Schéma zapojení tlačítka s LED diodou

Potenciometry, LED diody a mnoho dalšího lze zakoupit na internetovém obchodu dratek.cz

FB tw

Další podobné články