Комментарии 67
НЛО прилетело и опубликовало эту надпись здесь
Я думал, что после упоминания белки это очевидно :) Исправил текст, чтобы стало понятнее.
Только прочитал заголовок — сразу подумал про компьютерную мышь. И еще мысли в голове закрутились: это что программа для компьютера, чтобы мерить расстояние пройденное мышью? Но открыв пост был приятно удивлен. :-)
Лучше показывать фотки кошки, или каких-то политических деятелей или актеров. Выявить пристрастия каждого питомца.
Почему лучше? Одно другому не мешает, провести аутсорс исследования, продать Британским ученым, заработать.
Профит!
Надо подключать генератор и например заряжать мобильный :)
Фтопку мобильный! :) А вот обеспечить само устройство резервным питанием как раз возможно.
Ничуть, мышь даже не заметит нагрузки от подобного микроэлектродвигателя:
image
Он замечает даже нагрузку от маленького магнитика, пришлось балансировать. Хотя если делать колесо с нуля, сделав подвижную ось, то может быть что-то и получилось бы.
Ничо ничо, пусть мышцу качает.

У меня братан когда катался в ходунках (такая каталка на колесика куда лялку ставят и она вися в спец трусах бегает по полу) так он стал гонять как ракета, стало сыкотно, что перевернется нахрен. Ну взяли ему балласту повесили 10кг. Поначалу у него был баттхерт, потом придрочился и стал гонять как прежде.
Для передачи данных я за основу взял самый распространённый протокол пультов ДУ — RC-5, для которого у меня уже был код как для приёмника, так и для передатчика (командую телевизором/ресивером с компа), он передаёт по четыре байта данных.

А можно на код взглянуть? (на чём пишете, кстати?) Интересует передатчик — тоже хотел ИК передатчик спаять, но еще не определился с контроллером: TINY25 или MEGA48. Для чего передатчик, говорить не буду — вдруг не получится. ;)
Можно :) Пишу на Си. Передатчик — обычный ИК-светодиод.

Вот код для передачи обычного RC-5:

// Макросы для включения/выключения светодиода
#define IR_ON set_bit(PORTD, 4)
#define IR_OFF unset_bit(PORTD, 4)

// Макрос для мигания светодиода с несущей частотой примерно в 36кГц
#define SEND_36KHz { IR_ON; _delay_us(14); IR_OFF; _delay_us(14); }

void send_rc5(uint32_t data)
{
	int pos;
	// Включение таймера для отсчёта времени. TCNT1 - регистр таймера.
	set_bit(TCCR1B, CS12);

	// Инициализация
	TCNT1 = 0;		
	while (TCNT1 < 0x125)
		SEND_36KHz;
	TCNT1 = 0;		
	while (TCNT1 < 0x8D); 
	TCNT1 = 0;		
	while (TCNT1 < 0x15)
		SEND_36KHz;
	for (pos = 0; pos < 32; pos++) // Последовательно передаём 32 бита
	{
		TCNT1 = 0;
		if (data & (1UL << pos))
		{
			while (TCNT1 < 0x33);
		} else {
			while (TCNT1 < 0x0F);
		}
		TCNT1 = 0;		
		while (TCNT1 < 0x15)
			SEND_36KHz;
	}
}

Я тут как раз хочу освоить микроконтроллер (MSP430), до этого дел с ними не имел. И задумался вот над чем: везде особая фишка — писать на Ц (и даже иногда на Ц++). Однако глядя на примеры кода, я никак не могу отделаться от мысли, что ассемблер здесь ничем не хуже. В том смысле что удобству привычного Ц-синтаксиса просто негде развернуться: так или иначе приходится возиться с битовыми операциями, простейшими циклами и сравнениями. Разве что ветвления немного нагляднее… Как вы считаете?
Для железа завсегда начинать лучше с нижнего уровня. Когда архитектурой проникнитесь, для скорости можно хоть на си, хоть на бейсике писать с высокой эффективностью.
Я считаю, что Си — это «мультиплатформенный ассемблер»: очень низкий уровень и возможность портируемости. И Си-синтаксис там очень даже к месту.

