Lucas Fontenla / Mbed 2 deprecated VidroEletrico

Dependencies:   mbed

Committer:
victorhlvsilva
Date:
Mon May 06 20:28:39 2019 +0000
Revision:
0:7e80907da2dc
Child:
1:a88dcc6beb9d
Acionamento;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
victorhlvsilva 0:7e80907da2dc 1 #include "mbed.h"
victorhlvsilva 0:7e80907da2dc 2
victorhlvsilva 0:7e80907da2dc 3 Serial pc(USBTX, USBRX);
victorhlvsilva 0:7e80907da2dc 4
victorhlvsilva 0:7e80907da2dc 5 InterruptIn botao_SW1(D2);
victorhlvsilva 0:7e80907da2dc 6 InterruptIn botao_SW2(D7);
victorhlvsilva 0:7e80907da2dc 7
victorhlvsilva 0:7e80907da2dc 8 Timer debounceSW1Fall;
victorhlvsilva 0:7e80907da2dc 9 Timer debounceSW2Fall;
victorhlvsilva 0:7e80907da2dc 10 Timer debounceSW1Rise;
victorhlvsilva 0:7e80907da2dc 11 Timer debounceSW2Rise;
victorhlvsilva 0:7e80907da2dc 12 Timer avanco;
victorhlvsilva 0:7e80907da2dc 13
victorhlvsilva 0:7e80907da2dc 14 AnalogIn Shunt(A5);
victorhlvsilva 0:7e80907da2dc 15 float Corrente;
victorhlvsilva 0:7e80907da2dc 16
victorhlvsilva 0:7e80907da2dc 17 DigitalOut saida_IN1(D10);
victorhlvsilva 0:7e80907da2dc 18 DigitalOut saida_IN2(D8);
victorhlvsilva 0:7e80907da2dc 19 DigitalOut saida_EN(D9);
victorhlvsilva 0:7e80907da2dc 20
victorhlvsilva 0:7e80907da2dc 21 bool SW1 = 1;
victorhlvsilva 0:7e80907da2dc 22 bool SW2 = 1;
victorhlvsilva 0:7e80907da2dc 23 bool IN1 = 0;
victorhlvsilva 0:7e80907da2dc 24 bool IN2 = 0;
victorhlvsilva 0:7e80907da2dc 25
victorhlvsilva 0:7e80907da2dc 26 void DSW1Fall(){
victorhlvsilva 0:7e80907da2dc 27
victorhlvsilva 0:7e80907da2dc 28 if (debounceSW1Fall.read_ms() > 200) {
victorhlvsilva 0:7e80907da2dc 29 SW1 = 0;
victorhlvsilva 0:7e80907da2dc 30 debounceSW1Fall.reset();
victorhlvsilva 0:7e80907da2dc 31 pc.printf("DSW1Fall \n\r");
victorhlvsilva 0:7e80907da2dc 32
victorhlvsilva 0:7e80907da2dc 33 avanco.start();
victorhlvsilva 0:7e80907da2dc 34 }
victorhlvsilva 0:7e80907da2dc 35 }
victorhlvsilva 0:7e80907da2dc 36
victorhlvsilva 0:7e80907da2dc 37 void DSW2Fall(){
victorhlvsilva 0:7e80907da2dc 38
victorhlvsilva 0:7e80907da2dc 39 if (debounceSW2Fall.read_ms() > 200) {
victorhlvsilva 0:7e80907da2dc 40 SW2 = 0;
victorhlvsilva 0:7e80907da2dc 41 debounceSW2Fall.reset();
victorhlvsilva 0:7e80907da2dc 42 pc.printf("DSW2Fall \n\r");
victorhlvsilva 0:7e80907da2dc 43 }
victorhlvsilva 0:7e80907da2dc 44 }
victorhlvsilva 0:7e80907da2dc 45
victorhlvsilva 0:7e80907da2dc 46 void DSW1Rise(){
victorhlvsilva 0:7e80907da2dc 47 if (debounceSW1Rise.read_ms() > 200) {
victorhlvsilva 0:7e80907da2dc 48 if(avanco.read_ms() >= 500) {
victorhlvsilva 0:7e80907da2dc 49 avanco.stop();
victorhlvsilva 0:7e80907da2dc 50 avanco.reset();
victorhlvsilva 0:7e80907da2dc 51 }
victorhlvsilva 0:7e80907da2dc 52 else if(avanco.read_ms() < 500){
victorhlvsilva 0:7e80907da2dc 53 SW1 = 1;
victorhlvsilva 0:7e80907da2dc 54 }
victorhlvsilva 0:7e80907da2dc 55 debounceSW1Rise.reset();
victorhlvsilva 0:7e80907da2dc 56 pc.printf("DSW1Rise \n\r");
victorhlvsilva 0:7e80907da2dc 57 }
victorhlvsilva 0:7e80907da2dc 58 }
victorhlvsilva 0:7e80907da2dc 59
victorhlvsilva 0:7e80907da2dc 60 void DSW2Rise(){
victorhlvsilva 0:7e80907da2dc 61 if (debounceSW2Rise.read_ms() > 200) {
victorhlvsilva 0:7e80907da2dc 62 SW2 = 1;
victorhlvsilva 0:7e80907da2dc 63 debounceSW2Rise.reset();
victorhlvsilva 0:7e80907da2dc 64 pc.printf("DSW2Rise \n\r");
victorhlvsilva 0:7e80907da2dc 65 }
victorhlvsilva 0:7e80907da2dc 66 }
victorhlvsilva 0:7e80907da2dc 67
victorhlvsilva 0:7e80907da2dc 68 int main() {
victorhlvsilva 0:7e80907da2dc 69 debounceSW1Fall.start();
victorhlvsilva 0:7e80907da2dc 70 debounceSW2Fall.start();
victorhlvsilva 0:7e80907da2dc 71 debounceSW1Rise.start();
victorhlvsilva 0:7e80907da2dc 72 debounceSW2Rise.start();
victorhlvsilva 0:7e80907da2dc 73
victorhlvsilva 0:7e80907da2dc 74 botao_SW1.rise(&DSW1Rise);
victorhlvsilva 0:7e80907da2dc 75 botao_SW1.fall(&DSW1Fall);
victorhlvsilva 0:7e80907da2dc 76 botao_SW2.rise(&DSW2Rise);
victorhlvsilva 0:7e80907da2dc 77 botao_SW2.fall(&DSW2Fall);
victorhlvsilva 0:7e80907da2dc 78
victorhlvsilva 0:7e80907da2dc 79 while(1){
victorhlvsilva 0:7e80907da2dc 80
victorhlvsilva 0:7e80907da2dc 81 Corrente = 3.3f*Shunt;
victorhlvsilva 0:7e80907da2dc 82
victorhlvsilva 0:7e80907da2dc 83 if (Corrente > 0.7f){
victorhlvsilva 0:7e80907da2dc 84 if (IN1 && !IN2){
victorhlvsilva 0:7e80907da2dc 85 saida_IN1 = IN2;
victorhlvsilva 0:7e80907da2dc 86 saida_IN2 = IN1;
victorhlvsilva 0:7e80907da2dc 87 wait_ms(250);
victorhlvsilva 0:7e80907da2dc 88 }
victorhlvsilva 0:7e80907da2dc 89 else if (IN2 && !IN1){
victorhlvsilva 0:7e80907da2dc 90 saida_IN1 = IN2;
victorhlvsilva 0:7e80907da2dc 91 saida_IN2 = IN1;
victorhlvsilva 0:7e80907da2dc 92 wait_ms(250);
victorhlvsilva 0:7e80907da2dc 93 }
victorhlvsilva 0:7e80907da2dc 94 saida_IN1 = 0;
victorhlvsilva 0:7e80907da2dc 95 saida_IN2 = 0;
victorhlvsilva 0:7e80907da2dc 96 SW1 = 1;
victorhlvsilva 0:7e80907da2dc 97 SW2 = 1;
victorhlvsilva 0:7e80907da2dc 98 wait_ms(1000);
victorhlvsilva 0:7e80907da2dc 99 }
victorhlvsilva 0:7e80907da2dc 100
victorhlvsilva 0:7e80907da2dc 101 if (SW1 == 0){
victorhlvsilva 0:7e80907da2dc 102 IN1 = 1; IN2 = 0;
victorhlvsilva 0:7e80907da2dc 103 saida_EN = 1;
victorhlvsilva 0:7e80907da2dc 104 saida_IN1 = IN1;
victorhlvsilva 0:7e80907da2dc 105 saida_IN2 = IN2;
victorhlvsilva 0:7e80907da2dc 106 wait(0.01);
victorhlvsilva 0:7e80907da2dc 107 }
victorhlvsilva 0:7e80907da2dc 108
victorhlvsilva 0:7e80907da2dc 109 else if (SW2 == 0){
victorhlvsilva 0:7e80907da2dc 110 IN1 = 0; IN2 = 1;
victorhlvsilva 0:7e80907da2dc 111 saida_EN = 1;
victorhlvsilva 0:7e80907da2dc 112 saida_IN1 = IN1;
victorhlvsilva 0:7e80907da2dc 113 saida_IN2 = IN2;
victorhlvsilva 0:7e80907da2dc 114 wait(0.01);
victorhlvsilva 0:7e80907da2dc 115 }
victorhlvsilva 0:7e80907da2dc 116 else {
victorhlvsilva 0:7e80907da2dc 117 IN1 = 0; IN2 = 0;
victorhlvsilva 0:7e80907da2dc 118 saida_EN = 0;
victorhlvsilva 0:7e80907da2dc 119 saida_IN1 = IN1;
victorhlvsilva 0:7e80907da2dc 120 saida_IN2 = IN2;
victorhlvsilva 0:7e80907da2dc 121 wait(0.01);
victorhlvsilva 0:7e80907da2dc 122 }
victorhlvsilva 0:7e80907da2dc 123 wait(0.01);
victorhlvsilva 0:7e80907da2dc 124 pc.printf("Timer: %.2f s \n\r", avanco.read());
victorhlvsilva 0:7e80907da2dc 125 }
victorhlvsilva 0:7e80907da2dc 126 }