Sim, dois estados "escuro" e "brilhante" são fáceis. Dado qualquer circuito que pisque e acenda um LED com um transistor, você adiciona um resistor nesse transistor. Então, quando o transistor estiver totalmente desligado, o resistor permitirá um brilho fraco. Eu começaria com um resistor exatamente do mesmo valor que o resistor limitador de corrente já conectado ao LED. (Todo LED precisa de um resistor limitador de corrente).
Para alguns marcadores, uma bateria independente e um temporizador 555 em cada um deles serão o hardware de marcador mais simples. (mais alguns resistores e capacitores).
O sistema geral é mais simples se você puder sincronizar os LEDs: ligue todos os marcadores no início do ciclo, desligue um marcador de cada vez até que todos estejam desligados, ligue-os novamente e inicie o ciclo novamente. A quantidade de energia necessária para manter um grupo de LEDs piscando por algumas horas normalmente pesa muito menos na forma de uma ou duas baterias centrais, em vez de uma bateria por LED. (Isso requer um IC comparador em cada LED ou alguns registros de turno ou um Arduino emulando esses registros de turno em algum local central). (Isso requer muitos fios que passam de um marcador para o próximo ou de cada marcador para algum ponto central - para que não seja possível para o seu aplicativo.)
Isso torna o seu software de reconhecimento de visão muito mais simples se o PC puder controlar diretamente os LEDs. Quando o PC estiver procurando pelo LED_5, ele poderá desligar e ligar o LED_5 e ter certeza de que o LED que piscou deve ser o LED_5. Talvez usando algo como um conversor de porta paralela de USB para 8 bits , que (com 8 resistores, um por LED) pode controlar diretamente 8 LEDs ou (com 4 resistores, um por coluna) uma matriz 4x4 de 16 LEDs. (Isso requer ainda um outro fio, um cabo USB do PC para o conversor, mas não requer qualquer baterias ou transistores ou chips adicionais - esta pode ser a mais simples para um programador não-eletrônica cara para começar a trabalhar).