Пока я разбирался с предыдущей проблемой вспомнил о том, что тройка шилд даёт всем сенсорам 5V, а ускоренееметру, который я хочу использовать, нужно 3.3V. Как решить эту проблему? P.S. На этом форуме уже есть статья об этом, но я там ни чего не понял)
Пока что я только планирую комплект: ваши Leonardo и акселерометр плюс пара резисторов. То есть я правильно понял что к тройке можно цеплять только пяти вольтовки? С I/O шилдами также?
Дык наш MMA7361 (вернее не наш, а DFRobot) замечательно работает от 5 В. Своими руками пробовал. Не смотрите datasheet в отрыве от платы: на плате сделан обвес, понижающий напряжение. Тройка, да, всегда даёт столько напряжения сколько есть на пине, обозначенном как 5V на Arduino Uno. То, есть, да — 5 В. IO Shield от DFRobot так же меньше 5 В вам не выдаст.
ОК, с подключением ясно. А как собственно работает акселерометр? Я где-то читал что он по умолчанию выдаёт на каждой оси половину (т.е. 512), а при наличии ускорения и если оно положительное, то увеличивает значение, если же отрицательное, то уменьшает. Т.е. выходит что если плата на входе прочитает значение 513, то это значит что на данной оси ускорение равно 1? Если да, то значит ли это что ускорение равно одному метру на секунду в квадрате или надо каике-то расчёты делать?
По способу общения всё так и происходит. По величинам: у акселерометра выбирается чувствительность: либо 1,5 g (9,8×1,5 м/с²) либо 6 g (9,8×6 м/с²) соответствующая полному рабочему диапазону, т.е. 512 градациям. То есть ускорение = sensitivity / abs(analogRead(accel) - 512)
А что возвращает функция abc()? Как я понял она возвращает модуль числа, но зачем, разве нельзя просто аналогРид - 512 поделить на чувствительность (т.е. на 1,5 либо 6, да?) и получить отрицательное ускорение, что даст нам понять что акселерометр движется по этой оси назад, с модулем известного ускорения?