fan program
Dependencies: Motor Servo mbed
main.cpp@0:62f2dd7d4bc2, 2015-10-20 (annotated)
- Committer:
- chadlewellyn
- Date:
- Tue Oct 20 04:17:05 2015 +0000
- Revision:
- 0:62f2dd7d4bc2
fan program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chadlewellyn | 0:62f2dd7d4bc2 | 1 | #include "mbed.h" |
chadlewellyn | 0:62f2dd7d4bc2 | 2 | #include "Motor.h" |
chadlewellyn | 0:62f2dd7d4bc2 | 3 | #include "Servo.h" |
chadlewellyn | 0:62f2dd7d4bc2 | 4 | |
chadlewellyn | 0:62f2dd7d4bc2 | 5 | int main() |
chadlewellyn | 0:62f2dd7d4bc2 | 6 | { |
chadlewellyn | 0:62f2dd7d4bc2 | 7 | |
chadlewellyn | 0:62f2dd7d4bc2 | 8 | Motor fan(p25, p27, p28); //pins that listen for commands for the motor |
chadlewellyn | 0:62f2dd7d4bc2 | 9 | |
chadlewellyn | 0:62f2dd7d4bc2 | 10 | DigitalIn SW1(p16); //reads inputs of switches |
chadlewellyn | 0:62f2dd7d4bc2 | 11 | DigitalIn SW2(p17); |
chadlewellyn | 0:62f2dd7d4bc2 | 12 | DigitalIn SW3(p18); |
chadlewellyn | 0:62f2dd7d4bc2 | 13 | DigitalIn SW4(p19); |
chadlewellyn | 0:62f2dd7d4bc2 | 14 | DigitalIn SW5(p20); |
chadlewellyn | 0:62f2dd7d4bc2 | 15 | |
chadlewellyn | 0:62f2dd7d4bc2 | 16 | BusOut LEDs(p5, p6, p7, p8, p11); //sends commands to LED lights |
chadlewellyn | 0:62f2dd7d4bc2 | 17 | |
chadlewellyn | 0:62f2dd7d4bc2 | 18 | Servo servo1(p21); //assigns name to servo at pin 21 |
chadlewellyn | 0:62f2dd7d4bc2 | 19 | servo1 = 0; //sets servo to 0 |
chadlewellyn | 0:62f2dd7d4bc2 | 20 | servo1.calibrate(0.0009, 45); //calibrates servo |
chadlewellyn | 0:62f2dd7d4bc2 | 21 | |
chadlewellyn | 0:62f2dd7d4bc2 | 22 | Servo servo2(p22); //assigns name to servo at pin 22 |
chadlewellyn | 0:62f2dd7d4bc2 | 23 | servo2 = 0; //sets servo to 0 |
chadlewellyn | 0:62f2dd7d4bc2 | 24 | servo2.calibrate(0.0009, 90); //calibrates servo |
chadlewellyn | 0:62f2dd7d4bc2 | 25 | |
chadlewellyn | 0:62f2dd7d4bc2 | 26 | float i, j; //float variables |
chadlewellyn | 0:62f2dd7d4bc2 | 27 | int led_value = 1; //makes integer variable and assigns it a value of 1 |
chadlewellyn | 0:62f2dd7d4bc2 | 28 | LEDs.write(led_value); //assigns LEDs the value of 1 |
chadlewellyn | 0:62f2dd7d4bc2 | 29 | |
chadlewellyn | 0:62f2dd7d4bc2 | 30 | while(1) { //infinate while loop |
chadlewellyn | 0:62f2dd7d4bc2 | 31 | |
chadlewellyn | 0:62f2dd7d4bc2 | 32 | int S1 = SW1.read(); //assigns switch values to integer variables |
chadlewellyn | 0:62f2dd7d4bc2 | 33 | int S2 = SW2.read(); |
chadlewellyn | 0:62f2dd7d4bc2 | 34 | int S3 = SW3.read(); |
chadlewellyn | 0:62f2dd7d4bc2 | 35 | int S4 = SW4.read(); |
chadlewellyn | 0:62f2dd7d4bc2 | 36 | int S5 = SW5.read(); |
chadlewellyn | 0:62f2dd7d4bc2 | 37 | |
chadlewellyn | 0:62f2dd7d4bc2 | 38 | |
chadlewellyn | 0:62f2dd7d4bc2 | 39 | if (S1 == 0 && S2 == 0 && S3 == 0 && S4 == 0 && S5 == 0) { //No switches on, centered position and no rotation |
chadlewellyn | 0:62f2dd7d4bc2 | 40 | servo1 = 0.5; //servo is positioned in the middle |
chadlewellyn | 0:62f2dd7d4bc2 | 41 | fan.speed(0); //fan is not moving |
chadlewellyn | 0:62f2dd7d4bc2 | 42 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 43 | |
chadlewellyn | 0:62f2dd7d4bc2 | 44 | |
chadlewellyn | 0:62f2dd7d4bc2 | 45 | |
chadlewellyn | 0:62f2dd7d4bc2 | 46 | else if (S1 == 1 && S2 ==0 && S3 == 0 && S4 == 0 && S5 == 0) { //Low speed |
chadlewellyn | 0:62f2dd7d4bc2 | 47 | servo1 = 0.5; //servo is in the middle |
chadlewellyn | 0:62f2dd7d4bc2 | 48 | fan.speed(0.6); //fan is on a slow speed |
chadlewellyn | 0:62f2dd7d4bc2 | 49 | if (led_value < 16) { //Light pattern #1 |
chadlewellyn | 0:62f2dd7d4bc2 | 50 | led_value = led_value * 2; |
chadlewellyn | 0:62f2dd7d4bc2 | 51 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 52 | wait(0.55); |
chadlewellyn | 0:62f2dd7d4bc2 | 53 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 54 | else { |
chadlewellyn | 0:62f2dd7d4bc2 | 55 | led_value = 1; //Light pattern resets |
chadlewellyn | 0:62f2dd7d4bc2 | 56 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 57 | wait(0.55); |
chadlewellyn | 0:62f2dd7d4bc2 | 58 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 59 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 60 | |
chadlewellyn | 0:62f2dd7d4bc2 | 61 | else if (S1 == 1 && S2 == 0 && S3 == 0 && S4 == 1 && S5 == 0) { // Low speed & oscillation |
chadlewellyn | 0:62f2dd7d4bc2 | 62 | for (i = 0; i <= 1; i += 0.005) { |
chadlewellyn | 0:62f2dd7d4bc2 | 63 | fan.speed (0.6); //fan speed is slow |
chadlewellyn | 0:62f2dd7d4bc2 | 64 | servo1 = i; //servo moves a small amount every .025 seconds |
chadlewellyn | 0:62f2dd7d4bc2 | 65 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 66 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 67 | for (i = 1; i >= 0; i -= 0.005) { |
chadlewellyn | 0:62f2dd7d4bc2 | 68 | fan.speed (0.6); //fan speed is slow |
chadlewellyn | 0:62f2dd7d4bc2 | 69 | servo1 = i; //servo moves back small amount every .025 seconds |
chadlewellyn | 0:62f2dd7d4bc2 | 70 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 71 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 72 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 73 | else if (S1 == 1 && S2 == 0 && S3 == 0 && S4 == 0 && S5 == 1) { //Low speed & mist |
chadlewellyn | 0:62f2dd7d4bc2 | 74 | for (j = 0; j <= 1; j += 1) { //pulls the string quickly which squeezes the bottle trigger and creates mist |
chadlewellyn | 0:62f2dd7d4bc2 | 75 | servo1 = 0.5; //servo is in the middle |
chadlewellyn | 0:62f2dd7d4bc2 | 76 | fan.speed(0.6); //fan is at low speed |
chadlewellyn | 0:62f2dd7d4bc2 | 77 | servo2 = j; //other servo pulls trigger on mist bottle |
chadlewellyn | 0:62f2dd7d4bc2 | 78 | wait(2); |
chadlewellyn | 0:62f2dd7d4bc2 | 79 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 80 | for (j = 1; j >= 0; j -= 0.05) { |
chadlewellyn | 0:62f2dd7d4bc2 | 81 | servo1 = 0.5; //servo is in the middle |
chadlewellyn | 0:62f2dd7d4bc2 | 82 | fan.speed(0.6); //fan is at low speed |
chadlewellyn | 0:62f2dd7d4bc2 | 83 | servo2 = j; //other servo slowly releases trigger |
chadlewellyn | 0:62f2dd7d4bc2 | 84 | wait(0.25); |
chadlewellyn | 0:62f2dd7d4bc2 | 85 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 86 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 87 | else if (S1 == 0 && S2 == 1 && S3 == 0 && S4 == 0 && S5 == 0) { // Med speed |
chadlewellyn | 0:62f2dd7d4bc2 | 88 | servo1 = 0.5; //servo is in the middle |
chadlewellyn | 0:62f2dd7d4bc2 | 89 | fan.speed(0.8); //fan is at medium speed |
chadlewellyn | 0:62f2dd7d4bc2 | 90 | |
chadlewellyn | 0:62f2dd7d4bc2 | 91 | led_value = 16; //LED pattern #2 (racetrack) |
chadlewellyn | 0:62f2dd7d4bc2 | 92 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 93 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 94 | led_value = 8; |
chadlewellyn | 0:62f2dd7d4bc2 | 95 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 96 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 97 | led_value = 4; |
chadlewellyn | 0:62f2dd7d4bc2 | 98 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 99 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 100 | led_value = 2; |
chadlewellyn | 0:62f2dd7d4bc2 | 101 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 102 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 103 | led_value = 1; |
chadlewellyn | 0:62f2dd7d4bc2 | 104 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 105 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 106 | |
chadlewellyn | 0:62f2dd7d4bc2 | 107 | led_value = 2; |
chadlewellyn | 0:62f2dd7d4bc2 | 108 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 109 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 110 | led_value = 4; |
chadlewellyn | 0:62f2dd7d4bc2 | 111 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 112 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 113 | led_value = 8; |
chadlewellyn | 0:62f2dd7d4bc2 | 114 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 115 | wait(0.125); |
chadlewellyn | 0:62f2dd7d4bc2 | 116 | led_value = 16; |
chadlewellyn | 0:62f2dd7d4bc2 | 117 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 118 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 119 | |
chadlewellyn | 0:62f2dd7d4bc2 | 120 | else if (S1 == 0 && S2 ==1 && S3 == 0 && S4 == 1 && S5 == 0) { //Med speed & oscillation |
chadlewellyn | 0:62f2dd7d4bc2 | 121 | for (i = 0; i <= 1; i += 0.005) { //rotates fan slowly and smoothly |
chadlewellyn | 0:62f2dd7d4bc2 | 122 | fan.speed (0.8); //fan speed is medium |
chadlewellyn | 0:62f2dd7d4bc2 | 123 | servo1 = i; //fan oscillates |
chadlewellyn | 0:62f2dd7d4bc2 | 124 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 125 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 126 | for (i = 1; i >= 0; i -= 0.005) { |
chadlewellyn | 0:62f2dd7d4bc2 | 127 | fan.speed (0.8); //fan speed is medium |
chadlewellyn | 0:62f2dd7d4bc2 | 128 | servo1 = i; //fan oscillates |
chadlewellyn | 0:62f2dd7d4bc2 | 129 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 130 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 131 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 132 | |
chadlewellyn | 0:62f2dd7d4bc2 | 133 | else if (S1 == 0 && S2 == 1 && S3 == 0 && S4 == 0 && S5 == 1) { //Med speed & mist |
chadlewellyn | 0:62f2dd7d4bc2 | 134 | for (j = 0; j <= 1; j += 1) { //pulls the string quickly which squeezes the bottle trigger and creates mist |
chadlewellyn | 0:62f2dd7d4bc2 | 135 | servo1 = 0.5; //does not oscillate |
chadlewellyn | 0:62f2dd7d4bc2 | 136 | fan.speed(0.8); //fan speed is medium |
chadlewellyn | 0:62f2dd7d4bc2 | 137 | servo2 = j; //spays mist |
chadlewellyn | 0:62f2dd7d4bc2 | 138 | wait(2); |
chadlewellyn | 0:62f2dd7d4bc2 | 139 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 140 | for (j = 1; j >= 0; j -= 0.05) { //Releases string slowly |
chadlewellyn | 0:62f2dd7d4bc2 | 141 | servo1 = 0.5; //does not oscillate |
chadlewellyn | 0:62f2dd7d4bc2 | 142 | fan.speed(0.8); //fan speed is medium |
chadlewellyn | 0:62f2dd7d4bc2 | 143 | servo2 = j; //Releases string slowly |
chadlewellyn | 0:62f2dd7d4bc2 | 144 | wait(0.25); |
chadlewellyn | 0:62f2dd7d4bc2 | 145 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 146 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 147 | |
chadlewellyn | 0:62f2dd7d4bc2 | 148 | else if (S1 == 0 && S2 == 0 && S3 ==1 && S4 == 0 && S5 == 0) { //Fast speed |
chadlewellyn | 0:62f2dd7d4bc2 | 149 | servo1 = 0.5; //does not oscillate |
chadlewellyn | 0:62f2dd7d4bc2 | 150 | fan.speed(0.99); //fan speed is high |
chadlewellyn | 0:62f2dd7d4bc2 | 151 | |
chadlewellyn | 0:62f2dd7d4bc2 | 152 | int power; |
chadlewellyn | 0:62f2dd7d4bc2 | 153 | power = rand() % 5; // LED pattern #3 Random LED generator |
chadlewellyn | 0:62f2dd7d4bc2 | 154 | led_value = (pow(2, (float)power)); |
chadlewellyn | 0:62f2dd7d4bc2 | 155 | LEDs.write(led_value); |
chadlewellyn | 0:62f2dd7d4bc2 | 156 | wait(0.05); |
chadlewellyn | 0:62f2dd7d4bc2 | 157 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 158 | |
chadlewellyn | 0:62f2dd7d4bc2 | 159 | else if (S1 == 0 && S2 == 0 && S3 == 1 && S4 == 1 && S5 == 0) { //Fast speed & oscillation |
chadlewellyn | 0:62f2dd7d4bc2 | 160 | for (i = 0; i <= 1; i += 0.005) { |
chadlewellyn | 0:62f2dd7d4bc2 | 161 | fan.speed (0.99); //fan speed is high |
chadlewellyn | 0:62f2dd7d4bc2 | 162 | servo1 = i; //fan oscillates |
chadlewellyn | 0:62f2dd7d4bc2 | 163 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 164 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 165 | for (i = 1; i >= 0; i -= 0.005) { |
chadlewellyn | 0:62f2dd7d4bc2 | 166 | fan.speed (0.99); //fan speed is high |
chadlewellyn | 0:62f2dd7d4bc2 | 167 | servo1 = i; //fan oscillates |
chadlewellyn | 0:62f2dd7d4bc2 | 168 | wait(0.025); |
chadlewellyn | 0:62f2dd7d4bc2 | 169 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 170 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 171 | else if (S1 == 0 && S2 == 0 && S3 == 1 && S4 == 0 && S5 == 1) { //fast speed & mist |
chadlewellyn | 0:62f2dd7d4bc2 | 172 | for (j = 0; j <= 1; j += 1) { //pulls the string quickly which squeezes the bottle trigger and creates mist |
chadlewellyn | 0:62f2dd7d4bc2 | 173 | servo1 = 0.5; //does not oscillate |
chadlewellyn | 0:62f2dd7d4bc2 | 174 | fan.speed(0.99); //fan speed is high |
chadlewellyn | 0:62f2dd7d4bc2 | 175 | servo2 = j; //spays mist |
chadlewellyn | 0:62f2dd7d4bc2 | 176 | wait(2); |
chadlewellyn | 0:62f2dd7d4bc2 | 177 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 178 | for (j = 1; j >= 0; j -= 0.05) { |
chadlewellyn | 0:62f2dd7d4bc2 | 179 | servo1 = 0.5; //does not oscillate |
chadlewellyn | 0:62f2dd7d4bc2 | 180 | fan.speed(0.99); //fan speed is high |
chadlewellyn | 0:62f2dd7d4bc2 | 181 | servo2 = j; //releases string slowly |
chadlewellyn | 0:62f2dd7d4bc2 | 182 | wait(0.25); |
chadlewellyn | 0:62f2dd7d4bc2 | 183 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 184 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 185 | |
chadlewellyn | 0:62f2dd7d4bc2 | 186 | |
chadlewellyn | 0:62f2dd7d4bc2 | 187 | } |
chadlewellyn | 0:62f2dd7d4bc2 | 188 | } |