Arduino:Примеры/SwitchCase
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Использование оператора Switch при считывании данных от датчика [1]
Оператор if() позволяет создать ситуацию, которая может разрешиться только двумя вариантами – TRUE или FALSE. Однако порой требуется создать не два варианта, а больше, и тут можно воспользоваться несколькими операторами if(), но есть и другой способ – применить оператор switch(). Данный же урок продемонстрирует, как при помощи оператора switch() определять одно из четырех состояний фоторезистора – «темно», «тускло», «средняя яркость» и «очень ярко».
В этом примере сначала программа будет считывать данные от фоторезистора. Затем она воспользуется функцией map(), чтобы раздробить полученные данные на четыре отрезка/значения: 0, 1, 2 и 3. Наконец, она использует оператор switch(), чтобы вывести на компьютер одно из четырех сообщений – в зависимости от того, какое из четырех значений будет возвращено функцией analogRead(). То есть, по сути, в финале программа выведет на компьютер информацию о том, какую степень яркости «чувствует» фоторезистор.
Необходимое оборудование
- Плата Arduino;
- Фоторезистор (или другой аналоговый датчик);
- Один 10 кОм резистор;
- Макетная плата Breadboard;
- Провода-перемычки;
Цепь
Фоторезистор подключен к 0-ому входному аналоговому и 5-вольтовому контактам по принципу делителя напряжения. С другой стороны к нему подсоединен 10000-омовый резистор, который тоже подключен к 0-ому аналоговому контакту и «земле». Функция analogRead() будет возвращать из этой цепи данные в диапазоне от 0 до 600. Сам урок должен проходить в достаточно освещенном помещении.
Схема
Код
/*
Оператор Switch
Демонстрирует использование оператора switch().
Он позволяет выбирать между несколькими дискретными значениями одной переменной.
По сути, это как несколько операторов if().
Чтобы увидеть этот скетч в действии, плата и датчик должны находиться
в хорошо освещенном помещении.
Затем откройте окно Serial Monitor, и двигайте рукой над фоторезистором,
тем самым меняя степень яркости, которую он может воспринять.
Цепь:
* фоторезистор, подключенный к 0-ому аналоговому контакту и 5-вольтовому напряжению
* 10000-омовый резистор, заземленный и подключенный к 0-ому аналоговому контакту
Создан 1 июля 2009,
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
Этот код не защищен авторским правом.
http://www.arduino.cc/en/Tutorial/SwitchCase
*/
// это константы, т.е. значения, которые не изменятся.
// это самое высокое и самое низкое значения,
// которые могут быть считаны с датчика.
const int sensorMin = 0; // минимальное значение, которое можно считать с датчика; определено через эксперимент
const int sensorMax = 600; // максимальное значение, которое можно считать с датчика; определено через эксперимент
void setup() {
// инициализируем последовательную передачу данных:
Serial.begin(9600);
}
void loop() {
// считываем данные с датчика:
int sensorReading = analogRead(A0);
// дробим диапазон данных от 0 до 600 на четыре отрезка,
// чтобы у нас было 4 варианта на выбор:
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
// выводим на Serial Monitor одно из четырех сообщений,
// оповещающих о том или ином уровне яркости,
// т.е. «темно» (dark), «тускло» (dim),
// «средняя яркость» (medium) или «очень ярко» (bright):
switch (range) {
case 0: // ваша рука над фоторезистором
Serial.println("dark");
break;
case 1: // ваша рука чуть выше фоторезистора
Serial.println("dim");
break;
case 2: // ваша рука примерно в 10 см от фоторезистора
Serial.println("medium");
break;
case 3: // вы совсем не загораживаете фоторезистор
Serial.println("bright");
break;
}
delay(1); // делаем задержку между считываниями – для стабильности программы
}
См.также
- serial.begin()
- analogRead{}
- map()
- Serial.println()
- If Statement
- For Loop
- Array
- While Loop
- Switch Case
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino