Reloader Siap. Bulat = naik lifter. Kotak = turun Lifter. Slider otomatis. Silang = pneumatik.
Dependencies: Motor mbed millis
main.cpp@0:e708f9673603, 2017-06-11 (annotated)
- Committer:
- gustavaditya
- Date:
- Sun Jun 11 22:22:03 2017 +0000
- Revision:
- 0:e708f9673603
- Child:
- 1:26fbc9316523
reloader;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gustavaditya | 0:e708f9673603 | 1 | #include "Motor.h" |
gustavaditya | 0:e708f9673603 | 2 | #include "millis.h" |
gustavaditya | 0:e708f9673603 | 3 | #include "mbed.h" |
gustavaditya | 0:e708f9673603 | 4 | #include "JoystickPS3.h" |
gustavaditya | 0:e708f9673603 | 5 | |
gustavaditya | 0:e708f9673603 | 6 | bool isReload = false; |
gustavaditya | 0:e708f9673603 | 7 | bool ReloadOn = false; |
gustavaditya | 0:e708f9673603 | 8 | bool flag_Pneu = false; |
gustavaditya | 0:e708f9673603 | 9 | bool readySlideFromLeft = false; |
gustavaditya | 0:e708f9673603 | 10 | bool readySlideFromMiddle = false; |
gustavaditya | 0:e708f9673603 | 11 | bool getBack = false; |
gustavaditya | 0:e708f9673603 | 12 | bool isUp = false, isDown = false, sliderOn = false; |
gustavaditya | 0:e708f9673603 | 13 | bool ready = true; |
gustavaditya | 0:e708f9673603 | 14 | bool init_slider = true; |
gustavaditya | 0:e708f9673603 | 15 | |
gustavaditya | 0:e708f9673603 | 16 | static volatile uint32_t previousMillis3 = 0; // Pneumatik |
gustavaditya | 0:e708f9673603 | 17 | static volatile uint32_t previousMillis6 = 0; // pneu |
gustavaditya | 0:e708f9673603 | 18 | |
gustavaditya | 0:e708f9673603 | 19 | int caseJoystick, case_joy; |
gustavaditya | 0:e708f9673603 | 20 | |
gustavaditya | 0:e708f9673603 | 21 | float lempar = -0.6, balik = 0.6; |
gustavaditya | 0:e708f9673603 | 22 | |
gustavaditya | 0:e708f9673603 | 23 | DigitalOut pneumatik(PA_4, PullUp); |
gustavaditya | 0:e708f9673603 | 24 | DigitalIn limitAtasLifter(PB_3, PullUp); // Vertikal Atas: Lifter |
gustavaditya | 0:e708f9673603 | 25 | DigitalIn limitAtasSlider(PB_2, PullUp); // Vertikal Atas: Saucer |
gustavaditya | 0:e708f9673603 | 26 | DigitalIn limitBawah(PB_10, PullUp); // Vertikal Bawah |
gustavaditya | 0:e708f9673603 | 27 | DigitalIn limitKiri(PA_5, PullUp); // Horizontal Kiri |
gustavaditya | 0:e708f9673603 | 28 | DigitalIn limitTengah(PC_9, PullUp);// Horizontal Tengah |
gustavaditya | 0:e708f9673603 | 29 | DigitalIn limitKanan(PC_8, PullUp); // Horizontal Kanan (Frisbee keluar) |
gustavaditya | 0:e708f9673603 | 30 | |
gustavaditya | 0:e708f9673603 | 31 | Motor lifter(PA_8, PC_1, PC_2); // pwm, fwd, rev |
gustavaditya | 0:e708f9673603 | 32 | Motor slider(PA_10, PC_3, PC_0); |
gustavaditya | 0:e708f9673603 | 33 | |
gustavaditya | 0:e708f9673603 | 34 | /* Inisialisasi Pin TX-RX Joystik dan PC */ |
gustavaditya | 0:e708f9673603 | 35 | joysticknucleo joystick(PA_0,PA_1); |
gustavaditya | 0:e708f9673603 | 36 | Serial pc(USBTX,USBRX); |
gustavaditya | 0:e708f9673603 | 37 | |
gustavaditya | 0:e708f9673603 | 38 | int case_joystick() |
gustavaditya | 0:e708f9673603 | 39 | { |
gustavaditya | 0:e708f9673603 | 40 | if (joystick.silang_click){ |
gustavaditya | 0:e708f9673603 | 41 | // Pnemuatik ON |
gustavaditya | 0:e708f9673603 | 42 | caseJoystick = 1; |
gustavaditya | 0:e708f9673603 | 43 | } |
gustavaditya | 0:e708f9673603 | 44 | else if ((joystick.lingkaran_click)&&(!joystick.kotak_click)) { |
gustavaditya | 0:e708f9673603 | 45 | // Lifter Up |
gustavaditya | 0:e708f9673603 | 46 | caseJoystick = 2; |
gustavaditya | 0:e708f9673603 | 47 | } |
gustavaditya | 0:e708f9673603 | 48 | else if ((joystick.kotak_click)&&(!joystick.lingkaran_click)) { |
gustavaditya | 0:e708f9673603 | 49 | // Lifter Down |
gustavaditya | 0:e708f9673603 | 50 | caseJoystick = 3; |
gustavaditya | 0:e708f9673603 | 51 | } |
gustavaditya | 0:e708f9673603 | 52 | |
gustavaditya | 0:e708f9673603 | 53 | return caseJoystick; |
gustavaditya | 0:e708f9673603 | 54 | } |
gustavaditya | 0:e708f9673603 | 55 | |
gustavaditya | 0:e708f9673603 | 56 | void aktuator() |
gustavaditya | 0:e708f9673603 | 57 | { |
gustavaditya | 0:e708f9673603 | 58 | switch (case_joy) { |
gustavaditya | 0:e708f9673603 | 59 | case (1): |
gustavaditya | 0:e708f9673603 | 60 | // Pneumatik |
gustavaditya | 0:e708f9673603 | 61 | if (ready) |
gustavaditya | 0:e708f9673603 | 62 | { |
gustavaditya | 0:e708f9673603 | 63 | pneumatik = 0; |
gustavaditya | 0:e708f9673603 | 64 | previousMillis3 = millis(); |
gustavaditya | 0:e708f9673603 | 65 | flag_Pneu = true; |
gustavaditya | 0:e708f9673603 | 66 | ready = false; |
gustavaditya | 0:e708f9673603 | 67 | previousMillis6 = millis(); |
gustavaditya | 0:e708f9673603 | 68 | } |
gustavaditya | 0:e708f9673603 | 69 | break; |
gustavaditya | 0:e708f9673603 | 70 | case (2): |
gustavaditya | 0:e708f9673603 | 71 | // Lifter Up |
gustavaditya | 0:e708f9673603 | 72 | ReloadOn = !ReloadOn; |
gustavaditya | 0:e708f9673603 | 73 | isUp = true; |
gustavaditya | 0:e708f9673603 | 74 | isDown = false; |
gustavaditya | 0:e708f9673603 | 75 | break; |
gustavaditya | 0:e708f9673603 | 76 | case (3): |
gustavaditya | 0:e708f9673603 | 77 | // Lifter Down |
gustavaditya | 0:e708f9673603 | 78 | ReloadOn = !ReloadOn; |
gustavaditya | 0:e708f9673603 | 79 | isUp = false; |
gustavaditya | 0:e708f9673603 | 80 | isDown = true; |
gustavaditya | 0:e708f9673603 | 81 | break; |
gustavaditya | 0:e708f9673603 | 82 | } |
gustavaditya | 0:e708f9673603 | 83 | } |
gustavaditya | 0:e708f9673603 | 84 | |
gustavaditya | 0:e708f9673603 | 85 | void reloader() |
gustavaditya | 0:e708f9673603 | 86 | { |
gustavaditya | 0:e708f9673603 | 87 | if(ReloadOn) |
gustavaditya | 0:e708f9673603 | 88 | { |
gustavaditya | 0:e708f9673603 | 89 | if (isUp && !isDown && !sliderOn) |
gustavaditya | 0:e708f9673603 | 90 | { |
gustavaditya | 0:e708f9673603 | 91 | lifter.speed(1.0); |
gustavaditya | 0:e708f9673603 | 92 | if(!limitAtasSlider) |
gustavaditya | 0:e708f9673603 | 93 | { |
gustavaditya | 0:e708f9673603 | 94 | sliderOn = true; |
gustavaditya | 0:e708f9673603 | 95 | isUp = false; |
gustavaditya | 0:e708f9673603 | 96 | isDown = false; |
gustavaditya | 0:e708f9673603 | 97 | readySlideFromLeft = true; |
gustavaditya | 0:e708f9673603 | 98 | } |
gustavaditya | 0:e708f9673603 | 99 | |
gustavaditya | 0:e708f9673603 | 100 | if(!limitAtasLifter) |
gustavaditya | 0:e708f9673603 | 101 | { |
gustavaditya | 0:e708f9673603 | 102 | isUp = false; |
gustavaditya | 0:e708f9673603 | 103 | sliderOn = false; |
gustavaditya | 0:e708f9673603 | 104 | isDown = true; |
gustavaditya | 0:e708f9673603 | 105 | } |
gustavaditya | 0:e708f9673603 | 106 | } |
gustavaditya | 0:e708f9673603 | 107 | |
gustavaditya | 0:e708f9673603 | 108 | if (!isUp && !isDown && sliderOn) |
gustavaditya | 0:e708f9673603 | 109 | { |
gustavaditya | 0:e708f9673603 | 110 | if (readySlideFromLeft) |
gustavaditya | 0:e708f9673603 | 111 | { |
gustavaditya | 0:e708f9673603 | 112 | slider.speed(lempar); |
gustavaditya | 0:e708f9673603 | 113 | if (!limitTengah) |
gustavaditya | 0:e708f9673603 | 114 | { |
gustavaditya | 0:e708f9673603 | 115 | readySlideFromLeft = false; |
gustavaditya | 0:e708f9673603 | 116 | slider.brake(1); |
gustavaditya | 0:e708f9673603 | 117 | } |
gustavaditya | 0:e708f9673603 | 118 | } |
gustavaditya | 0:e708f9673603 | 119 | else if (readySlideFromMiddle) |
gustavaditya | 0:e708f9673603 | 120 | { |
gustavaditya | 0:e708f9673603 | 121 | slider.speed(lempar); |
gustavaditya | 0:e708f9673603 | 122 | if (!limitKanan) |
gustavaditya | 0:e708f9673603 | 123 | { |
gustavaditya | 0:e708f9673603 | 124 | readySlideFromMiddle = false; |
gustavaditya | 0:e708f9673603 | 125 | getBack = true; |
gustavaditya | 0:e708f9673603 | 126 | slider.brake(1); |
gustavaditya | 0:e708f9673603 | 127 | } |
gustavaditya | 0:e708f9673603 | 128 | } |
gustavaditya | 0:e708f9673603 | 129 | else if (getBack) |
gustavaditya | 0:e708f9673603 | 130 | { |
gustavaditya | 0:e708f9673603 | 131 | slider.speed(balik); |
gustavaditya | 0:e708f9673603 | 132 | if (!limitKiri) |
gustavaditya | 0:e708f9673603 | 133 | { |
gustavaditya | 0:e708f9673603 | 134 | readySlideFromLeft = true; |
gustavaditya | 0:e708f9673603 | 135 | sliderOn = false; |
gustavaditya | 0:e708f9673603 | 136 | isUp = true; |
gustavaditya | 0:e708f9673603 | 137 | isDown = false; |
gustavaditya | 0:e708f9673603 | 138 | getBack = false; |
gustavaditya | 0:e708f9673603 | 139 | slider.brake(1); |
gustavaditya | 0:e708f9673603 | 140 | } |
gustavaditya | 0:e708f9673603 | 141 | } |
gustavaditya | 0:e708f9673603 | 142 | else |
gustavaditya | 0:e708f9673603 | 143 | { slider.brake(1);} |
gustavaditya | 0:e708f9673603 | 144 | } |
gustavaditya | 0:e708f9673603 | 145 | |
gustavaditya | 0:e708f9673603 | 146 | if (!isUp && isDown && !sliderOn) |
gustavaditya | 0:e708f9673603 | 147 | { |
gustavaditya | 0:e708f9673603 | 148 | lifter.speed(-1.0); |
gustavaditya | 0:e708f9673603 | 149 | if(!limitBawah) |
gustavaditya | 0:e708f9673603 | 150 | { |
gustavaditya | 0:e708f9673603 | 151 | ReloadOn = !ReloadOn; |
gustavaditya | 0:e708f9673603 | 152 | lifter.brake(1); |
gustavaditya | 0:e708f9673603 | 153 | } |
gustavaditya | 0:e708f9673603 | 154 | } |
gustavaditya | 0:e708f9673603 | 155 | } |
gustavaditya | 0:e708f9673603 | 156 | else |
gustavaditya | 0:e708f9673603 | 157 | { |
gustavaditya | 0:e708f9673603 | 158 | lifter.brake(1); |
gustavaditya | 0:e708f9673603 | 159 | } |
gustavaditya | 0:e708f9673603 | 160 | } |
gustavaditya | 0:e708f9673603 | 161 | |
gustavaditya | 0:e708f9673603 | 162 | int main(void) |
gustavaditya | 0:e708f9673603 | 163 | { |
gustavaditya | 0:e708f9673603 | 164 | joystick.setup(); |
gustavaditya | 0:e708f9673603 | 165 | pc.baud(115200); |
gustavaditya | 0:e708f9673603 | 166 | wait_ms(1000); |
gustavaditya | 0:e708f9673603 | 167 | /*while (init_slider) |
gustavaditya | 0:e708f9673603 | 168 | { |
gustavaditya | 0:e708f9673603 | 169 | slider.speed(balik); |
gustavaditya | 0:e708f9673603 | 170 | if (!limitKiri) |
gustavaditya | 0:e708f9673603 | 171 | { |
gustavaditya | 0:e708f9673603 | 172 | readySlideFromLeft = true; |
gustavaditya | 0:e708f9673603 | 173 | slider.brake(1); |
gustavaditya | 0:e708f9673603 | 174 | init_slider = false; |
gustavaditya | 0:e708f9673603 | 175 | } |
gustavaditya | 0:e708f9673603 | 176 | }*/ |
gustavaditya | 0:e708f9673603 | 177 | startMillis(); |
gustavaditya | 0:e708f9673603 | 178 | while(1) |
gustavaditya | 0:e708f9673603 | 179 | { |
gustavaditya | 0:e708f9673603 | 180 | //COBA ROTASI |
gustavaditya | 0:e708f9673603 | 181 | /*joystick.idle(); |
gustavaditya | 0:e708f9673603 | 182 | if(joystick.readable()) |
gustavaditya | 0:e708f9673603 | 183 | { |
gustavaditya | 0:e708f9673603 | 184 | // Panggil fungsi pembacaan joystik |
gustavaditya | 0:e708f9673603 | 185 | joystick.baca_data(); |
gustavaditya | 0:e708f9673603 | 186 | // Panggil fungsi pengolahan data joystik |
gustavaditya | 0:e708f9673603 | 187 | joystick.olah_data(); |
gustavaditya | 0:e708f9673603 | 188 | // Masuk ke case joystick |
gustavaditya | 0:e708f9673603 | 189 | case_joy = case_joystick(); |
gustavaditya | 0:e708f9673603 | 190 | aktuator(); |
gustavaditya | 0:e708f9673603 | 191 | reloader(); |
gustavaditya | 0:e708f9673603 | 192 | |
gustavaditya | 0:e708f9673603 | 193 | if ((millis()-previousMillis3 >= 230)&&(flag_Pneu)){ |
gustavaditya | 0:e708f9673603 | 194 | pneumatik = 1; |
gustavaditya | 0:e708f9673603 | 195 | flag_Pneu = false; |
gustavaditya | 0:e708f9673603 | 196 | ready = true; |
gustavaditya | 0:e708f9673603 | 197 | readySlideFromMiddle = true; |
gustavaditya | 0:e708f9673603 | 198 | //wait_ms(1000); |
gustavaditya | 0:e708f9673603 | 199 | } |
gustavaditya | 0:e708f9673603 | 200 | } |
gustavaditya | 0:e708f9673603 | 201 | else |
gustavaditya | 0:e708f9673603 | 202 | { |
gustavaditya | 0:e708f9673603 | 203 | joystick.idle(); |
gustavaditya | 0:e708f9673603 | 204 | }*/ |
gustavaditya | 0:e708f9673603 | 205 | if (!limitKiri) |
gustavaditya | 0:e708f9673603 | 206 | { |
gustavaditya | 0:e708f9673603 | 207 | pc.printf("limit kiri\n"); |
gustavaditya | 0:e708f9673603 | 208 | } |
gustavaditya | 0:e708f9673603 | 209 | } |
gustavaditya | 0:e708f9673603 | 210 | } |