传感器技术项目式教程题库及答案《项目十三 智能保险箱 》题库_第1页
传感器技术项目式教程题库及答案《项目十三 智能保险箱 》题库_第2页
传感器技术项目式教程题库及答案《项目十三 智能保险箱 》题库_第3页
传感器技术项目式教程题库及答案《项目十三 智能保险箱 》题库_第4页
传感器技术项目式教程题库及答案《项目十三 智能保险箱 》题库_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《项目十三》题库单选题(共10题)1.旋转编码器是一种()。A.光电装置B.机电装置C.接地装置D.电能装置2.旋转编码器通常放置在()于轴的一侧A.平行B.相交C.垂直D.交叉3.增量编码器给出两相方波,它们的相位差(),通常称为A通道和B通道。A.90°B.180°C.60°D.120°4.增量型编码器精度取决于机械和()两种因素A.电气B.温度C.湿度D.外部环境5.()是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。A.电压表B.电流表C.编码器D.传感器6.Python中用来抛出异常的关键字是()。A.tryB.exceptC.raiseD.finally7.Python中用来捕获异常的关键字是()。A.tryB.exceptC.raiseD.finally8.当方法遇到异常又不知如何处理时,下列哪种说法是正确的()。A.捕获异常B.抛出异常C.声明异常D.嵌套异常9.Python中CPU最小工作单元是()。A.线程B.进程C.协程D.IO多路复用10.下列那句代码是声明一个线程()。A.threading.Thread()B.threading.local()C.threading.Lock()D.threading.Mapping()二.判断题(共计10题)1.旋转编码器可将轴或轴的角位置或运动转换为模拟或数字代码()。2.增量型旋转编码器有分辨率的差异,使用每圈产生的脉冲数来计量,脉冲数越多,分辨率越高。()。3.增量编码器既可以测量位置,又可以测量速度。()。4.旋转编码器的旋转计数不像电位计,这种转动计数是有限制的()。5旋转编码器配合旋转编码器上的按键,可以复位到初始状态,即从1开始计数()。6.增量编码器的接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。再使低电平信号上升到较高电平()。7.增量编码器读数系统以,由交替的透光窗口和不透光窗口构成的,径向分度盘(码盘)的旋转,为依据,同时被一个红外光源垂直照射()。8.增量编码器的轴的转动必须是一个完整的周期()。9.一个进程可以有很多线程,每条线程并行执行不同的任务()。10.try/except语句只能捕获一种特定的异常()。三.填空题(共计10题)1.旋转编码器用作检测自动化领域中的角度,,长度,和加速度的传感器2.旋转编码器可通过,计数正方向和反方向转动过程中,输出的次数3.增量编码器是一种将,转换成的电信号4.增量编码器把电信号转变成,用脉冲的个数表示位移的的旋转式传感器5.增量编码器中角位移的转换采用了6.增量编码器读数系统通常采用差分方式,即将两个波形一样但相位差为180°的不同信号进行比较以便提高输出信号的和7.增量编码器精度的测量单位是电气上的,编码器精度决定了编码器产生的脉冲8.计算机械角度相当于电气上的360度计算公式为9.线程(英语:thread)是操作系统能够进行运算调度的10.在Python中使用语句进行捕捉异常,检测语句块中的错误,从而让语句捕获异常信息并处理四.操作题(共10题)树莓派T型转接板旋转编码器-G21SCL-G22DT-G23SW5V5VVCCGNDGNDGND树莓派T型转接板LCD1602SDASDASDASCLSCLSCLGNDGNDGNDVCC5VVCC树莓派T型转接板超声波模块-G17Trig-G18Echo5V5VVCC(+)GNDGNDGND树莓派T型转接板三色灯模块GNDGNDGND-G26R-G27G图4.11.编写一个计算加减的程序,对该程序进行异常捕获,当出现错误的时候控制台输出”您输入的算式不合法”.2.编写多线程程序,列表info=[11,22,33,44,55,23],生成6个线程对象,每次线程输出一个值,最后输出:"end"3.将三色灯模块,按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:声明两个线程事件,两个线程中一个线程为让红色灯不断闪烁1秒一次,另外一个线程绿色灯以每秒2秒闪烁一次。4.将三色灯,超声波模块,按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:进行实时检测,当检测前方0.5米有物体接近的时候三色灯以每秒一次的频率闪烁红灯,正常情况下绿灯常亮5.将三色灯,超声波模块,LCD1602模块按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:进行实时检测,当检测前方0.5米有物体接近的时候声明两个线程事件,,两个线程中一个线程让三色灯以每秒一次的频率闪烁红灯,另外一个线程让LCD1602模块进行提示,正常情况下绿灯常亮.6.将三色灯,超声波模块,LCD1602模块按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:可以在控制台开启程序,并设置超声波检测距离.进行实时检测,当检测前方物体接近的时候声明两个线程事件,两个线程中一个线程让三色灯以每秒一次的频率闪烁红灯,另外一个线程让LCD1602模块进行提示,正常情况下绿灯常亮.7.将LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”8.将LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”,当用户连续输入3次错误后,锁定输入密码功能,并提示用户无法使用保险箱功能,在液晶屏上显示该英文字符提示。9.将超声波模块,LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:当有人接近时才可以进行密码输入功能,如果无人接近则锁定密码输入功能用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”10.将超声波模块,LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,使用多线程的方式将传感器分到多个线程中执行完成以下功能:当有人接近时才可以进行密码输入功能,如果无人接近则锁定密码输入功能用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”五.简答题(共5题)1.简述为什么要使用线程2.简述什么是线程3.说出2个旋转编码器应用场景4.简述旋转编码器的工作原理5.下面是一段关于LCD1602模块和旋转编码器的代码,请分析下述代码的具体作用。并进行代码与注释的填空。defRot_thread():

#_______________①_____________________

globalglobalCounter

globalpassword_list

globalInPwd_list

globalcount

LCD1602.init()#初始化LCD1602IO

LCD1602.write(0,0,"InputPassword:")

whileRot_flag:

tmp=ro_encode.Rot_Deal()#____________②____________________

iftmp!=globalCounter:#判断状态值发生改变

globalCounter=tmp

InPwd_list[count]=globalCounter

LCD_DISP2=''.join(str(x)forxinInPwd_list)#___________③__

LCD1602.write(0,1,LCD_DISP2)#在第二行显示world!

#确定按钮判断

ifro_encode.Rot_SW():

InPwd_list.append(globalCounter)

LCD_DISP2=''.join(str(x)forxinInPwd_list)#组合密码字符串

LCD1602.write(0,1,LCD_DISP2)#在第二行显示world!

count=count+1

ifcount==(len(password_list)-1):

ifInPwd_list==password_list:#_______________④_________

print('密码正确,已为您打开保险柜!')

LCD_DISP1='PASSWORDOK'

LCD1602.write(0,0,LCD_DISP1)#在第一行显示Hello

break

else:

print('密码错误,请重新输入!')

count=0

globalCounter=0

InPwd_list=[0]

LCD1602.write(0,1,"")①:②:③:④:------《项目十三》参考答案------一、单项选择题题号12345678910答案BCAACCBBAA二、判断题题号12345678910判断√√×××√√√√×三、填空题1.速度位置2.旋转脉冲3.旋转位移周期性4.计数脉冲大小5.光电扫描原理6.质量稳定性7.度数分度8.电气360=机械360°/n°脉冲/转9.最小单位10.try/excepttryexcept四.操作题1.编写一个计算加减的程序,对该程序进行异常捕获,当出现错误的时候控制台输出”您输入的算式不合法”.importmatplotlib.pyplotasplt

#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔

frommatplotlib.pyplotimportMultipleLocator

importPCF8591asADC

importtime

importRPi.GPIOasGPIO

ADC.setup(0x48)

GPIO.setmode(GPIO.BCM)

GPIO.setup(20,GPIO.OUT)

i=0

alert=0

x_values=list(range(61))

list_data=list(range(61))

alert_list=list()

whileTrue:

V_Value=ADC.read(0)

ifV_Value>=100:

GPIO.output(20,0)

alert=alert+1

else:

GPIO.output(20,1)

list_data[i]=V_Value

time.sleep(1)

ifi==60:

alert_list.append(alert)

i=0

alert=0

plt.subplot(2,2,1)

plt.plot(x_values[0:31],list_data[0:31],c='green')

plt.title('煤气泄漏数据变化图1',fontsize=24)

plt.tick_params(axis='both',which='major',labelsize=14)

plt.xlabel('Time',fontsize=14)

plt.ylabel('CO',fontsize=14)

x_major_locator=MultipleLocator(1)

y_major_locator=MultipleLocator(50)

ax=plt.gca()

ax.xaxis.set_major_locator(x_major_locator)

ax.yaxis.set_major_locator(y_major_locator)

plt.xlim(0,31)

plt.ylim(0,200)

plt.subplot(2,2,2)

plt.plot(x_values[31:],list_data[31:],c='green')

plt.title('煤气泄漏数据变化图2',fontsize=24)

plt.tick_params(axis='both',which='major',labelsize=14)

plt.xlabel('Time',fontsize=14)

plt.ylabel('CO',fontsize=14)

x_major_locator=MultipleLocator(1)

y_major_locator=MultipleLocator(50)

ax=plt.gca()

ax.xaxis.set_major_locator(x_major_locator)

ax.yaxis.set_major_locator(y_major_locator)

plt.xlim(31,61)

plt.ylim(0,200)

plt.subplot(2,1,2)

plt.plot(alert_list,c='green')

plt.title('分钟报警数统计图',fontsize=24)

plt.tick_params(axis='both',which='major',labelsize=14)

x_major_locator=MultipleLocator(1)

y_major_locator=MultipleLocator(50)

ax=plt.gca()

ax.xaxis.set_major_locator(x_major_locator)

ax.yaxis.set_major_locator(y_major_locator)

plt.show()

else:

i+=12.编写多线程程序,列表info=[11,22,33,44,55,23],生成6个线程对象,每次线程输出一个值,最后输出:"end"importthreading

deftest(j):

print(j)

ts=[]

info=[1,2,3,4,55,233]

forjininfo:

th=threading.Thread(target=test,args=[j])

th.start()

ts.append(th)

foriints:

i.join()

print('end')3.将三色灯模块,按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:声明两个线程事件,两个线程中一个线程为让红色灯不断闪烁1秒一次,另外一个线程绿色灯以每秒2秒闪烁一次。importRPi.GPIOasGPIO

importtime

importthreading

defLed1():

whileTrue:

GPIO.output(24,1)

time.sleep(1)

GPIO.output(24,0)

time.sleep(1)

defLed2():

whileTrue:

GPIO.output(23,1)

time.sleep(2)

GPIO.output(23,0)

time.sleep(2)

if__name__=="__main__":

GPIO.setmode(GPIO.BCM)

GPIO.setup(23,GPIO.OUT)

GPIO.setup(24,GPIO.OUT)

Led1_th=threading.Thread(target=Led1(),args=[])

Led1_th.start()

Led2_th=threading.Thread(target=Led2(),args=[])

Led2_th.start()4.将三色灯,超声波模块,按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:进行实时检测,当检测前方0.5米有物体接近的时候三色灯以每秒一次的频率闪烁红灯,正常情况下绿灯常亮importRPi.GPIOasGPIO

importtime

#引用模块类库

importsupersonic

importled

distance_min=0.5

defsuperconic_thread():

s=supersonic.supersonic()

ifs<distance_min:

foriinrange(0,3):

led.light(led.r_open)

time.sleep(0.5)

led.light(led.r_close)

time.sleep(0.5)

else:

led.light(led.g_open)

led.light(led.r_close)

time.sleep(0.5)

if__name__=="__main__":

supersonic.init()

led.init()

superconic_thread()5.将三色灯,超声波模块,LCD1602模块按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:进行实时检测,当检测前方0.5米有物体接近的时候声明两个线程事件,,两个线程中一个线程让三色灯以每秒一次的频率闪烁红灯,另外一个线程让LCD1602模块进行提示,正常情况下绿灯常亮.importRPi.GPIOasGPIO

importtime

#引用模块类库

importsupersonic

importled

importLCD1602

importthreading

globalstop_threads

distance_min=0.5

defLed():

whileTrue:

led.light(led.r_open)

time.sleep(1)

led.light(led.r_close)

time.sleep(1)

ifnotstop_threads:

break

defLcd():

LCD1602.write(0,1,"Someoneinvaded")

defsuperconic_thread():

s=supersonic.supersonic()

ifs<distance_min:

stop_threads=True

Led_th=threading.Thread(target=Led(),args=[])

Led_th.start()

Lcd_th=threading.Thread(target=Lcd(),args=[])

Lcd_th.start()

else:

stop_threads=False

led.light(led.g_open)

led.light(led.r_close)

LCD1602.write(0,1,"")

time.sleep(0.5)

if__name__=="__main__":

supersonic.init()

led.init()

LCD1602.init()

superconic_thread()6.将三色灯,超声波模块,LCD1602模块按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:可以在控制台开启程序,并设置超声波检测距离.进行实时检测,当检测前方物体接近的时候声明两个线程事件,两个线程中一个线程让三色灯以每秒一次的频率闪烁红灯,另外一个线程让LCD1602模块进行提示,正常情况下绿灯常亮.importRPi.GPIOasGPIO

importtime

#引用模块类库

importsupersonic

importled

importLCD1602

importthreading

globalstop_threads

defLed():

whileTrue:

led.light(led.r_open)

time.sleep(1)

led.light(led.r_close)

time.sleep(1)

ifnotstop_threads:

break

defLcd():

LCD1602.write(0,1,"Someoneinvaded")

defsuperconic_thread(distance_min):

s=supersonic.supersonic()

ifs<distance_min:

stop_threads=True

Led_th=threading.Thread(target=Led(),args=[])

Led_th.start()

Lcd_th=threading.Thread(target=Lcd(),args=[])

Lcd_th.start()

else:

stop_threads=False

led.light(led.g_open)

led.light(led.r_close)

LCD1602.write(0,1,"")

time.sleep(0.5)

if__name__=="__main__":

supersonic.init()

led.init()

LCD1602.init()

whileTrue:

User_cmd=input("输入指令")

ifUser_cmd.upper()=="OPEN":

distance_min=int(input("超声波检测距离"))

superconic_thread(distance_min)

else:

print("输入指令不存在")7.将LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”importRPi.GPIOasGPIO

importtime

#引用模块类库

importro_encode

importLCD1602

Rot_flag=True

globalCounter=0

#当前密码

password_list=[0,0,0,0,0,0,0,0]

InPwd_list=[0]

defRot_thread():

globalglobalCounter

globalpassword_list

globalInPwd_list

globalcount

LCD1602.init()

LCD1602.write(0,0,"InputPassword:")

whileRot_flag:

tmp=ro_encode.Rot_Deal()

iftmp!=globalCounter:

globalCounter=tmp

InPwd_list[count]=globalCounter

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

ifro_encode.Rot_SW():

InPwd_list.append(globalCounter)

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

count=count+1

ifcount==(len(password_list)-1):

ifInPwd_list==password_list:

LCD_DISP1='PASSWORDOK'

LCD1602.write(0,0,LCD_DISP1)

break

else:

print('密码错误,请重新输入!')

count=0

globalCounter=0

InPwd_list=[0]

LCD1602.write(0,1,"")

if__name__=="__main__":

ro_encode.init()

LCD1602.init()

Rot_thread()8.将LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”,当用户连续输入3次错误后,锁定输入密码功能,并提示用户无法使用保险箱功能,在液晶屏上显示该英文字符提示。importRPi.GPIOasGPIO

importtime

#引用模块类库

importro_encode

importLCD1602

Rot_flag=True

globalCounter=0

#当前密码

password_list=[0,0,0,0,0,0,0,0]

InPwd_list=[0]

errors_num=0

defRot_thread():

globalerrors_num

globalglobalCounter

globalpassword_list

globalInPwd_list

globalcount

LCD1602.init()

LCD1602.write(0,0,"InputPassword:")

whileRot_flag:

tmp=ro_encode.Rot_Deal()

iftmp!=globalCounter:

globalCounter=tmp

InPwd_list[count]=globalCounter

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

ifro_encode.Rot_SW():

InPwd_list.append(globalCounter)

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

count=count+1

ifcount==(len(password_list)-1):

ifInPwd_list==password_list:

LCD_DISP1='PASSWORDOK'

LCD1602.write(0,0,LCD_DISP1)

break

else:

print('密码错误,请重新输入!')

errors_num+=1

count=0

globalCounter=0

InPwd_list=[0]

LCD1602.write(0,1,"")

iferrors_num>3:

LCD1602.write(0,0,"Exittheprogram")

Rot_flag=False

if__name__=="__main__":

ro_encode.init()

LCD1602.init()

Rot_thread()9.将超声波模块,LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,实现效果如下:当有人接近时才可以进行密码输入功能,如果无人接近则锁定密码输入功能用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”importRPi.GPIOasGPIO

importtime

#引用模块类库

importro_encode

importLCD1602

importsupersonic

Rot_flag=False

globalCounter=0

#当前密码

password_list=[0,0,0,0,0,0,0,0]

InPwd_list=[0]

errors_num=0

distance_min=0.2

defRot_thread():

globalerrors_num

globalglobalCounter

globalpassword_list

globalInPwd_list

globalcount

LCD1602.init()

LCD1602.write(0,0,"InputPassword:")

whileRot_flag:

tmp=ro_encode.Rot_Deal()

iftmp!=globalCounter:

globalCounter=tmp

InPwd_list[count]=globalCounter

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

ifro_encode.Rot_SW():

InPwd_list.append(globalCounter)

LCD_DISP2=''.join(str(x)forxinInPwd_list)

LCD1602.write(0,1,LCD_DISP2)

count=count+1

ifcount==(len(password_list)-1):

ifInPwd_list==password_list:

LCD_DISP1='PASSWORDOK'

LCD1602.write(0,0,LCD_DISP1)

break

else:

print('密码错误,请重新输入!')

errors_num+=1

count=0

globalCounter=0

InPwd_list=[0]

LCD1602.write(0,1,"")

iferrors_num>3:

LCD1602.write(0,0,"Exittheprogram")

Rot_flag=False

if__name__=="__main__":

ro_encode.init()

LCD1602.init()

globalRot_flag

Rot_thread()

s=supersonic.supersonic()

ifs<distance_min:

Rot_flag=True

print("有人进入!")

else:

Rot_flag=False10.将超声波模块,LCD1602模块,旋转编码器按照表4.1对应接口连接至开发板,并且编写程序,使用多线程的方式将传感器分到多个线程中执行完成以下功能:当有人接近时才可以进行密码输入功能,如果无人接近则锁定密码输入功能用旋转编码器模拟输入密码并把输入的密码用LCD1602模块显示出来,当输入的密码和设置的默认密码一样时LCD1602模块显示”PASSWORDOK”importRPi.GPIOasGPIO

importtime

#引用模块类库

importro_encode

importLCD1602

importsupersonic

importthreading

Rot_flag=True

globalCounter=0

#当前密码

password_list=[0,0,0,0,0,0,0,0]

InPwd_list=[0]

distance_min=0.2

defsuperconic_thread():

globalRot_flag

whileTrue:

#获取超声波模块数据

s=supersonic.supersonic()

ifs<distance_min:#当前超声波距离到达设置范围时

Rot_flag=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论