Ползунковый переключатель: подключение к ESP32 и Arduino

Переключатель на три вывода

Держит положение сам: ползунок переводят в одно из двух положений, и вывод платы подключён то к питанию, то к земле. В отличие от кнопки, ему не нужна подтяжка.

Как работает

У переключателя три вывода: средний (2) общий, он идёт на вход платы; крайние (1 и 3) идут на питание и землю. В одном положении средний замыкается с одним крайним, в другом — с другим, поэтому вход платы всегда подключён к определённому уровню и «висеть в воздухе» не может.

Это отличает переключатель от кнопки: кнопка в отпущенном состоянии вход не подключает ни к чему и требует подтяжки. Переключатель читают в любой момент через digitalRead() как режим, а не ловят как событие.

Выводы

ВыводНазначение
1крайний вывод: подключается к питанию или к земле
2средний, общий: идёт на вход платы
3второй крайний вывод: к земле или питанию, противоположно выводу 1

Подключение к ESP32

Ползунковый переключательESP32
13V3
2GPIO15
3GND

Схема из примера «Переключатель режимов».

Переключатель режимов

Открыть пример целиком
Код скетча
const int SWITCH = 15;
const int LED = 2;

void setup() {
  Serial.begin(115200);
  pinMode(SWITCH, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  bool fast = digitalRead(SWITCH) == HIGH;
  int period = fast ? 100 : 700;
  digitalWrite(LED, HIGH);
  delay(period);
  digitalWrite(LED, LOW);
  delay(period);
}

Подключение к Arduino Uno

Ползунковый переключательArduino Uno
1GND
2D2
35V

Схема из примера «Arduino Uno: переключатель режимов».

Arduino Uno: переключатель режимов

Открыть пример целиком
Код скетча
// Переключатель выбирает скорость мигания.
//
// У переключателя три вывода: средний общий, он идёт на плату, а
// крайние — на землю и на питание. В любом положении вывод платы к
// чему-то прижат, поэтому подтяжка здесь не нужна — в отличие от
// кнопки, которая в отпущенном состоянии не соединена ни с чем.
//
// Щёлкайте по переключателю на схеме.

const int SWITCH = 2;
const int LED = 9;

void setup() {
  pinMode(SWITCH, INPUT);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool fast = digitalRead(SWITCH) == HIGH;
  int period = fast ? 100 : 700;

  digitalWrite(LED, HIGH);
  delay(period);
  digitalWrite(LED, LOW);
  delay(period);
}

В железе

Мини-переключатели рассчитаны на слабые токи (до 0,3 А): ими коммутируют сигнал для контроллера, а не нагрузку. Для лампы или мотора переключатель управляет реле или транзистором.

Частые ошибки

Другие детали