Arduino:Примеры/ADXL3xx
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Акселерометр серии ADXL3xx [1]
Этот пример показывает, как считывать данные с акселерометров серии ADXL3xx (вроде ADXL320, ADXL321, ADXL322, ADXL330) от компании Analog Devices, а затем передавать эти данные на персональный компьютер.
В этом примере использовались оценочные платы для акселерометров от SparkFun. Впрочем, подойдут и оценочные платы от adafruit, но им, возможно, потребуется другой тип подключения.
Данные о каждой оси передаются акселерометром в виде аналогового напряжения диапазоном от 0 до 5 В. Чтобы прочитать эти данные, надо будет воспользоваться функцией analogRead().
Необходимое оборудование
- Плата Arduino - 1 шт.;
- Акселерометр ADXL3xx - 1 шт.;
Цепь
Акселерометру требуется очень небольшая сила тока, поэтому его можно подключить прямо к цифровым контактам Arduino. То есть три входных аналоговых контакта Arduino будут использоваться как цифровые контакты (для питания, заземления и самодиагностики), а еще три аналоговых контакта будут считывать аналоговые данные акселерометра.
Схема
Вот схема подключения контактов для конфигурации выше (для оценочной платы):
Оценочная плата | Самодиагностика | Ось Z | Ось Y | Ось X | «Земля» | Напряжение |
---|---|---|---|---|---|---|
Входные аналоговые контакты Arduino | 0 | 1 | 2 | 3 | 4 | 5 |
Аналогичная схема для настоящего акселерометра:
Контакт на ADXL3xx | Самодиагностика | Z-выход | Y-выход | X-выход | «Земля» | Напряжение |
---|---|---|---|---|---|---|
Входные аналоговые контакты Arduino | Не подсоединяется | 1-ый входной аналоговый контакт | 2-ой входной аналоговый контакт | 3-ий входной аналоговый контакт | GND | 5V |
Код
/*
Акселерометр серии ADXL3xx
Считывает данные от акселерометра серии ADXL3xx (от компании Analog Devices),
а затем передает их на компьютер.
Контакты Arduino специально спроектированы для совместимости
с оценочными платами от SparkFun, которые доступны тут:
http://www.sparkfun.com/commerce/categories.php?c=80
http://www.arduino.cc/en/Tutorial/ADXL3xx
Цепь:
0-ой входной аналоговый контакт – самодиагностика акселерометра
1-ый входной аналоговый контакт – ось Z
2-ой входной аналоговый контакт – ось Y
3-ий входной аналоговый контакт – ось X
4-ый входной аналоговый контакт – «земля»
5-ый входной аналоговый контакт – напряжение
Создан 2 июля 2008 Дэвидом А. Меллисом (David A. Mellis),
модифицирован 30 августа 2011 Томом Иго (Tom Igoe).
Этот код не защищен авторским правом.
*/
// это константы, т.е. значения, которые не изменятся.
// воспользуемся ими для обозначения контактов:
const int groundpin = 18; // 4-ый входной аналоговый контакт – «земля»
const int powerpin = 19; // 5-ый входной аналоговый контакт – напряжение
const int xpin = A3; // X-ось акселерометра
const int ypin = A2; // Y-ось акселерометра
const int zpin = A1; // Z-ось акселерометра (только для моделей с тремя осями)
void setup()
{
// инициализируем последовательную передачу данных:
Serial.begin(9600);
// создаем для акселерометра «землю» и напряжение,
// используя входные аналоговые контакты Arduino в качестве цифровых контактов.
// благодаря этому оценочную плату можно подключить к Arduino напрямую.
// если вы вместо этого используете
// обычные 5-вольтовый и заземляющий контакты Arduino,
// эти строчки кода можно удалить.
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
}
void loop()
{
// выводим данные от датчика на Serial Monitor:
Serial.print(analogRead(xpin));
// вбиваем Tab между значениями:
Serial.print("\t");
Serial.print(analogRead(ypin));
// вбиваем Tab между значениями:
Serial.print("\t");
Serial.print(analogRead(zpin));
Serial.println();
// делаем задержку между считываниями:
delay(100);
}
{{#set: Код примера= /*
Акселерометр серии ADXL3xx Считывает данные от акселерометра серии ADXL3xx (от компании Analog Devices),
а затем передает их на компьютер.
Контакты Arduino специально спроектированы для совместимости
с оценочными платами от SparkFun, которые доступны тут: http://www.sparkfun.com/commerce/categories.php?c=80
http://www.arduino.cc/en/Tutorial/ADXL3xx
Цепь: 0-ой входной аналоговый контакт – самодиагностика акселерометра 1-ый входной аналоговый контакт – ось Z 2-ой входной аналоговый контакт – ось Y 3-ий входной аналоговый контакт – ось X 4-ый входной аналоговый контакт – «земля» 5-ый входной аналоговый контакт – напряжение Создан 2 июля 2008 Дэвидом А. Меллисом (David A. Mellis), модифицирован 30 августа 2011 Томом Иго (Tom Igoe). Этот код не защищен авторским правом.
- /
// это константы, т.е. значения, которые не изменятся. // воспользуемся ими для обозначения контактов: const int groundpin = 18; // 4-ый входной аналоговый контакт – «земля» const int powerpin = 19; // 5-ый входной аналоговый контакт – напряжение const int xpin = A3; // X-ось акселерометра const int ypin = A2; // Y-ось акселерометра const int zpin = A1; // Z-ось акселерометра (только для моделей с тремя осями)
void setup() {
// инициализируем последовательную передачу данных: Serial.begin(9600); // создаем для акселерометра «землю» и напряжение, // используя входные аналоговые контакты Arduino в качестве цифровых контактов. // благодаря этому оценочную плату можно подключить к Arduino напрямую. // если вы вместо этого используете // обычные 5-вольтовый и заземляющий контакты Arduino, // эти строчки кода можно удалить. pinMode(groundpin, OUTPUT); pinMode(powerpin, OUTPUT); digitalWrite(groundpin, LOW); digitalWrite(powerpin, HIGH);
}
void loop() {
// выводим данные от датчика на Serial Monitor: Serial.print(analogRead(xpin)); // вбиваем Tab между значениями: Serial.print("\t"); Serial.print(analogRead(ypin)); // вбиваем Tab между значениями: Serial.print("\t"); Serial.print(analogRead(zpin)); Serial.println(); // делаем задержку между считываниями: delay(100);
} }}
Данные
Ниже – фрагмент данных, считанных во время перемещения акселерометра ADXL322 2g под разными углами относительно оси Y (т.е. относительно земли). Для других осей данные будут высчитываться примерно также, но могут варьироваться в зависимости от чувствительности устройства. Если акселерометр будет находиться ровно по горизонтали (т.е. параллельно к земле под углом в 0°), считанные данные будут около 512, но значения для других углов у разных акселерометров (например, если взять ADXL302 5g) могут варьироваться.
Угол | -90 | -80 | -70 | -60 | -50 | -40 | -30 | -20 | -10 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
Данные | 662 | 660 | 654 | 642 | 628 | 610 | 589 | 563 | 537 | 510 | 485 | 455 | 433 | 408 | 390 | 374 | 363 | 357 | 355 |
См.также
- pinMode()
- digitalWrite()
- analogRead()
- serial.begin()
- serial.print()
- AnalogInput
- AnalogInOutSerial
- Memsic2125
- Knock
- Ping
Внешние ссылки
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