Reloader Siap. Bulat = naik lifter. Kotak = turun Lifter. Slider otomatis. Silang = pneumatik.

Dependencies:   Motor mbed millis

Committer:
gustavaditya
Date:
Sun Jun 11 22:22:03 2017 +0000
Revision:
0:e708f9673603
Child:
1:26fbc9316523
reloader;

Who changed what in which revision?

UserRevisionLine numberNew 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 }