![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Custom phone app that controls cup dispenser, drink dispenser, and conveyor belt using the mbed blue tooth capabilities.
Dependencies: Motor Servo mbed
Fork of 4180_WDDDS by
Diff: main.cpp
- Revision:
- 0:5e54c5a00e68
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Apr 29 07:57:58 2017 +0000 @@ -0,0 +1,127 @@ +// Demonstrates complete use of the WDDDS systems and functionalities: +// Cup dispenser, dispensing drink 1, dispensing drink 2, and conveyor belt. +// This code: +// - dispenses a cup, moves the cup under the drink dispenser, dispenses drink 1 +// then moves cup further along treads when button 1 is pressed +// - dispenses a cup, moves the cup under the drink dispenser, dispenses drink 2 +// then moves cup further along treads when button 2 is pressed +// - 4th button is used for unjamming the cup dispenser, as it will extend the +// linear actuator further to push cups out. + +#include "mbed.h" +#include "Motor.h" +#include "Servo.h" + +Servo poker(p22); +DigitalIn stby(p25); +Motor tread(p24, p12, p11); // pwm, fwd, rev (H-bridge) +Motor pump(p26, p13, p14); // pwm, fwd, rev (H-bridge) +DigitalOut tread2(p21); // MOSFET +BusOut myled(LED1,LED2,LED3,LED4); // check for which button is pressed +Serial blue(p28,p27); // Bluetooth +float cupos = 850; +void cupdispense(); +void drink1(); +void drink2(); +void treads(float time); + +int main() +{ + poker.Enable(1500,20000); + poker.SetPosition(cupos); + wait(.2); + poker.SetPosition(cupos+10); + stby.mode(PullUp); + char bnum=0; + char bhit=0; + while(1) { + if (blue.getc()=='!') { + if (blue.getc()=='B') { //button data packet + bnum = blue.getc(); //button number + bhit = blue.getc(); //1=hit, 0=release + if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? + myled = bnum - '0'; //current button number will appear on LEDs + switch (bnum) { + case '1': //number button 1 + if (bhit=='1') { + //add hit code here + drink1(); + + } else { + //add release code here + } + break; + case '2': //number button 2 + if (bhit=='1') { + //add hit code here + drink2(); + } else { + //add release code here + } + break; + case '3': //number button 3 + if (bhit=='1') { + //add hit code here + } else { + //add release code here + } + break; + case '4': //number button 4 + if (bhit=='1') { + //add hit code here + cupdispense(); + } else { + //add release code here + } + break; + default: + break; + } + } + } + } + } +} + +void cupdispense(){ + if( cupos <2500) { + cupos += 52; + wait_ms(400); + poker.SetPosition(cupos); + cupos += 53; + poker.SetPosition(cupos); + wait_ms(100); + } +} + +void drink1(){ + // cupdispense(); + //wait(3.5); + treads(.68); + wait(.4); + pump.speed(1); + wait(2); + pump.speed(0); + wait(5); + treads(1); +} + +void drink2(){ + // cupdispense(); + //wait(3.5); + treads(.68); + wait(.4); + pump.speed(-1); + wait(2); + pump.speed(0); + wait(5); + treads(1); +} + +void treads(float time) { + tread.speed(.4); + tread2 = 1; + wait(time); + tread.speed(0); + tread2 = 0; +} \ No newline at end of file