Предчувствую холивар…
Я не оспариваю достоинства Ц, которые мне прекрасно известны. Я оспариваю их применимость в данном случае.
Чего такого особо переносимого дает С в коменте чуть выше? Там кругом узкоспециальные константы. Будет другой процессор — будут другие не только константы, но и способ выполнения тех же операций. Если попытаться перенести логику на другой микроконтроллер — от вышеприведенного Ц-кода останутся только отдаленные воспоминания в названиях некоторых функций. А вводить более высокий уровень абстракции — означает иметь существенный оверхед по количеству кода, что весьма критично в микроконтроллерах.
Единственное, что всякие while и if писаться будут одинаково, без всяких JNZ, JNC и т.п. мнемоник… Но использование всего этого никак не отменяет подробного изучения архитектуры микроконтроллера, с использованием специфичных констант. Выигрыш есть, но на мой взгляд — ничтожный, потому и задал вопрос.
На счёт оверхеда не соглашусь. Если грамотно писать код и настраивать компилятор, то итоговая прошивка мало будет отличаться от ассемблерной. Читаемость же кода повышается в разы.
Всё это так, пряморукость подразумевается по умолчанию. Но высокий уровень абстракции неизбежно увеличивает количество кода по сравнению с прямой работой. А в случае прямой работы с оборудованием преимущество Ц перед АСМ уменьшается (но не обнуляется).
Другое дело, если девайс реализован одинаково на разных микроконтроллерах — тут читаемость (как результат — легкость поддержки и развития) однозначно перевешивает все недостатки. Но мне что-то в голову не приходит случай, когда один и тот же по логике работы девайс зачем-то реализуется на двух разных микроконтроллерах. Это ведь не андроид и айос, пользователь разницы не заметит.
В общем, я делаю вывод такой: если устройство довольно простое — преимущества Ц малозначительны. Если логика довольно развитая — то важность читаемость резко возрастает, но тут легко упереться в ограничение по размеру кода. Короче, на мой взгляд, диапазон применения Ц — довольно узкий, и выбор неоднозначный.
Кажется, наш холивар закончился.
У нас в офисе живут 2 дэгу.
ru.wikipedia.org/wiki/Дегу
А в новогодние праздники еще пополнение в виде 3 штук родилось, может их параметры еще измерите? :)
Готовы отдать одного для экспериментов :)
Понятия не имею, но мы в Екатеринбурге и дегу у нас где то с конце лета-начала осени, так что точно не потомство :-)
Наших могло и в Екатеринбург занести :)
У нас уже 3 поколение :0
Хотя врядли.
а у нас 2 песчанки жили (Вайма и Ксюша), но офис-менеджер сказала, что их надо убрать… (
раньше трансляция из клетки была, но сейчас нет возможности ее поддерживать(
если кому интересно, вся история тут — peschanok.net/
У меня дома 4 дегу. Было 2, думали 2 девочки, оказалось, что один мальчик :D Теперь мама с дочкой живут, а папа с сыном. Остальных отдали в хорошие руки. У дегу есть в жизни цель. Он хочет все сгрызть. Так что он скорее всего сгрызет спидометр, как грызет полки, гамак, колесо, прутья, миски и тд.
у меня было 2 крысы в 3м классе, никто ничего не думал… было 2, а в какой-то момент стало 11 :)
Дэгу живут у директора.
Так он нас иногда пугает, что выпустит на ночь их к нам в серверную :)
Ссыкотно :)
Живой генератор энтропии, случайность значений зависит от движения мышки
А что, может получиться неплохой заменитель random.org. Только там изначально использовался радиоприемник как источник энтропии, а здесь — мышки. Предлагаю зарегить домен randomouse.org и взять слоган: «Случайные числа еще никогда не были такими теплыми и живыми!»
Не такой уж random :) Например, я уже вижу, что есть время, в которое они стабильно спят. Оно удивительно со впадает с моим временем сна… А вот в момент бега уже действительно много случайности — то они останавливаются, то снова бегут.
Надо накапливать рандомные данные в буфер, а по запросу отдавать, и все будет гуд! (:
Представляю картину: «Мыши просыпайтесь, у меня рандомные данные закончились!»
Но вообще интересно — вы можете увидеть какие то корреляции того, как мышь бегает с какими то событиями в ее жизни? Что дает ей бег?
Что дает ей бег?

Для этого лучше спросить мышку, а не автора ;)
По поводу авторского P.P.S.: почитав комменты я понял что вы здесь далеко не самый сумасшедший. (Это я в хорошем смысле слова).
Хмм… появилось коварное желание узнать: а сколько пробегает Ролик компьютерной мышки за месяц?
Практического применения 0,00001, но интерес негодует в отсутствии таких данных.
Солнечную баратею + ионистор не думали использовать для питания?
Эм, тут нет прямых солнечных лучей. Да и смысла в этом не вижу. Хотя глупо после всего этого говорить о смысле :)
Мне кажется прямые солнечные лучи и не нужны для такой нагрузки. Должно хватить и обычного света. Калькуляторам и клавиатурам же хватает. Хотя могу и ошибаться.
Как провода от посягательств грызунов защитили? У меня была крыса так она грызла все до чего могла дотянуться )))
У пинки провод спрятан в рубашку от велосипедного тросика, её стальную обмотку он не осилил :) А у Таффи колесо устроено так, что геркон и провода спрятаны за ним.
Зачем батарею? К колесу генератор, генератор к ионистору. Мышь бегает и обеспечивает питание для схемы.
Я где-то читал, что делать на плате замкнутое кольцо из общей или «питалищной» дорожки — большое зло (типа начинает работать как антенна). У вас как, не глючит девайс?
Всегда так делаю, никаких проблем не было, но я в этом деле чайник. Надо поспрашивать у шарящих людей.
Зло зло. При хорошем скачке поля в этой петле может навестить иголка которая переклинит МК. Земля вообще в идеале должна быть полигоном сплошным, без петель, а лучше прошитая насквозь с внешним слоем.
Как всё это сложно для мозга обычного программиста :) Спасибо, учту.
Ты когда землю разводишь не допускай, что ее сопротивление равно нулю. Не ноль оно, хотя близко. А раз не ноль, то может быть падение напряжения при протекании тока.

