ТЕСТЕР СКОРОСТИ ХОМЯКА со счетчиком вращений и наградой з...

Источник:

Тестер скорости хомяка

Описание:
Вы когда-нибудь задумывались, как быстро может бегать хомяк? Или сколько раз в день он делает круг вокруг своего колеса? Попробуем узнать!

Особенности счетчика:

Можно подключить к любому колесу для хомяка.

Отображает количество оборотов в минуту (об/мин) в реальном времени.

Сохраняет максимальную достигнутую скорость

Подсчитывает общее количество вращений колеса с момента запуска.

При достижении введенной цели вращения хомяк получает вознаграждение от дозатора.

Компоненты, необходимые для проекта:

Плата Ардуино

Серводвигатель SG90

Модуль датчика Холла

Несколько маленьких магнитов

Клей или двусторонний скотч

Застежки-молнии для крепления

ЖК-экран 2x16 с шестью кнопками

Макет

3D-печатные детали

Источник питания для Arduino (Power Bank или другой)

Код Ардуино

Прогр��мма написана с использованием Arduino IDE.
Для создания 3D-моделей использовался Tinkercad.
Печать осуществлялась с использованием PLA-нити при температуре 200°C.
с печатной платформой, нагретой до 50°C.
Стандартное качество было установлено на 0,2 мм.

Инструкции по сборке и монтажу:

Установите ЖК-дисплей на Arduino.

Подключите контакт VIN к макетной плате; это будет питать датчик и сервопривод.

Подключите GND, чтобы он служил заземлением как для датчика, так и для сервопривода.

Подключите сигнальный провод датчика к аналоговому контакту A1.

Подключите провод сигнала сервопривода к цифровому контакту 3.

Загрузите код в Arduino.

И это всё по «сложной электронике»!
Печать на моем древнем принтере заняла три дня!
Конечно, мне пришлось внести несколько изменений в дизайн — и еще есть куда совершенствоваться.

Затем вставьте сервопривод в гнездо и приклейте его к дозатору.
Убедитесь, что рычаг сервопривода перемещается на 40-120°, чтобы он мог правильно открыть коробку с наградами.
Вы также можете выдвинуть рычаг сервопривода для лучшего движения.

Прикрепите магнит к колесу. Текущий код написан для одного магнита.
Если вы хотите использовать больше магнитов, вам нужно изменить только одну строку в коде — комментарий внутри кода объясняет, как это сделать.
Установите датчик как можно ближе к магниту, но следите за тем, чтобы он не зацепился.
На фото датчик прикреплен термоклеем.

Операция:

После включения на дисплее появляется меню настройки для установки цели вознаграждения.
Используйте кнопки вверх и вниз, чтобы добавить или вычесть 100 вращений.
Используйте левую и правую кнопки, чтобы добавить или вычесть 5 вращений.
Нажмите кнопку выбора для подтверждения и начала измерения.

Веселиться! Мне бы хотело��ь увидеть ваши версии проекта — улучшайте их, экспериментируйте с ними и учитесь на вашем опыте.
Никогда не сдавайся!
Вы также можете добавить модуль часов реального времени и SD-карту для сохранения ежедневной статистики или времени активности.
или добавьте модуль Wi-Fi для удаленного считывания результатов или открытия контейнера по беспроводной сети.

Единственное ограничение — ваше воображение! Код ниже:

#include
#include

ЖК «ЖиквидКристалл»(8, 9, 4, 5, 6, 7);

#define BUTTONS_PIN A0
#define UP_BUTTON 0
#define DOWN_BUTTON 1
#define LEFT_BUTTON 2
#define RIGHT_BUTTON 3
#define SELECT_BUTTON 4
#define NO_BUTTON 5

Сервопривод;

int приз = 0;
интервал суммы = 0;
интервал об/мин = 0;
int максимальная скорость = 0;

bool setupDone = ложь;
Bool inLoop = ложь;
bool servoTriggered = ложь;

INT LastSensorState = НИЗКИЙ;
беззнаковый длинный LastRpmTime = 0;
беззнаковый длинный highToLowCount = 0;
беззнаковое длинное время начала = 0;

беззнаковый длинный LastTotalDisplay = 0;
Bool ShowTotal = ложь;

INT LastButton = NO_BUTTON;

перечисление SetupStage {
STAGE_SERVO_INIT,
STAGE_MSG1,
STAGE_MSG2,
STAGE_PRIZE_SELECT,
STAGE_DONE
};

SetupStage currentStage = STAGE_SERVO_INIT;

беззнаковый длинный stageStartTime = 0;

// — кнопка записи LCD Shield ---
интервал readButton() {
значение int = AnalogRead (BUTTONS_PIN);
если (значение < 50) вернуть RIGHT_BUTTON;
если (значение < 200) вернуть UP_BUTTON;
если (значение < 400) вернуть DOWN_BUTTON;
если (значение < 600) вернуть LEFT_BUTTON;
если (значение < 800) вернуть SELECT_BUTTON;
вернуть NO_BUTTON;
}

недействительная настройка() {
pinMode(A1, ВХОД);
ЖК.begin(16, 2);
stageStartTime = миллис();
сервопривод.attach(3);
серво.запись(40); // начальная позиция сервопривода для полной коробки с наградами
}

// — запуск программы без задержки() ---
пустота ч

09:25
26
Нет комментариев. Ваш будет первым!

Ссылка появится после регистрации

Похожие модели

Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.