флаг = 0;
время_старта = 0;
по_таймеру() // например, каждые 100 мс
{
опросить_считыватель();
if (карточка_есть)
{
if (флаг == 0) // карточку поднесли
{
флаг = 1;
время_старта = текущее_время();
}
}
else
{
if (флаг == 1) // карточку убрали
{
флаг = 0;
if (текущее_время() - время_старта < 5сек)
{
делать_одно();
}
else
{
делать_другое();
}
}
}
}