А броски тока могут быть колоссальными, причем даже там где, казалось бы, нет нифига. Ну стоит кондер на пол микрофарады, но его заряд на бесконечно малом промежутке времени = кз, а значит ток уходит в космос. Раз ток бешеный, то будет бросок земли (перекосы напряжения) все это произойдет мгновенно, в виде иголки в питании, но она может быть столь резкой, что будет быстрей чем такт МК и мк может переклинить.

То же касается и разводок реле, разрыва ее индуктивностей.

А еще прикол — реле размыкает нагрузку. На контактах проскакивает искра, помехи с искры ловит катушка реле и отправляет прямиком по мозгам контроллеру. Получается прикольный глюк. Когда схема без нагрузки радостно щелкает релешками, а когда реле что то переключает нагруженное, то все виснет нафиг. Хотя, казалось бы, связи электрической нет.
Вот из-за такого косяка с реле я очень много нервов извёл, когда лампы дневного света так включал. И ничего не помогало — ни диод в обратку реле, ни развязка оптопарой с отдельными блоками питания. Всё равно где-то пробивало.
А земляная петля была? Возможно на нее ловило. Если есть такая засада с землей, то любую искру рядом твоя схема воспримет как личное оскорбление.
Тогда я ещё платы травить не умел, всё было соплями увешано на макетке :)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.