Semáforo com PWM

Dependencies:   mbed

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