All streams
Search
Write a publication
Pull to refresh
459
0
Cluster @ClusterM

Пользователь

Send message
Я считаю, что Си — это «мультиплатформенный ассемблер»: очень низкий уровень и возможность портируемости. И Си-синтаксис там очень даже к месту.

Предчувствую холивар…
Вот из-за такого косяка с реле я очень много нервов извёл, когда лампы дневного света так включал. И ничего не помогало — ни диод в обратку реле, ни развязка оптопарой с отдельными блоками питания. Всё равно где-то пробивало.
Как всё это сложно для мозга обычного программиста :) Спасибо, учту.
Начинает бегать медленнее, с трудом.
Он замечает даже нагрузку от маленького магнитика, пришлось балансировать. Хотя если делать колесо с нуля, сделав подвижную ось, то может быть что-то и получилось бы.
У пинки провод спрятан в рубашку от велосипедного тросика, её стальную обмотку он не осилил :) А у Таффи колесо устроено так, что геркон и провода спрятаны за ним.
Представляю картину: «Мыши просыпайтесь, у меня рандомные данные закончились!»
Эм, тут нет прямых солнечных лучей. Да и смысла в этом не вижу. Хотя глупо после всего этого говорить о смысле :)
Всегда так делаю, никаких проблем не было, но я в этом деле чайник. Надо поспрашивать у шарящих людей.
Не такой уж random :) Например, я уже вижу, что есть время, в которое они стабильно спят. Оно удивительно со впадает с моим временем сна… А вот в момент бега уже действительно много случайности — то они останавливаются, то снова бегут.
Тяжеловато будет мышкам бегать с генератором.
Можно :) Пишу на Си. Передатчик — обычный ИК-светодиод.

Вот код для передачи обычного 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;
	}
}

Я думал, что после упоминания белки это очевидно :) Исправил текст, чтобы стало понятнее.
С фотодиодом получается интересный эффект. Солнца нифига не видно, пасмурно, но на графике чётко видно время восхода и захода солнца. Похоже, он на ИК диапазон в основном реагирует.
На практике я гораздо чаще использую управление телевизором/ресивером через ИК трансмиттер, нажимая горячие клавиши на клавиатуре компа. Например, так гораздо удобнее регулировать громкость, чем искать пульт ДУ. Пожалуй, это первое, что мне хотелось сделать :)
Что-то все зациклились на включении лампочек, будто это единственное, что можно автоматизировать дома. Это не в упрёк Вам, просто мысли вслух.
Я ни раз прокладывал у себя по дому витую пару и могу смело сказать, что нифига она не удобная. Как раз с ней и получается паутина из проводов. Тоненький шлейф гораздо легче спрятать.
Про питание думал. Если понадобится поставить что-то мощное, например панель управления с дисплеем, то лучше наверное отдельное питание сделаю.
По два прерывания на каждый бит.
У меня сейчас везде ATMEGA8A.
«большой объём» — понятие очень относительное.

Information

Rating
6,245-th
Location
Электросталь, Москва и Московская обл., Россия
Date of birth
Registered
Activity