Используем последовательный порт (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. Управление бегущим огнём