fefetl08

Semaforo + botão

Mar 25th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.08 KB | None | 0 0
  1. const int x=20;
  2. const int y=20;
  3. const int G_Total=100;
  4. int G_A;
  5. int G_B;
  6. int poten = 0;
  7.  
  8. const int verdeA=4;
  9. const int amareloA=5;
  10. const int vermelhoA=6;
  11.  
  12. const int verdeB=11;
  13. const int amareloB=10;
  14. const int vermelhoB=9;
  15.  
  16. int contador=0;
  17. int semaforo=0;
  18. int temPont=0;
  19.  
  20. void interrupcao1(){
  21.   digitalWrite(verdeA, LOW);
  22.   digitalWrite(verdeB, LOW);
  23.   digitalWrite(amareloA, LOW);
  24.   digitalWrite(amareloB, LOW);
  25.   digitalWrite(vermelhoA, HIGH);
  26.   digitalWrite(vermelhoB, HIGH);
  27.   delay(G_B*50);
  28. }
  29.  
  30. void interrupcao2(){
  31.   digitalWrite(verdeA, LOW);
  32.   digitalWrite(verdeB, LOW);
  33.   digitalWrite(amareloA, LOW);
  34.   digitalWrite(amareloB, LOW);
  35.   digitalWrite(vermelhoA, HIGH);
  36.   digitalWrite(vermelhoB, HIGH);
  37.   delay(G_B*50);
  38. }
  39.  
  40. void setup() {
  41.   pinMode(verdeA, OUTPUT);
  42.   pinMode(amareloA, OUTPUT);
  43.   pinMode(vermelhoA, OUTPUT);
  44.   pinMode(verdeB, OUTPUT);
  45.   pinMode(amareloB, OUTPUT);
  46.   pinMode(vermelhoB, OUTPUT);
  47.   attachInterrupt(digitalPinToInterrupt(2),interrupcao1,RISING);
  48.   attachInterrupt(digitalPinToInterrupt(3),interrupcao2,RISING);
  49. }
  50.  
  51. void loop() {
  52.   G_A = 20+(46.7/1023)*analogRead(poten);
  53.   G_B = G_Total - G_A;
  54.   Serial.println(analogRead(poten));
  55.   Serial.println(G_A);
  56.   Serial.println(G_B);
  57.   switch(semaforo) {
  58.     case 0:
  59.       digitalWrite(vermelhoB, HIGH);
  60.       digitalWrite(verdeA, HIGH);
  61.       digitalWrite(vermelhoA, LOW);
  62.       digitalWrite(amareloB, LOW);
  63.       delay(G_A*50);
  64.       break;
  65.     case 1:  
  66.       digitalWrite(amareloA, HIGH);
  67.       digitalWrite(verdeA, LOW);
  68.       delay(y*50);
  69.       break;
  70.     case 2:  
  71.       digitalWrite(vermelhoA, HIGH);
  72.       digitalWrite(amareloA, LOW);
  73.       digitalWrite(vermelhoB, HIGH);
  74.       delay(x*50);
  75.       digitalWrite(verdeB, HIGH);
  76.       digitalWrite(vermelhoB, LOW);
  77.       delay(G_B*50);
  78.       break;
  79.     case 3:
  80.       digitalWrite(amareloB, HIGH);
  81.       digitalWrite(verdeB, LOW);
  82.       delay(y*50);
  83.       break;
  84.   }    
  85.  
  86.   if (contador <= 3) {
  87.     contador++;
  88.     semaforo =  contador;
  89.   }
  90.   else {
  91.     contador = 0;
  92.     semaforo= contador;    
  93.   }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment