Используем последовательный порт (UART), аналогово-цифровой преобразователь (ADC) и широтно-импульсную модуляцию (PWM). Применяем функции analogRead(), analogWrite(), map(), Serial.print().

Закон Ома:

Сила тока на участке цепи прямо пропорциональна напряжению и обратно пропорциональна сопротивлению.

 

Рис. 1. Делитель напряжения на резисторах и переменный резистор (потенцииометр). 

Рис. 1. Принципиальная электрическая схема подключения источника измеряемого напряжения к микроконтроллеру на плате Ардуино. 

int aPin = 0;

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

void loop() {
  int analog = analogRead(aPin);
  Serial.print("sensor = ");
  Serial.print(analog);
  int Voltage = map(analog, 0, 1023, 0, 500);
  Serial.print("   Voltage = ");
  Serial.println(Voltage/100.0);
  delay(10);
}

Прог. 1. Измерение напряжения с помощью Ардуино. 

sensor = 0   Voltage = 0.00
sensor = 0   Voltage = 0.00
sensor = 26   Voltage = 0.12
sensor = 55   Voltage = 0.26
sensor = 86   Voltage = 0.42
sensor = 105   Voltage = 0.51
sensor = 131   Voltage = 0.64
sensor = 176   Voltage = 0.86
sensor = 245   Voltage = 1.19
sensor = 356   Voltage = 1.73
sensor = 434   Voltage = 2.12
sensor = 471   Voltage = 2.30
sensor = 523   Voltage = 2.55
sensor = 606   Voltage = 2.96
sensor = 741   Voltage = 3.62
sensor = 995   Voltage = 4.86
sensor = 1023   Voltage = 5.00
sensor = 1023   Voltage = 5.00

Лист. 1. Отображение информации передаваемой платой Ардуино в компьютер на мониторе последовательного порта. 

Рис. 2. Графическое представление информации передаваемой платой Ардуино в компьютер на плоттере последовательного порта.

Рис. 3. Принципиальная электрическая схема подключения переменного резистора и светодиода к плате Ардуино. 

int aPin = 0;
int ledPin = 9;

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

void loop() {
  int analog = analogRead(aPin);
  Serial.print("sensor = ");
  Serial.print(analog);
  int Voltage = map(analog, 0, 1023, 0, 500);
  Serial.print("   Voltage = ");
  Serial.println(Voltage/100.0);
  analogWrite(ledPin, Voltage/2);
  delay(10);
}

Прог. 2.

Скважность (в физике, электронике) — безразмерная величина, одна из характеристик импульсных систем, определяющая отношение периода следования (повторения) импульсов к длительности импульса. Часто используется величина, обратная скважности, которая называется коэффициент заполнения или рабочий цикл (англ. duty cycle).

Рис. 4. Осциллограмма ШИМ (PWM) сигнала с малым коефициентом заполения

Рис. 5.

Рис. 6.

Рис. 7. Принципиальная электрическая схема

int aPin = 0;
int ledPin = 9;

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

void loop() {
  int analog = analogRead(aPin);
  Serial.print("sensor = ");
  Serial.print(analog);
  if (analog < 200) {
    analog = 200;
  }
  int Voltage = map(analog, 200, 1023, 0, 500);
  Serial.print("   Voltage = ");
  Serial.println(Voltage / 100.0);
  analogWrite(ledPin, Voltage / 2);
  delay(10);
}

Прог. 3.

Рис. 8. Принципиальная электрическая схема

int aPin = 0;
int ledPin[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int num = 0;
int ledPinSize = sizeof(ledPin) / sizeof(int);

void setup() {
  for (int i = 0; i < ledPinSize; i++) {
    pinMode(ledPin[i], OUTPUT);
  }
}

void loop() {
  int analog = analogRead(aPin);
  int speedLamp = map(analog, 0, 1023, -500, 500);
  digitalWrite(ledPin[num], LOW);
  if (speedLamp > 0) {
    num++;
    num = num % ledPinSize;
  }
  else {
    num--;
    num = (num >= 0) ? num : ledPinSize-1;
  }
  digitalWrite(ledPin[num], HIGH);
  delay(550 - abs(speedLamp));
}

Прог. 4. Управление бегущим огнём