
Semáforo com PWM
main.cpp@0:8693580a586e, 2016-10-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |