4193| 2
|
[项目] 多功能输液架 |
【作品名称】 多功能盐水架 【创作背景】 目前,输液输液是一种常见的治疗手段,然而在各大医院内,常常会出现患者过多而医护人员不足的情况。输液架是一种常用的医疗器材,通常采用带底座的立式输液架,主要结构是底座与支架,这往往造成的机械的笨重,不便移动,而功能的过分单一,造成的医护人员使用的不便与患者使用的不适,据此,我们在此基础上经过了改造,制作了多功能输液架。 【生活联系】 就在去年,我校一批连我在内的学生不幸感染了诺如病毒,只能前往医院就医。当我托着疲惫的身躯坐在医院输液室,手又不时碰到冰冷又笨拙,似乎缺乏些人文关怀的输液架时,整个心都凉了。由于警报器的设计问题,我还时不时地误触到警报,使得护士一次又一次不停地来回奔波,自己也无法安心休息。于是乎,我便开始刻意避开警报器,但到了盐水快挂完时,悲催的我却又睡着了。这场经历使我受到启发,我便开始企图做出一个能够自由移动,能够控制温度,能够自动检测盐水瓶内水量自动报警,又能拥有防误触装置手动报警器的一款输液架。这样又简化了工作流程,降低了巡回护士的劳动强度,将更多的时间回归到重病患者的身心护理中。 【主要功能及创新点】 1. 温度控制加热:众所周知,药液常常储存在冰箱与低温的储藏室中,输液时温度过低导致的不适反应常有发生,母亲常常在打吊瓶时坐在身旁为我用体温暖和盐水瓶,据此也于心不忍,所以我们在盐水架上安装了温控及其自动加热的功能,用于缓解这样的不适。为确保输液的安全,我们设想采用外暖式,防止直接与药品的接触造成污染 2. 警报提醒:目前,在各大医院中,常常有医护人员不足分不清紧急状态,据此我们自主设计了触摸电路,利用人体微弱电流控制来提醒医护人员突发的紧急情况防止脱力无力碰触,警报灯则是利用调光系统设计了三种光色,分为绿,紫,红三个紧急状态。 在输液即将完成的情况下,我们利用了红外传感器,进行报警。 3. 移动跟随:人手不足的情况下,为防止患者突发状况难以移动,或者自己举瓶事发生回血现象,据此设计了红外遥控。利用红外遥控模块,解码再编码做出遥控驱动电机装置,方便了行走。 4. 留言提醒:利用语音录放模块进行留言。 【不足与改进】 不足1因为器材原因,没有完成支架的伸缩功能。 改进2利用步进电机加装伸缩支架。用于适应各个年龄段身高的人群 【致谢】 【程序】 #include<Servo.h> Servo servo; int temperture=5; int redLED=4; int cotton=7; int s,t=0,x,y; int light=A3; int hongwai =8; int R=A2; int G=A1; int B=A0; void RGBcolour(int k); int smallswtich(int a, int b, int c); void setup() { servo.attach(A5); Serial.begin(9600); pinMode(redLED,OUTPUT); pinMode(cotton,INPUT); pinMode(A4,INPUT); pinMode(light,INPUT); pinMode(hongwai,INPUT); pinMode(R,OUTPUT); pinMode(G,OUTPUT); pinMode(B,OUTPUT); pinMode(temperture,INPUT); //设置各端口属性 } void loop() { int t=analogRead(temperture)*(5/1024); //温度传感器数据处理 if(t<=37) digitalWrite(redLED,HIGH); //若温度低于37度则打开电阻丝 delay(100); int a[10]; int SENSOR=digitalRead(hongwai); if(SENSOR==0){ y=3; } if(SENSOR==1){ y=0; //红外传感 } for(int i=1;i<=3;i++) { int s=analogRead(light); a=s; //读取最近三次数值 } int m=smallswitch(a[1],a[2],a[3]); if(m==1) s=1; else s=0; if(t!=s){ t=s; if(t==1) x++; //若检测到开关按下,记录一个数值 } if(x==0||y==0){ RGBcolour(0); servo.write(90); } if(x==1){ RGBcolour(2); servo.write(180); //若按下一次,绿灯亮 } if(x==2){ RGBcolour(3); servo.write(180); //若按下两次,紫灯亮 } if(x==3||y==3){ RGBcolour(1); //若按下三次,红灯亮 servo.write(180); } if(x==4){ x=0; } int o=digitalRead(cotton); if(o==1) x=0; delay(100); } void RGBcolour(int k) { if(k==0) { analogWrite(R,0); analogWrite(G,0); analogWrite(B,0); } if(k==1) { analogWrite(R,255); analogWrite(G,0); analogWrite(B,0); } if(k==2) { analogWrite(R,0); analogWrite(G,255); analogWrite(B,0); } if(k==3) { analogWrite(R,255); analogWrite(G,127); analogWrite(B,128); } } int smallswitch(int a,int b,int c) { if(a>=700&&b>=700&&c>=700) return 1; else return 0; } 驱动图形化转 #include <U8glib.h> U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); #include <IRremote.h> volatile boolean running; long ir_item; IRrecv irrecv_4(4); decode_results results_4; void goAhead() { analogWrite(5,255); analogWrite(6,0); analogWrite(9,0); analogWrite(10,255); } void goBack() { analogWrite(5,0); analogWrite(6,255); analogWrite(9,255); analogWrite(10,0); } void turnLeft() { analogWrite(5,0); analogWrite(6,255); analogWrite(9,0); analogWrite(10,255); } void turnRight() { analogWrite(5,255); analogWrite(6,0); analogWrite(9,255); analogWrite(10,0); } void stop() { analogWrite(5,0); analogWrite(6,0); analogWrite(9,0); analogWrite(10,0); } void palySound() { for (int i = 1; i <= 5; i = i + (1)) { digitalWrite(2,HIGH); delay(200); digitalWrite(2,LOW); delay(200); } } void setup() { pinMode(7, INPUT); running = false; Serial.begin(9600); pinMode(6, OUTPUT); u8g.firstPage(); do { u8g.setFont(u8g_font_unifont); } while( u8g.nextPage()); delay(1000); pinMode(9, INPUT); pinMode(0, OUTPUT); pinMode(10, OUTPUT); irrecv_4.enableIRIn(); pinMode(2, OUTPUT); } void loop() { if (digitalRead(7)) { if (irrecv_4.decode(&results_4)) { ir_item=results_4.value; String type="UNKNOWN"; String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"}; if(results_4.decode_type>=1&&results_4.decode_type<=13){ type=typelist[results_4.decode_type]; } Serial.print("IR TYPE:"+type+" "); Serial.println(ir_item,HEX); if (ir_item == 0xFD807F) { goAhead(); digitalWrite(6,HIGH); u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print("hello"); u8g.setPrintPos(0,24); u8g.print("00000000000"); u8g.setPrintPos(0,36); u8g.print("go ahead"); u8g.setPrintPos(0,48); u8g.print("0000000000"); } while( u8g.nextPage() ); running = true; } else if (ir_item == 0xFD906F) { goBack(); digitalWrite(6,LOW); u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print("hello"); u8g.setPrintPos(0,24); u8g.print("00000000000"); u8g.setPrintPos(0,36); u8g.print("go back"); u8g.setPrintPos(0,48); u8g.print("0000000000"); } while( u8g.nextPage() ); } else if (ir_item == 0xFD20DF) { digitalWrite(6,HIGH); turnLeft(); u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print("hello"); u8g.setPrintPos(0,24); u8g.print("00000000000"); u8g.setPrintPos(0,36); u8g.print("go left"); u8g.setPrintPos(0,48); u8g.print("0000000000"); } while( u8g.nextPage() ); } else if (ir_item == 0xFD609F) { digitalWrite(6,LOW); turnRight(); u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print("hello"); u8g.setPrintPos(0,24); u8g.print("00000000000"); u8g.setPrintPos(0,36); u8g.print("go right"); u8g.setPrintPos(0,48); u8g.print("0000000000"); } while( u8g.nextPage() ); } else if (ir_item == 0xFDA05F) { digitalWrite(6,LOW); u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print("hello"); u8g.setPrintPos(0,24); u8g.print("00000000000"); u8g.setPrintPos(0,36); u8g.print("stop!!!"); u8g.setPrintPos(0,48); u8g.print("0000000000"); } while( u8g.nextPage() ); stop(); } irrecv_4.resume(); } else { if (digitalRead(9)) { digitalWrite(0,HIGH); delay(1000); digitalWrite(10,LOW); delay(1000); digitalWrite(10,LOW); delay(1000); } } } else { u8g.firstPage(); do { u8g.setPrintPos(0,12); u8g.print(" hello"); u8g.setPrintPos(0,24); u8g.print(" close"); u8g.setPrintPos(0,36); u8g.print("please open it"); u8g.setPrintPos(0,48); u8g.print("wlecome to here"); } while( u8g.nextPage() ); } } |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed