Всем привет! Нужна помощь. Хочу сделать спидометр на AVR по типу велокомпьютеров (возможность вводить длину окружности). Сталкнулся с проблемой, что длина окружности не целое число а дробь. Может кто подобное делал? Если можно раскажите как вы обрабатывали информацию.
Скорость маленькая и поэтому можно все во float считать как на калькуляторе. Вот типы переменных в CVAVR подробно рассмотрены - Язык Си для микороконтроллеров - http://avr123.nm.ru/05.htm
avr123.nm.ru, Спасибо что откликнулись, но к сожалению я незнаю СИ. После посещения вашего курса я понял что мне нужно, но к сожалению я несмог найти подробной информации и примеров работы с числами с плавающей точкой. Если не трудно ткините носом туда где это можно посмотреть.
Добавлено спустя 1 минуту 58 секунд: Да и вообще какое это имеет значение? Ставим геркон или щелевую оптопару на колесо, и измеряем время между сигналами прохождения это точки. Время (t) знаем, длину окружности (S) колеса знаем, V=S/t. Все.
Всем спасибо за варианты решения задачи. К счастью разобрался, но возникла другая проблема: Преобразование кода для 7 сегментного индикатора. Понял что делается таблица преобразование, а дальше не ясно. Может кто обьяснит? (заранние благодарен)
ну если у тебя тройку надо показать, смотриш в массиве в ячейке номер 3 что записано. читаеш и отправляеш на порт к которому сегмент подключен. а в ячейке третьей должна быть комбинация 0 и 1 записана при записи в порт которой появится не краказябла а красивая тройка на индикаторе. (это образно, располагать массив в памяти программ обычно предлагают. чтоб озу константами не засирать)
Я не могу понять алгоритм преобразования. У меня получается например значение 0xС6 тобишь 198(км/ч), что дольше делать немогу понять. Обьясните пожалуйста.
Неслабо ты разогнался на велике =) X = 198; п.1 Берем остаток от деления на 10: X % 10 = 198 % 10 = 8; п.2 Записываем число в крайний правый индикатор. X := X / 10 = 198 / 10 = 19;
Честно говоря это не на велик, а на мотоцикл и 199км/ч это максимальное эначение. Вы уж меня простите но я немогу понять нашел пример, сделал в итоге пишет фигню. Посмотрите пожалуйста что я делаю не так? .equ a = 0 .equ b = 1 .equ c = 2 .equ d = 3 .equ e = 4 .equ f = 5 .equ g = 6