Semáforo com PWM

Dependencies:   mbed

Committer:
OsvaldoTNeto
Date:
Mon Oct 17 04:10:26 2016 +0000
Revision:
0:8693580a586e
Sem?foro convencional de tr?s cores utilizando PWM. Placa FRDM-KL25Z

Who changed what in which revision?

UserRevisionLine numberNew contents of line
OsvaldoTNeto 0:8693580a586e 1 // -------------------------------------
OsvaldoTNeto 0:8693580a586e 2 // Desafio 01
OsvaldoTNeto 0:8693580a586e 3 // Microcontroladores 2 - 03/10/2016
OsvaldoTNeto 0:8693580a586e 4 // Semáforo de três cores com PWM
OsvaldoTNeto 0:8693580a586e 5 // -------------------------------------
OsvaldoTNeto 0:8693580a586e 6 // Aline Romanini 145157
OsvaldoTNeto 0:8693580a586e 7 // Marlon Felipe 121207
OsvaldoTNeto 0:8693580a586e 8 // Osvaldo Torezan 147558
OsvaldoTNeto 0:8693580a586e 9 // -------------------------------------
OsvaldoTNeto 0:8693580a586e 10
OsvaldoTNeto 0:8693580a586e 11 // Inclui a Library do mbed
OsvaldoTNeto 0:8693580a586e 12 #include <mbed.h>
OsvaldoTNeto 0:8693580a586e 13
OsvaldoTNeto 0:8693580a586e 14 // Define o LED 1 da placa (vermelho) como uma saída PWM na variável "vermelho"
OsvaldoTNeto 0:8693580a586e 15 PwmOut vermelho(LED1);
OsvaldoTNeto 0:8693580a586e 16 // Define o LED 2 da placa (verde) como uma saída PWM na variável "verde"
OsvaldoTNeto 0:8693580a586e 17 PwmOut verde(LED2);
OsvaldoTNeto 0:8693580a586e 18
OsvaldoTNeto 0:8693580a586e 19 // O programa contém 3 laços infinitos (while(1)) sendo um laço para
OsvaldoTNeto 0:8693580a586e 20 // cada cor corresponde ao semáforo (verde, amarelo, vermelho)
OsvaldoTNeto 0:8693580a586e 21 //
OsvaldoTNeto 0:8693580a586e 22 // Primeiramente, o programa acende a cor verde, realizando um PWM em passos de 0.1
OsvaldoTNeto 0:8693580a586e 23 // de 0.0 até 1.0 apagando assim gradativamente a cor verde. Ao apagar completamente
OsvaldoTNeto 0:8693580a586e 24 // a cor verde (assume o valor 1.0), o programa realiza um 'break' no laço infinito
OsvaldoTNeto 0:8693580a586e 25 // correspondente, e aciona a próxima cor.
OsvaldoTNeto 0:8693580a586e 26 //
OsvaldoTNeto 0:8693580a586e 27 // Logo após a cor verde ser apagada, o programa acende as cores verde e vermelho juntas
OsvaldoTNeto 0:8693580a586e 28 // para formar a cor amarela. Com o laço infinito e o PWM simultâneo, a cor laranja
OsvaldoTNeto 0:8693580a586e 29 // é gradativamente apagada.
OsvaldoTNeto 0:8693580a586e 30 //
OsvaldoTNeto 0:8693580a586e 31 // Por fim, no último laço infinito, o programa acende a luz vermelha e gradativamente
OsvaldoTNeto 0:8693580a586e 32 // através do PWM, apaga a cor vermelha, retornando ao verde e assim sucessivamente
OsvaldoTNeto 0:8693580a586e 33
OsvaldoTNeto 0:8693580a586e 34 // Inicio do programa (função principal 'main')
OsvaldoTNeto 0:8693580a586e 35 int main()
OsvaldoTNeto 0:8693580a586e 36 {
OsvaldoTNeto 0:8693580a586e 37 // Laço infinito principal
OsvaldoTNeto 0:8693580a586e 38 while (1)
OsvaldoTNeto 0:8693580a586e 39 {
OsvaldoTNeto 0:8693580a586e 40 // Apaga a cor verde
OsvaldoTNeto 0:8693580a586e 41 verde = 1.0;
OsvaldoTNeto 0:8693580a586e 42 // Apaga a cor vermelha
OsvaldoTNeto 0:8693580a586e 43 vermelho = 1.0;
OsvaldoTNeto 0:8693580a586e 44
OsvaldoTNeto 0:8693580a586e 45 // Acende a cor verde
OsvaldoTNeto 0:8693580a586e 46 verde = 0.0;
OsvaldoTNeto 0:8693580a586e 47
OsvaldoTNeto 0:8693580a586e 48 // Laço infinito da cor verde
OsvaldoTNeto 0:8693580a586e 49 while (1)
OsvaldoTNeto 0:8693580a586e 50 {
OsvaldoTNeto 0:8693580a586e 51 // Incrementa a cor verde gradativamente até apagar
OsvaldoTNeto 0:8693580a586e 52 verde = verde + 0.1;
OsvaldoTNeto 0:8693580a586e 53 // Espera 100ms
OsvaldoTNeto 0:8693580a586e 54 wait(0.1);
OsvaldoTNeto 0:8693580a586e 55 if (verde == 1.0)
OsvaldoTNeto 0:8693580a586e 56 {
OsvaldoTNeto 0:8693580a586e 57 // Caso a cor verde esteja totalmente apagada, o programa redefine os valores para a cor
OsvaldoTNeto 0:8693580a586e 58 // verde e vermelha como apagados e sai do laço infinito da cor verde
OsvaldoTNeto 0:8693580a586e 59 verde = 1.0;
OsvaldoTNeto 0:8693580a586e 60 vermelho = 1.0;
OsvaldoTNeto 0:8693580a586e 61 break;
OsvaldoTNeto 0:8693580a586e 62 }
OsvaldoTNeto 0:8693580a586e 63 }
OsvaldoTNeto 0:8693580a586e 64
OsvaldoTNeto 0:8693580a586e 65 // Acende o led verde
OsvaldoTNeto 0:8693580a586e 66 verde = 0.0;
OsvaldoTNeto 0:8693580a586e 67 // Acende o led vermelho
OsvaldoTNeto 0:8693580a586e 68 vermelho = 0.0;
OsvaldoTNeto 0:8693580a586e 69
OsvaldoTNeto 0:8693580a586e 70 // Laço infinito da cor amarela (verde + vermelho)
OsvaldoTNeto 0:8693580a586e 71 while (1)
OsvaldoTNeto 0:8693580a586e 72 {
OsvaldoTNeto 0:8693580a586e 73 // Incrementa as cores verde e vermelho gradativamente até apagar
OsvaldoTNeto 0:8693580a586e 74 verde = verde + 0.1;
OsvaldoTNeto 0:8693580a586e 75 vermelho = vermelho + 0.1;
OsvaldoTNeto 0:8693580a586e 76 // Espera 100ms
OsvaldoTNeto 0:8693580a586e 77 wait(0.1);
OsvaldoTNeto 0:8693580a586e 78 if (verde == 1.0)
OsvaldoTNeto 0:8693580a586e 79 {
OsvaldoTNeto 0:8693580a586e 80 // Caso a cor verde esteja totalmente apagada, o programa redefine os valores para a cor
OsvaldoTNeto 0:8693580a586e 81 // verde e vermelha como apagados e sai do laço infinito da cor verde
OsvaldoTNeto 0:8693580a586e 82 verde = 1.0;
OsvaldoTNeto 0:8693580a586e 83 vermelho = 1.0;
OsvaldoTNeto 0:8693580a586e 84 break;
OsvaldoTNeto 0:8693580a586e 85 }
OsvaldoTNeto 0:8693580a586e 86 }
OsvaldoTNeto 0:8693580a586e 87
OsvaldoTNeto 0:8693580a586e 88 // Acende o led vermelho
OsvaldoTNeto 0:8693580a586e 89 vermelho = 0.0;
OsvaldoTNeto 0:8693580a586e 90
OsvaldoTNeto 0:8693580a586e 91 // Laço infinito da cor vermelha
OsvaldoTNeto 0:8693580a586e 92 while (1)
OsvaldoTNeto 0:8693580a586e 93 {
OsvaldoTNeto 0:8693580a586e 94 // Incrementa a cor vermelho gradativamente até apagar
OsvaldoTNeto 0:8693580a586e 95 vermelho = vermelho + 0.1;
OsvaldoTNeto 0:8693580a586e 96 // Espera 100ms
OsvaldoTNeto 0:8693580a586e 97 wait(0.1);
OsvaldoTNeto 0:8693580a586e 98 if (vermelho == 1.0)
OsvaldoTNeto 0:8693580a586e 99 {
OsvaldoTNeto 0:8693580a586e 100 // Caso a cor vermelha esteja totalmente apagada, o programa redefine os valores para a cor
OsvaldoTNeto 0:8693580a586e 101 // verde e vermelha como apagados e sai do laço infinito da cor vermelha
OsvaldoTNeto 0:8693580a586e 102 verde =1.0;
OsvaldoTNeto 0:8693580a586e 103 vermelho=1.0;
OsvaldoTNeto 0:8693580a586e 104 break;
OsvaldoTNeto 0:8693580a586e 105 }
OsvaldoTNeto 0:8693580a586e 106 }
OsvaldoTNeto 0:8693580a586e 107
OsvaldoTNeto 0:8693580a586e 108 }
OsvaldoTNeto 0:8693580a586e 109
OsvaldoTNeto 0:8693580a586e 110 }