por MOR_AL » 21 Jul 2009 17:34
Olá¡ Alesandro F Zagui.
Tem uma outra opção.
1) Usa três bytes, um para cada cor. Cada byte conterá um valor compreendido entre 0 e 32, por exemplo. Faz T = 32 e Ton variando de 0 a 32.
Para Ton = 0, corresponde a Ton / T = 0 / 32 = 0.
Para Ton = 32 corresponde a Ton / T = 32 / 32 = 1.
Com isso você terá até 33 valores de intensidade para as cores. Considero uma boa quantidade. Acho que mal dá para perceber a alteração de um valor para o seu vizinho.
2) Crie um timer com interrupção (TIMER0, por exemplo), com cerca de 30ms, e um contador de ciclos. A cada interrupção do TIMER0, um ciclo é incrementado no contador. E a cada interrupção do TIMER0, você atualiza as cores. Como? Se o contador estiver em 15, por exemplo, e o valor do R for menor, ou igual a 15, então você desliga o led R. Caso contrário, você mantém o led aceso. Faça o mesmo para as outras cores. Quando o contador de ciclos alcançar o valor 33, ele deverá ser zerado, para um novo ciclo de 0 a 32.
3) Faça a informação do seu receptor (RF, Infravermelho, etc.) acionar uma interrupção. Esta possuirá maior prioridade que a do Timer0. Ela tem que tratar a decodificação da tecla em tempo real, para não perder alguma informação da tecla.
Esta interrupção irá atualizar os bytes de cor (um dos mencionados no item 1).
MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain