模块1:掌握气压传感器的工作原理,完成相关电路图的连接,并能够灵活应用气压传感器测量海拔高度
模块2:探究气压传感器在日常生活中的实际应用。
掌握气压传感器的工作原理,利用arduino进行 *** 作学习,并能测量出教室的海拔高度,学生了解气压传感器在日常生活中的实际应用。
1、激发学生对学习兴趣,培养学生勤思考爱动手的精神;
2、提高学生的动手实践能力和解决问题的能力;
3、培养学生的团队精神和合作交流学习的能力。
我们班有多少同学喜欢爬山呢?那你们在爬山的过程中,怎么知道自己到底爬了多高了?氏察小组讨论,看哪个组想的办法又准确又好!
以上方法呢都是很不错的选择,利用GPS定位系统是我们生活中比较常见的方法,但是由于技术水平的限制,GPS计算的海拔高度,一般误差都会有十米左右。而如果在树林里或者是在悬崖下面时,有时候甚至接收不到GPS卫星信号。这时候,我们就可以考虑测量气压,进而计算高度的方法来实现,而有的手歼旁茄机之所以有这个功能,是因为手机内部有气压传感器。
学生探索
交流分享
教学评价主体应包括,学生自评,小组合作评价以及教师评价三个方面
//舵机和超声波调试代码#include <Servo.h>
#include <Metro.h>
Metro measureDistance = Metro(50)
Metro sweepServo = Metro(20)
unsigned long actualDistance = 0
Servo myservo //创建舵机
int pos = 60
int sweepFlag = 1
int URPWM = 3//仔晌PWM输出0-25000us,每念隐锋50us代表1cm
int URTRIG= 10// PWM trigger pin PWM串口为10
uint8_t EnPwmCmd[4]={0x44,0x02,0xbb,0x01} // distance measure command 距离测量命令
void setup(){ // Serial initialization 串行初始化
myservo.attach(9) //舵机串口为9
Serial.begin(9600)// Sets the baud rate to 9600
SensorSetup()
}
void loop(){
if(measureDistance.check() == 1){
actualDistance = MeasureDistance()
// Serial.println(actualDistance)
// delay(100)
}
if(sweepServo.check() == 1){
servoSweep()
}
}
void SensorSetup(){
pinMode(URTRIG,OUTPUT)// A low pull on pin COMP/TRIG
digitalWrite(URTRIG,HIGH) // Set to HIGH
pinMode(URPWM, INPUT) // Sending Enable PWM mode command 发送使能控制模式命令
for(int i=0i<4i++){
Serial.write(EnPwmCmd[i])
}
}
int MeasureDistance(){// a low pull on pin COMP/TRIG triggering a sensor reading 触发传感器读数
digitalWrite(URTRIG, LOW)
digitalWrite(URTRIG, HIGH) // reading Pin PWM will output pulses读引脚脉宽调制将输出脉冲
unsigned long distance=pulseIn(URPWM,LOW)
if(distance==50000){ // the reading is invalid.阅读无效
Serial.print("Invalid")
}else{
distance=distance/携腔50 // every 50us low level stands for 1cm
}
return distance
}
void servoSweep(){
if(sweepFlag ){
if(pos>=60 &&pos<=120){
pos=pos+1 // in steps of 1 degree 1度角度的转动
myservo.write(pos)// tell servo to go to position in variable 'pos' 告诉舵机转动的角度
}
if(pos>119) sweepFlag = false // assign the variable again 重新分配变量
}else {
if(pos>=60 &&pos<=120){
pos=pos-1
myservo.write(pos)
}
if(pos<61) sweepFlag = true
}
}
////////////////////////////////////////////////////////////
需要加载一个Metro.h的库,这只是调试机器,余下的完全看你的发挥了,加上电机
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)