Настройка акселерометра MMA7361
- Войдите на сайт для отправки комментариев
Ср, 10/06/2015 - 16:37
Всем привет.
Подключил акселерометр к Arduino Uno, появилась необходимость его настроить.
Когда трясу устройство, на экран должен выводиться текст. Ещё раз трясу, выводится другой текст и так далее. Если не трясу или слабо трясу, ничего не меняется.
Вот скетч на то, что есть:
#include <Wire.h>
#include <LiquidCrystal.h>
String phrases[] = /* Known phrases */{"Ask again later", "It is certain", "Without a doubt", "Yes - definitely", "As I see it, yes", "Most likely", "Outlook good", "Yes", "My reply is no", "Very doubtful", "No", "Not a chance", "No way", "Absolutely not", "I doubt it", "Ask again", "I'm uncertain"};
String output;
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int backLight = 13; // pin 13 will control the backlight
int x; // выходная переменная по оси x
int y; // выходная переменная по оси y
int z; // выходная переменная по оси z
int numberofphrases = 17;
void setup()
{
pinMode(backLight, OUTPUT);
analogWrite(backLight, 150);
randomSeed(analogRead(5));
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop()
{
int z = analogRead(2);
if (z > 600|| z < 15);
{
lcd.clear();
output = phrases[random(numberofphrases)]; //Chooses phrase
lcd.print(output); //Displays it
}
Serial.print("Z = "); // выводим значение по z
Serial.println(z);
delay(2000);
}
Нашёл такое решение. Если кто-то может предложить лучше, буду благодарен.
Теперь ещё вопрос: "Как зафиксировать значение?"
Я имею ввиду, что если я наклоню акселерометр, то значение "Z" всегда будет больше заданного числа (в моём случае - 200), а ответы будут сменять друг друга, каждые две секунды, как это заданно в программе (delay(2000));
Теперь ещё вопрос: "Как зафиксировать значение?"
Я имею ввиду, что если я наклоню акселерометр, то значение "Z" всегда будет больше заданного числа (в моём случае - 200), а ответы будут сменять друг друга, каждые две секунды, как это заданно в программе (delay(2000));
Вы уверены, что это так и что у Вас акселерометр? Если мне не изменяет память, то акселерометр - это штука для измерения ускорения, а не угла наклона. Угл наклона измеряет датчик магнитного поля или как-то так.
Ну а если по существу, то введите переменную oldZ, например, и сравинвайте не Z а разность Z-oldZ, после чего в oldZ кладите значение Z.
Всё, верно по поводу акселерометра.
MMA7361 - трёхосевой акселерометр (он выдаёт сигнал во время свободного падения, а также выдаёт сигнал о положении осей - x,y,z).
Хм, сейчас более подробно почитал о нём, буду экспереметнировать с датчиком свободного падения. Просто смотрел в интернете подобные "проекты", везде используют оси.
Спасибо Вам.