Подключение двух считывателей с протоколом Wiegand 26 к Atmega 328

Здравствуйте.
Нужно подключить два считывателя к одной Atmega 328.
Как я поняла, работает только на пинах с прерываниями.

Спойлер
#include <Wiegand.h>

WIEGAND wg;

void setup() {
	Serial.begin(9600);  
	//  По умолчанию, считыватель подключается к пинам 2 и 3 (см. подробнее https://wiki.iarduino.ru/page/stationary-rfid-reader/)
  //  Однако для некоторых плат может потребоваться поменять номера выводов. Для этого используйте wg.begin(pinD0, pinD1), где
  //  где pinD0 - номер пина, к которому подключен провод считывателя D0, а pinD1 - провод D1.
	wg.begin();
}

void loop() {
	if(wg.available())
	{
		Serial.print(", ID = ");
		Serial.print(wg.getCode());
		Serial.print(", Type Wiegand: W");
		Serial.println(wg.getWiegandType());    
	}
}

Ну в библиотеке инициализация описана так.


void WIEGAND::begin(int pinD0, int pinD1)
{
	_lastWiegand = 0;
	_cardTempHigh = 0;
	_cardTemp = 0;
	_code = 0;
	_wiegandType = 0;
	_bitCount = 0;  
	pinMode(pinD0, INPUT);					// Set D0 pin as input
	pinMode(pinD1, INPUT);					// Set D1 pin as input
	
	attachInterrupt(digitalPinToInterrupt(pinD0), ReadD0, FALLING);  // Hardware interrupt - high to low pulse
	attachInterrupt(digitalPinToInterrupt(pinD1), ReadD1, FALLING);  // Hardware interrupt - high to low pulse
}

Никто не мешает переписать под прерывания PCINT, ну или взять МК где больше внешних прерываний (mega/leonardo/micro)

1 лайк

Надо сказать, что виганды считывателей часто имеют выход с открытым коллектором, т.е. может потребоваться подтягивающий резистор на +5В

При ОК, если что, проще организовать вызов прерывания от 2-х выходов.

Можно и без прерываний, смотря какие задачи. Либо диодным “или” собрать на одно прерывание.

На несколько ридеров есть библиотека Multi Reader Wiegand
Но я ее не тестировал.

1 лайк

Один считыватель на вход, другой на выход, будут передавать информацию по локальной сети, соответственно нужно знать какой их них информацию передал.

Несчастные детишки…

Счастливые)

Я ж говорю, если других времязатратных задач нет, можно полингом, без Ардуино функций только. Т.е., придётся писать свои драйвера. У меня работали 2 ридера таким образом.

Какая у Иринки интересная жизнь успевает и мужу мясо по французски приготовить и ребёночку сопельки утереть и к Wiegand прикоснуться, огонь одним словом )))

Здравствуйте.
Нужно получить информацию от считывателя Wiegand 26 (DO D1) и отправить полученное значение по UART. Хочу использовать ATtiny85
Код выше будет работать в тиньке? (пока еще не купила ее)

А зачем тогда покупать? чем она лучше атмеги328, на которой код ТОЧНО будет работать?
На тини даже Сериала встроенного нет.

Я сообщение выше не видела, про библиотеку
Multi Reader Wiegand
Мне нужно два считывателя к одной атмеги.
Хотела к каждому считывателю тиньки, которые по уарт будут передавать код в атмегу

проще тогда две атмеги. Тини не настолько меньше и не настолько дешевле, чтобы это имело смысл

А интернет модуль? Придётся с одной атмеги передавать во вторую по уарт, к примеру, а вторая по интернет на сервер. (то есть вторая и свои данные и данные от первой будет отсылать на сервер )Геморойно. А два интернет модуля не хочется ставить.
А если ATmega128?

Так по вашей задумке все равно придется с тинек на атмегу по уарт передавать. В чем разница?

Тинька мало места занимает, кварц внешний не нужен…такая логика была…
А про 128 что скажите?
Wiegand.h и Ethernet.h будут работать на 128 атмеге?
Или ставить две 328 и не думать?

атмеге тоже не обязателен.

ничего не скажу, не работал с ней

1 лайк

А в соседней ветке писали что при использовании UART обязателен (Питание Pro Mini от 3.7 Вольт)
Спасибо.

Так в 85 тиньке юарта вообще нету