Считывание данных вот с такой платки

vlkam
Offline
Зарегистрирован: 17.02.2013

 Купил вот такой комплектик на ебее

http://www.ebay.com/itm/433MHZ-2PCS-HCS301-Rolling-Code-Remotes-Control-...

Это брелки с роллинг-кодом и приемничек. С 4мя выходами по количеству кнопок на брелках.

Но помимо этого на платке есть недокументированный контакт на плате под названием data
Очень рассчитываю, что с него можно получать ID брелка.

Подключил этот контакт напрямую к цифровому входу (наверное это не очень правильно, нужен резистор "подтяжки" ?)
Читаю оттуда через digitalread и даже оттуда что то идет достаточно стабильно при нажатии на кнопку (но кстати иногда и мусор какой то проскакивает)

Есть у меня 2 вопроса - нужен ли подтягивающий резистор в данном случае

и второй вопрос - может у кого завалялся код, которым можно проанализировать, что оттуда собственно валится ?
 

ustas
Offline
Зарегистрирован: 12.03.2012

имхо, воспользоваться библиотекой IRremote, только вместо ИК-приемника будете подключать свой пин. Получите данные о том, что приходит (временное описание).

vlkam
Offline
Зарегистрирован: 17.02.2013

ustas пишет:
имхо, воспользоваться библиотекой IRremote, только вместо ИК-приемника будете подключать свой пин. Получите данные о том, что приходит (временное описание).

О... спасибо ! Похоже то, что нужно.

А то я уже полез свою читалку городить

vlkam
Offline
Зарегистрирован: 17.02.2013

 Все таки оказалось проще накарябать функцию, которая считывает данные с порта, упаковывает побитно, а потом выкидывает в ком порт. Простенькая, но может кому потребуется, оставлю тут

void scan_to_raw(){

	int  ARRAYSIZE = 2000;	
	byte raw[ARRAYSIZE];

	int cnt = 0;
	byte t1;
	byte preb;
	int y,i;

	while(cnt < ARRAYSIZE){
		// битовая упаковка
		preb = 0;
		for(y=7;y>=0;y--){
			t1 = digitalRead(40);
			delayMicroseconds(20);
			preb = preb + (t1 << y);
		}
		raw[cnt] = preb;
		cnt++;
	};

	if(cnt == ARRAYSIZE){
		Serial.println("Start");
		for(i=0;i<ARRAYSIZE;i++){
		#ifdef UNPACK_TO_BIT
			preb = raw[i];
			for(y=0;y<8;y++){
				Serial.println(preb & 1, DEC);
				preb >>= 1;
			}
		#else
			Serial.println(raw[i], DEC);
		#endif			
			
		}
		cnt++;
	};
}

 

toc
Offline
Зарегистрирован: 09.02.2013

э... Что такое "битовая упаковка"?

glaffirana
Offline
Зарегистрирован: 19.06.2013

А я стал недавно вашим постоянным читателем, соответственно не мог не оставить свой положительный отзыв! Удачи Вам большой в развитии сайта!

glaffirana
Offline
Зарегистрирован: 19.06.2013

А я стал недавно вашим постоянным читателем, соответственно не мог не оставить свой положительный отзыв! Удачи Вам большой в развитии сайта!