Osvaldo Neto
/
Desafio-01
Semáforo com PWM
Diff: main.cpp
- Revision:
- 0:8693580a586e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 17 04:10:26 2016 +0000 @@ -0,0 +1,110 @@ +// ------------------------------------- +// Desafio 01 +// Microcontroladores 2 - 03/10/2016 +// Semáforo de três cores com PWM +// ------------------------------------- +// Aline Romanini 145157 +// Marlon Felipe 121207 +// Osvaldo Torezan 147558 +// ------------------------------------- + +// Inclui a Library do mbed +#include <mbed.h> + +// Define o LED 1 da placa (vermelho) como uma saída PWM na variável "vermelho" +PwmOut vermelho(LED1); +// Define o LED 2 da placa (verde) como uma saída PWM na variável "verde" +PwmOut verde(LED2); + +// O programa contém 3 laços infinitos (while(1)) sendo um laço para +// cada cor corresponde ao semáforo (verde, amarelo, vermelho) +// +// Primeiramente, o programa acende a cor verde, realizando um PWM em passos de 0.1 +// de 0.0 até 1.0 apagando assim gradativamente a cor verde. Ao apagar completamente +// a cor verde (assume o valor 1.0), o programa realiza um 'break' no laço infinito +// correspondente, e aciona a próxima cor. +// +// Logo após a cor verde ser apagada, o programa acende as cores verde e vermelho juntas +// para formar a cor amarela. Com o laço infinito e o PWM simultâneo, a cor laranja +// é gradativamente apagada. +// +// Por fim, no último laço infinito, o programa acende a luz vermelha e gradativamente +// através do PWM, apaga a cor vermelha, retornando ao verde e assim sucessivamente + +// Inicio do programa (função principal 'main') +int main() +{ + // Laço infinito principal + while (1) + { + // Apaga a cor verde + verde = 1.0; + // Apaga a cor vermelha + vermelho = 1.0; + + // Acende a cor verde + verde = 0.0; + + // Laço infinito da cor verde + while (1) + { + // Incrementa a cor verde gradativamente até apagar + verde = verde + 0.1; + // Espera 100ms + wait(0.1); + if (verde == 1.0) + { + // Caso a cor verde esteja totalmente apagada, o programa redefine os valores para a cor + // verde e vermelha como apagados e sai do laço infinito da cor verde + verde = 1.0; + vermelho = 1.0; + break; + } + } + + // Acende o led verde + verde = 0.0; + // Acende o led vermelho + vermelho = 0.0; + + // Laço infinito da cor amarela (verde + vermelho) + while (1) + { + // Incrementa as cores verde e vermelho gradativamente até apagar + verde = verde + 0.1; + vermelho = vermelho + 0.1; + // Espera 100ms + wait(0.1); + if (verde == 1.0) + { + // Caso a cor verde esteja totalmente apagada, o programa redefine os valores para a cor + // verde e vermelha como apagados e sai do laço infinito da cor verde + verde = 1.0; + vermelho = 1.0; + break; + } + } + + // Acende o led vermelho + vermelho = 0.0; + + // Laço infinito da cor vermelha + while (1) + { + // Incrementa a cor vermelho gradativamente até apagar + vermelho = vermelho + 0.1; + // Espera 100ms + wait(0.1); + if (vermelho == 1.0) + { + // Caso a cor vermelha esteja totalmente apagada, o programa redefine os valores para a cor + // verde e vermelha como apagados e sai do laço infinito da cor vermelha + verde =1.0; + vermelho=1.0; + break; + } + } + + } + +} \ No newline at end of file