roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 15:30

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 11:54 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
Всем привет! Нужна помощь. Хочу сделать спидометр на AVR по типу велокомпьютеров (возможность вводить длину окружности).
Сталкнулся с проблемой, что длина окружности не целое число а дробь. Может кто подобное делал? Если можно раскажите как вы обрабатывали информацию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 12:03 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Скорость маленькая и поэтому можно все во float считать как на калькуляторе. Вот типы переменных в CVAVR подробно рассмотрены - Язык Си для микороконтроллеров - http://avr123.nm.ru/05.htm

Любителям АСМ посложней чуток.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 14:26 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
avr123.nm.ru, Спасибо что откликнулись, но к сожалению я незнаю СИ. После посещения вашего курса я понял что мне нужно, но к сожалению я несмог найти подробной информации и примеров работы с числами с плавающей точкой. Если не трудно ткините носом туда где это можно посмотреть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 14:29 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Так вы Си собираетесь изучать или нет? :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 14:34 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Можешь в принципе изучить Бейсик для МК, быстрее изучишь чем С ;)

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 14:40 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
а еще можеш длинну окружности в мм вводить, целым числом


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 13 окт 2009, 15:34 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
А в чем проблема с дробными числами?

Добавлено спустя 1 минуту 58 секунд:
Да и вообще какое это имеет значение?
Ставим геркон или щелевую оптопару на колесо, и измеряем время между сигналами прохождения это точки. Время (t) знаем, длину окружности (S) колеса знаем, V=S/t.
Все.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 19 окт 2009, 16:48 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
Всем спасибо за варианты решения задачи. К счастью разобрался, но возникла другая проблема: Преобразование кода для 7 сегментного индикатора. Понял что делается таблица преобразование, а дальше не ясно. Может кто обьяснит? (заранние благодарен)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 19 окт 2009, 16:57 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
ну если у тебя тройку надо показать, смотриш в массиве в ячейке номер 3 что записано. читаеш и отправляеш на порт к которому сегмент подключен.
а в ячейке третьей должна быть комбинация 0 и 1 записана при записи в порт которой появится не краказябла а красивая тройка на индикаторе.
(это образно, располагать массив в памяти программ обычно предлагают. чтоб озу константами не засирать)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 08:55 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
Я не могу понять алгоритм преобразования. У меня получается например значение 0xС6 тобишь 198(км/ч), что дольше делать немогу понять. Обьясните пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 09:02 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Неслабо ты разогнался на велике =)
X = 198;
п.1 Берем остаток от деления на 10:
X % 10 = 198 % 10 = 8;
п.2 Записываем число в крайний правый индикатор.
X := X / 10 = 198 / 10 = 19;

потом выполняем п.1. для числа 19...

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 10:54 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
Честно говоря это не на велик, а на мотоцикл и 199км/ч это максимальное эначение. Вы уж меня простите но я немогу понять нашел пример, сделал в итоге пишет фигню.
Посмотрите пожалуйста что я делаю не так?
.equ a = 0
.equ b = 1
.equ c = 2
.equ d = 3
.equ e = 4
.equ f = 5
.equ g = 6

code_3:
mov r16,ZH
rcall get_7
sts D0,r0

mov r16,ZL
andi r16,$f0
swap r16
rcall get_7
sts D1,r0

mov r16,ZL
andi r16,$0f
rcall get_7
sts D2,r0
ret


get_7:
ldi XL,Low(Segm<<1)
ldi XH,High(Segm<<1)
clr r17
add XL,r16
add XH,r17
lpm
ret

Segm:
Z0_1: .db 1<<a|1<<b|1<<c|1<<d|1<<e|1<<f, 1<<b|1<<c
Z2_3: .db 1<<a|1<<b|1<<d|1<<e|1<<g, 1<<a|1<<b|1<<c|1<<d|1<<g
Z4_5: .db 1<<b|1<<c|1<<f|1<<g, 1<<a|1<<c|1<<d|1<<f|1<<g
Z6_7: .db 1<<a|1<<c|1<<d|1<<e|1<<f|1<<g, 1<<a|1<<b|1<<c
Z8_9: .db 1<<a|1<<b|1<<c|1<<d|1<<e|1<<f|1<<g, 1<<a|1<<b|1<<c|1<<d|1<<f|1<<g

.dseg

D0: .byte 1
D1: .byte 1
D2: .byte 1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 12:34 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Цитата:
что я делаю не так?

Пишешь на асме, шутка :)

Если на С то я делал так
1. Объявляем массив значений порта которые нужно выдать чтобы вывести соответствующее число.
Код:
static char digits[] = {
   0b00111111, //0
   0b00000110, //1
   0b01011011, //2
   0b01001111, //3
   0b01100110, //4
   0b01101101, //5
   0b01111101, //6
   0b00000111, //7
   0b01111111, //8
   0b01101111, //9   
};


2. Процедура вывода на дисплей
Код:
void Displey(void)
{
   data=123; //число которое выводим;

   //Выводим индикатор единиц
   ind_ed;  //Процедура включения соответствующего индикатора
   PORTD=digits[data%10];  //123%10=3, следовательно digits[3], что по массиву означает 0b01001111, //3
   pause; //Процедура паузы, устраняем мерцание порядка 5 мс
   data=data/10;  //123/10=12

   //Выводим индикатор десятков
   ind_des; //Процедура включения соответствующего индикатора
   PORTD = digits[data%10];  //12%10=2
   pause;
   data=data/10;  //12/10=1

   //Выводим индикатор сотен
   ind_sot; //Процедура включения соответствующего индикатора
   PORTD = digits[data];
   pause;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 13:53 
Не в сети

Зарегистрирован: 17 фев 2009, 13:18
Сообщения: 33
Откуда: Шахты
Master, ОГРОМНОЕ ВАМ СПАСИБО! Блоголаря вашему примеру я разобрался, теперь работает правильно! :Yahoo!:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Измерение скорости (HELP)
СообщениеДобавлено: 20 окт 2009, 13:59 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Заходите еще.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO