Omnyous Abizmol
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 AnalogIn LM35(p14); 00005 DigitalOut WOpen(p5); 00006 DigitalOut WClose(p6); 00007 DigitalIn StepOpen(p8); 00008 DigitalIn StepClose(p7); 00009 DigitalOut AmberLED(p23); 00010 DigitalOut GreenLED(p22); 00011 DigitalOut RedLED(p21); 00012 00013 TextLCD lcd(p15, p16, p17, p18, p19, p20); //rs, e, d4-d7 00014 BusOut stepper_out(p30,p29,p28,p27); 00015 00016 int step=0; 00017 int x=0; 00018 int dir=1; //direction of motor 00019 00020 00021 int main() 00022 { 00023 float tempC,tempF,a[10],avg; //float integer for temp 00024 int i; 00025 00026 while(1) 00027 { 00028 avg=0; 00029 for(i=0;i<10;i++) 00030 { 00031 a[i]=LM35.read(); //read temp sensor 00032 AmberLED = 1 00033 wait(.02) 00034 AmberLED = 0 00035 wait(.02); 00036 } 00037 for(i=0;i<10;i++) 00038 { 00039 avg=avg+(a[i]/10); 00040 } 00041 00042 tempC=(avg*3.685503686*100); 00043 tempF=(9.0*tempC)/5.0 + 32.0; 00044 lcd.locate(0,0); 00045 lcd.printf(" Temperature "); //displays 'temperature' on the lcd screen 00046 lcd.locate(0,1); 00047 lcd.printf("%.2f C %.2f F",tempC,tempF); //displays the temperature reading on the LCD screen 00048 wait(.5); 00049 00050 if (tempC < 20.C) //If Temp is over 20 degrees, turn open window pin out on 00051 WClose = 1; 00052 Wopen = 0; 00053 GreenLed = 1; 00054 RedLed = 0; 00055 else //if Temp is not over 20 degree, turn close window pin out on 00056 WClose = 0; 00057 WOpen = 1; 00058 GreenLed = 0; 00059 RedLed = 1; 00060 00061 While (1) 00062 { 00063 if (StepOpen ==1){ 00064 for (x=0;x<=1024;x++); 00065 switch(Step) 00066 { 00067 case 0: stepper_out=0x1; break; //8 step mootor requires 8 cases 00068 case 1: stepper_out=0x3; break; 00069 case 2: stepper_out=0x2; break; 00070 case 3: stepper_out=0x6; break; 00071 case 4: stepper_out=0x4; break; 00072 case 5: stepper_out=0x5; break; 00073 case 6: stepper_out=0x8; break; 00074 case 7: stepper_out=0x9; break; 00075 default : stepper_out=0x0; break; 00076 } 00077 00078 if(dir) step++;else step--; 00079 00080 if(step>7) step=0; 00081 if(step<0) step=7; 00082 wait(0.005) ; //set speed of motor 00083 } 00084 00085 00086 00087 00088 00089 00090 } 00091 }
Generated on Fri Jul 15 2022 00:42:54 by
1.7.2