fan program

Dependencies:   Motor Servo mbed

main.cpp

Committer:
chadlewellyn
Date:
2015-10-20
Revision:
0:62f2dd7d4bc2

File content as of revision 0:62f2dd7d4bc2:

#include "mbed.h"
#include "Motor.h"
#include "Servo.h"

int main()
{

    Motor fan(p25, p27, p28);             //pins that listen for commands for the motor

    DigitalIn SW1(p16);                   //reads inputs of switches
    DigitalIn SW2(p17);
    DigitalIn SW3(p18);
    DigitalIn SW4(p19);
    DigitalIn SW5(p20);

BusOut LEDs(p5, p6, p7, p8, p11);         //sends commands to LED lights

    Servo servo1(p21);                    //assigns name to servo at pin 21
    servo1 = 0;                           //sets servo to 0
    servo1.calibrate(0.0009, 45);         //calibrates servo
    
    Servo servo2(p22);                    //assigns name to servo at pin 22
    servo2 = 0;                           //sets servo to 0
    servo2.calibrate(0.0009, 90);         //calibrates servo

    float i, j;                           //float variables
    int led_value = 1;                    //makes integer variable and assigns it a value of 1
    LEDs.write(led_value);                //assigns LEDs the value of 1

    while(1) {                            //infinate while loop

        int S1 = SW1.read();              //assigns switch values to integer variables
        int S2 = SW2.read();
        int S3 = SW3.read();
        int S4 = SW4.read();
        int S5 = SW5.read();
        

        if (S1 == 0 && S2 == 0 && S3 == 0 && S4 == 0 && S5 == 0) { //No switches on, centered position and no rotation
            servo1 = 0.5;                 //servo is positioned in the middle
            fan.speed(0);                 //fan is not moving
        }
    


        else if (S1 == 1 && S2 ==0 && S3 == 0 && S4 == 0 && S5 == 0) {  //Low speed 
            servo1 = 0.5;                 //servo is in the middle
            fan.speed(0.6);               //fan is on a slow speed
            if (led_value < 16) {         //Light pattern #1
            led_value = led_value * 2;    
            LEDs.write(led_value);
            wait(0.55);
            }
            else {
                led_value = 1;            //Light pattern resets
                LEDs.write(led_value);
                wait(0.55);
            }
            }

        else if (S1 == 1 && S2 == 0 && S3 == 0 && S4 == 1 && S5 == 0) { // Low speed & oscillation 
            for (i = 0; i <= 1; i += 0.005) { 
                fan.speed (0.6);          //fan speed is slow
                servo1 = i;               //servo moves a small amount every .025 seconds
                wait(0.025);
                }
            for (i = 1; i >= 0; i -= 0.005) {
                fan.speed (0.6);          //fan speed is slow
                servo1 = i;               //servo moves back small amount every .025 seconds
                wait(0.025);
                }
                }
        else if (S1 == 1 && S2 == 0 && S3 == 0 && S4 == 0 && S5 == 1) { //Low speed & mist
           for (j = 0; j <= 1; j += 1) {  //pulls the string quickly which squeezes the bottle trigger and creates mist
                servo1 = 0.5;             //servo is in the middle
                fan.speed(0.6);           //fan is at low speed
                servo2 = j;               //other servo pulls trigger on mist bottle
                wait(2);
                }
            for (j = 1; j >= 0; j -= 0.05) {
                servo1 = 0.5;             //servo is in the middle
                fan.speed(0.6);           //fan is at low speed
                servo2 = j;               //other servo slowly releases trigger
                wait(0.25);
                }
            }
        else if (S1 == 0 && S2 == 1 && S3 == 0 && S4 == 0 && S5 == 0) { // Med speed 
            servo1 = 0.5;                 //servo is in the middle
            fan.speed(0.8);               //fan is at medium speed
            
            led_value = 16;               //LED pattern #2 (racetrack)
            LEDs.write(led_value);
            wait(0.125);
            led_value = 8;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 4;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 2;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 1;
            LEDs.write(led_value);
            wait(0.125);

            led_value = 2;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 4;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 8;
            LEDs.write(led_value);
            wait(0.125);
            led_value = 16;
            LEDs.write(led_value);
        }

        else if (S1 == 0 && S2 ==1 && S3 == 0 && S4 == 1 && S5 == 0) { //Med speed & oscillation
            for (i = 0; i <= 1; i += 0.005) { //rotates fan slowly and smoothly
                fan.speed (0.8);          //fan speed is medium
                servo1 = i;               //fan oscillates
                wait(0.025);
            }
            for (i = 1; i >= 0; i -= 0.005) {
                fan.speed (0.8);          //fan speed is medium
                servo1 = i;               //fan oscillates
                wait(0.025);
            }
        }
        
        else if (S1 == 0 && S2 == 1 && S3 == 0 && S4 == 0 && S5 == 1) { //Med speed & mist
            for (j = 0; j <= 1; j += 1) { //pulls the string quickly which squeezes the bottle trigger and creates mist
                servo1 = 0.5;             //does not oscillate
                fan.speed(0.8);           //fan speed is medium
                servo2 = j;               //spays mist
                wait(2);
                }
            for (j = 1; j >= 0; j -= 0.05) { //Releases string slowly
                servo1 = 0.5;             //does not oscillate
                fan.speed(0.8);           //fan speed is medium
                servo2 = j;               //Releases string slowly
                wait(0.25);
                }
            }

        else if (S1 == 0 && S2 == 0 && S3 ==1 && S4 == 0 && S5 == 0) { //Fast speed
            servo1 = 0.5;                 //does not oscillate
            fan.speed(0.99);              //fan speed is high
            
            int power;
            power = rand() % 5; // LED pattern #3 Random LED generator 
            led_value = (pow(2, (float)power));
            LEDs.write(led_value);
            wait(0.05);
        }

        else if (S1 == 0 && S2 == 0 && S3 == 1 && S4 == 1 && S5 == 0) { //Fast speed & oscillation
            for (i = 0; i <= 1; i += 0.005) {
                fan.speed (0.99);         //fan speed is high
                servo1 = i;               //fan oscillates
                wait(0.025);
            }
            for (i = 1; i >= 0; i -= 0.005) {
                fan.speed (0.99);         //fan speed is high
                servo1 = i;               //fan oscillates
                wait(0.025);
            }
        }
        else if (S1 == 0 && S2 == 0 && S3 == 1 && S4 == 0 && S5 == 1) { //fast speed & mist
             for (j = 0; j <= 1; j += 1) { //pulls the string quickly which squeezes the bottle trigger and creates mist
                servo1 = 0.5;             //does not oscillate
                fan.speed(0.99);          //fan speed is high
                servo2 = j;               //spays mist
                wait(2);
                }
            for (j = 1; j >= 0; j -= 0.05) {
                servo1 = 0.5;             //does not oscillate
                fan.speed(0.99);          //fan speed is high
                servo2 = j;               //releases string slowly
                wait(0.25);
                }
            }


    }
}