Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 31.07.2020
Сообщений: 4
1

Arduino Pro Mini и ems22a

31.07.2020, 23:56. Просмотров 962. Ответов 7
Метки нет (Все метки)

Купил энкодер не могу разобраться как работать с ним на программном уровне.
Подключается по протоколу SPI к Arduino Pro Mini (5V, 16Мгц).
Даташит к энкодеру (https://static6.arrow.com/arop... ems22a.pdf)
Вот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <SPI.h>
#define SPI_MODE0 0x00
const int pinCS = 10;
int s;
void setup() {
  Serial.begin(115200);
  SPI.begin();
   pinMode(pinCS, OUTPUT);
   digitalWrite(pinMode, 1);
   SPI.setClockDivider(SPI_CLOCK_DIV16);
 
}
 
void loop() {
  digitalWrite(pinCS, 0);
  s = SPI.transfer(0);
  digitalWrite(pinCS, 1);
  Serial.print("s");
  Serial.println(s);     
}
По итогу s выводит мне в диапозоне от 0 до 8, после 8 сбрасывается до 0.
Я же хочу получать точное количество шагов пройденное энкодером (на сколько шагов повернулся энкодер)
Энкодер 10-и битный, 1024 шагов.
Может кто помочь разобраться, как реализовать задуманное?
Может я что-то упускаю или не допонимаю. В электронике я Junior)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2020, 23:56
Ответы с готовыми решениями:

Модуль распознавания речи + Arduino Pro mini + Arduino MP3-Sheild
Список компонентов: 1).Модуль распознавания речи.(напряжение питания от 4,5 до 5,5 Вольт DC)...

Питание Arduino Pro Mini
Добрый день, всем. Имеется ардуинка про мини 5v, подключенная к ней светодиодная лента на 12v,...

Arduino Pro Mini + HC-SR04
Приветствую. Подскажите как реализовать такую задачу. Есть: Arduino Pro Mini Энкодер Датчик...

I2C в Arduino Pro Mini
Всем привет! Купил Arduino Pro Mini на Aliexpress и потребовалось использовать его для передачи...

7
2402 / 1721 / 356
Регистрация: 11.09.2009
Сообщений: 6,321
03.08.2020, 03:38 2
Цитата Сообщение от Hot_Peppironi Посмотреть сообщение
По итогу s выводит мне в диапозоне от 0 до 8, после 8 сбрасывается до 0.
Смотреть надо SPI.transfer. Там должна отрабатываться такая диаграмма чтения:
0
Миниатюры
Arduino Pro Mini и ems22a  
0 / 0 / 0
Регистрация: 31.07.2020
Сообщений: 4
03.08.2020, 12:18  [ТС] 3
Спасибо за ответ, но могли бы вы пояснить, что значит "смотреть SPI.transfer"?
0
2402 / 1721 / 356
Регистрация: 11.09.2009
Сообщений: 6,321
03.08.2020, 15:53 4
В вашем коде переменной s присваивается значение функции SPI.transfer:
C++
1
s = SPI.transfer(0);
Внутри этой функции физически и происходит чтение данных с датчика. Вот и надо посмотреть, как оно происходит, соответствует ли временной диаграмме из даташита на датчик. Как формируется такт CLK, какой у него получается минимальный период, где по времени относительно него читаются данные, сколько бит, куда заносятся. Задача - найти, какие, где и почему биты теряются.
1
0 / 0 / 0
Регистрация: 31.07.2020
Сообщений: 4
04.08.2020, 14:47  [ТС] 5
Огромное спасибо, за подробный ответ

Добавлено через 2 часа 56 минут
Тогда еще вопрос, как это сделать?
Как посмотреть, что происходит внутри этой функции?
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,135
Записей в блоге: 6
04.08.2020, 15:20 6
Цитата Сообщение от Hot_Peppironi Посмотреть сообщение
Как посмотреть, что происходит внутри этой функции?
Найдите ее в библиотеках ардуины.
Но я думаю что лучше посмотреть что на SPI с помощью логического анализатора и сравнить с тем что должно быть согласно даташита на энкодер.
1
2402 / 1721 / 356
Регистрация: 11.09.2009
Сообщений: 6,321
04.08.2020, 15:23 7
Hot_Peppironi, я не знаю, как вам помочь. Попробуйте почитать в том же Help-е по программному модулю SPI, хидер которого вы подключили (#include <SPI.h>),
определили режим работы SPI (#define SPI_MODE0 0x00),
проинициализировали (SPI.begin(); ),
высчитали нужный коэффициент деления и установили частоту такта CLK (SPI.setClockDivider(SPI_CLOCK_DIV16); )
и выяснили, с каким параметром надо вызывать чтение (s = SPI.transfer(0); ).

Или подождите, может кто напишет вам готовый код.
1
0 / 0 / 0
Регистрация: 31.07.2020
Сообщений: 4
04.08.2020, 15:34  [ТС] 8
Спасибо, еще раз. Попробую сам дальше разобраться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2020, 15:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Arduino pro mini без кварца
Доброго времени! Интересует возможность использовать Arduini IDE с arduino pro mini без кварца....

Заливка скетча в Arduino Pro-Mini в Debian
Доброго времени! Есть Arduino mini pro ATmega168 5V и Debian 7 (и в том и в другом глубокий нуб)....

Arduino Pro Mini Ошибка запроса дескриптора USB
Открыл совершенно новую ардуино про мини, подключил к пк, всё нормально. Залил скетч тоже всё...

Как загрузить скетч в arduino pro mini с телефона
Доброго времени суток, форумчане. Столкнулся с проблемой загрузки скетча с андроида через...

Проблемы прошивки/работы Arduino Pro mini (без собственного конвертора)
Вообщем есть Freaduino Pro Mini (ATMega 328) ее нужно запрограммировать, но на прямую подключить...

Возможно ли сделать нормальный видеострим с Arduino Pro Mini через Bluetooth-модуль
Всем привет! Друзья, такой вопрос - подскажите, возможно ли сделать нормальный видеострим с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.