Odczyt wejścia analogowego w Arduino

analogRead(A0);

W arduino UNO jest 6 wejść analogowych od A0 do A5.

Arduino Analog in 800

Wejścia te posiadają przetworniki analogowo - cyfrowe tzw. ADC (analog-digital converter) a tak na prawdę w Arduino Uno jest jeden ADC 10 bitowy + multiplekser.

Wiemy, że na wejściu analogowym w Arduino UNO może pojawić się zakres napięcia od 0 do 5 V (w innych uC trzeba sprawdzić bo może być 3,3V).

Oznacza to, że:

- dla 0V w A0 mikrokontroler przypisze na tym wejściu do zmiennej 0

- dla 5V w A0 mikrokontroler przypisze na tym wejściu do zmiennej 1023 (bo 10 bitów)

Dlatego jak chcemy wyświetlić z powrotem wartość napięcia (z pewną ograniczoną do 1024 pozycji rozdzielczością) należy użyć formuły:

wolty=5.0*zmienna/1023; //zamiana wartości z wejścia ADC na napięcie


Kod minimum:

int zmienna = 0; //Deklaracja zmiennej typu integer

void setup() {
Serial.begin(9600); // Deklarujemy, że bedziemy używać portuUSB z 9600 BoundRate
}

void loop() {
zmienna = analogRead(A0);//Odczyt napięcia z portu A0 i zamiana w uKontrolerze na wartość binarną
Serial.print("Odczytana wartość binarna=");
Serial.println(zmienna); //Pokazuje wartość na PC poprzez USB
delay(500); //Celowe opóźnienie 0,5 sekundy
}

 

Kod z przeliczeniem z powrotem na napięcie w [V]:

int zmienna = 0; //Deklaracja zmiennej typu integer
float wolty=0.0; //Deklaracja zmiennej typu zmiennoprzecinkowego

void setup() {
Serial.begin(9600); // Deklarujemy, że bedziemy używać portuUSB z 9600 BoundRate
}

void loop() {
zmienna = analogRead(A0);//Odczyt napięcia z portu A0 i zamiana w uKontrolerze na wartość binarną
Serial.print("Odczytana wartość binarna=");
Serial.print(zmienna); //Pokazuje wartość na PC poprzez USB
 Serial.print("[bit] Po przeliczeniu to=");
wolty=5.0*zmienna/1023; //zamiana wartości z wejścia ADC na napięcie
Serial.print(wolty); //Pokazuje wartość na PC poprzez USB
Serial.println(" V");
delay(500); //Celowe opóźnienie 0,5 sekundy
}

  

Literatura: 

1. Bardzo dobre źródło szczegółowych informacji jest pod tym LINKIEM