Подсчёт числа оборотов с помощью оптопары TCST1103
- Войдите на сайт для отправки комментариев
Приветствую, коллеги.
Я новичок в Ардуино, помогаю школьнику с проектом :-)
Решили сделать макет электромобиля. Комплектущие были закуплены, контроллер - Arduino UNO, программа написана (использовалась книга М. Момота "Мобильные роботы на базе Arduino, 2-е изд."). Захотелось снимать количество оборотов двигателя, для чего на "мотор-редуктор колесо" установлен диск с прорезями, и закуплена оптопара TCST1103, идеально подходящая по размеру под диск.
Попробовал написать программу для вывода состояния пина, на который собираюсь подавать сигнал от фототранзистора, но даже без подключения вывода фототранзистора в монитор порта постоянно лезут значения. Что не так?
Задача наверняка уже решалась неоднократно.
void setup() { Serial.begin(115200); // Устанавливал и 9600 - разницы нет pinMode(2, INPUT); // Переводим 2 порт в состояние ввода информации digitalWrite(2, HIGH); } void loop() { Serial.println(digitalRead(2)); // Ситываем состояние. }
INPUT_PULLUP
INPUT_PULLUP
а 5-я строка это не оно?
Схему давайте.
Схему давайте.
со схемой любой инженер сможет )))
И, кстати, лог монитора порта тоже. Что там у Вас лезет, откуда нам знать-то?
Упс... Полез снимать лог монитора порта, и... там теперь "нормальные" единицы!!! А перед тем, как я писал, что "даже без подключения вывода фототранзистора в монитор порта постоянно лезут значения" - был то 0, то 1 - совершенно хаотично.
Скетч не менял.
Потом поменял подтягивающий резистор на "землю" -
в монитор порта полезли стабильные нули, ура! :-)
Считаю, что данная ошибка устранена, всем ОГРОМНОЕ СПАСИБО за быстрый ответ!
В следующий раз уже видимо приду с вопросами по оптопаре :-)
P.S. Хотя конечно причину я не понял... Как будто не загрузилась команда использовать подтягивающий резистор... Но сегодня-то скетч старый нормально заработал без перекомпиляции...
У 328-го МК нет внутреннего "резистора на землю".
Но это не мешает ему читать принудительно установленный LOW. Наверно поэтому и рекомендуют запись - INPUT_PULLUP.)))) Но радист протестовал.))))
Приветствую, коллеги.
Я новичок в Ардуино, помогаю школьнику с проектом :-)
Решили сделать макет электромобиля. Комплектущие были закуплены, контроллер - Arduino UNO, программа написана (использовалась книга М. Момота "Мобильные роботы на базе Arduino, 2-е изд."). Захотелось снимать количество оборотов двигателя, для чего на "мотор-редуктор колесо" установлен диск с прорезями, и закуплена оптопара TCST1103, идеально подходящая по размеру под диск.
Попробовал написать программу для вывода состояния пина, на который собираюсь подавать сигнал от фототранзистора, но даже без подключения вывода фототранзистора в монитор порта постоянно лезут значения. Что не так?
Задача наверняка уже решалась неоднократно.
У вас они и будут "лезть" - в бесконечном цикле
Чтобы сообщения "лезли " только при срабатывании фототранзистора, попробуйте так:
Но это не мешает ему читать принудительно установленный LOW. Наверно поэтому и рекомендуют запись - INPUT_PULLUP.)))) Но радист протестовал.))))
а не то ли самое делает 5-я строка скетча, только не столь наглядно
а не то ли самое делает 5-я строка скетча, только не столь наглядно
В том скетче, да, но потом рождаются посты #6, по аналогии. А вот вписать PULL_DOWN уже не выйдет.