Доброго времени суток! Нужна помощь в создании тахометра для велика на герконе с магнитом. Распологаю: -геркон -магнит -ардуино Нужно добиться того, чтобы раз в секунду (0.5с, 1.5с...) переменная int speed обновлялась и содержала приблизительное (+-1км/ч, если возможно) значение скорости. Нужна суперпростая функция, хотелось бы чтобы любые остальные библиотеки работали. Всякие фичи дописываю сам, надеюсь на вашу поддержку
это не тахометр, а спидометр И, похоже, кто-то не умеет пользоваться гуглем... поиск по "тахометр / спидометр на герконе" выдает кучу результатов, в том числе с готовым кодом, напрмер http://arduino.ru/forum/programmirovanie/spidometr-rabotayushchii-s-pomoshchyu-gerkona
А можно ПРОЩЕ, ЧЕМ НА ЭТОМ САЙТЕ???? Т. е. САМАЯ ПРОСТАЯ ФУНКЦИЯ С ФОРМУЛОЙ, ИБО В ФИЗИКЕ Я 0!!! P.S. ГуглОм я пользоваться умею. P.P.S. браузер гугл хром выделяет слово "гугл" как грамматическую ошибку (!?) P.P.P.S. предлагает замены "гул", "гугу" и "углу" P.P.P.P.S. все эти постскриптумы - дополнения одного сообщения (добавлял по очереди в конец)
ДЫК надо определиться что больше хочется - разбираться с физикой или купить готовое. Мне если что-то хочется сделать своими руками - я не буду задавать вопросы на форумах. Пусть это будет корявое, дорогое - но функционирующее и полностью мое спроектированное устройство выполняющее задачи которые я от него хотел получить. Парьтесь на здоровье - но зачем парить других.... Логика? С практической точки зрения собирать бессмысленно (все равно дороже получится), а если самому учиться - то и искать решение нужно самому - не ракету ведь собираете.
Начните с формулы длины окружности. Потом считайте ардуиной время между срабатываниями геркона. Потом длину окружности разделите на полученное время. Вот вам и скорость - расстояние, пройденное за определенный временнОй интервал. Останется только привести к требуемой единице измерения и вывести на экран.
Т. е. в переменной V будет содержаться скорость в сантиметрах в миллисекунду!? Код (C++): int V = 0; int t = 0; int d = 25 * 2; // Где 25 - удалённость геркона от оси (радиус) int S = 3.1415 * d; int gercon = 2; void setup() { pinMode(gercon, INPUT_PULLUP); Serial.begin(9600); } void loop() { if (digitalRead(gercon) == HIGH) { V = t * S; t = 0; Serial.print(V); // Тут я получаю сантиметры в миллисекунду!? } else { t += 1; delay(1); } }
Вы получаете сантиметры, умноженные на t. V=s/t Для получения t используйте millis или micros. И еще. Геркон на малой скорости может быть замкнутым в течение более 1 ms. Ставьте флаги замкнутости и их сброс после получения LOW.