sw-420例程代码

SW-420是一种常用的震动传感器模块。下面是一个基于Arduino的SW-420例程代码,用于检测震动并在控制台上输出相应的消息:

const int sensorPin = 2;  // 将SW-420模块的OUT引脚连接到Arduino的数字引脚2

void setup() {

  Serial.begin(9600);  // 初始化串口通信

  pinMode(sensorPin, INPUT);  // 设置传感器引脚为输入模式

}

void loop() {

  int sensorValue = digitalRead(sensorPin);  // 读取传感器引脚的电平值

  if (sensorValue == HIGH) {  // 如果检测到震动

    Serial.println("震动检测到!");  // 在串口上输出消息

    // 在这里可以添加其他你希望执行的代码

  }

  delay(100);  // 延迟一段时间,避免过于频繁地检测震动

}

这个例程通过读取SW-420模块的OUT引脚的电平值来检测震动。当传感器检测到震动时,它会在串口上输出消息"震动检测到!"。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是STM32与US-100超声波模块的代码: ``` #include "stm32f10x.h" #include "usart.h" #include "delay.h" #define TRIG GPIO_Pin_1 #define ECHO GPIO_Pin_2 void GPIO_Configuration(void); void TIM2_Configuration(void); float Get_distance(void); void USART_SendString(USART_TypeDef* USARTx, char* s); int main(void) { GPIO_Configuration(); TIM2_Configuration(); USART_Configuration(); delay_init(); float distance; char str[20]; while(1) { distance = Get_distance(); sprintf(str, "Distance: %.2fcm\r\n", distance); USART_SendString(USART1, str); delay_ms(500); } } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = TRIG; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = ECHO; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); } void TIM2_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_Cmd(TIM2, ENABLE); } float Get_distance(void) { float distance; uint16_t value; GPIO_SetBits(GPIOA, TRIG); delay_us(10); GPIO_ResetBits(GPIOA, TRIG); while(GPIO_ReadInputDataBit(GPIOA, ECHO) == RESET); TIM_SetCounter(TIM2, 0); while(GPIO_ReadInputDataBit(GPIOA, ECHO) == SET); value = TIM_GetCounter(TIM2); distance = (float)value / 58.0; return distance; } void USART_SendString(USART_TypeDef* USARTx, char* s) { while(*s) { while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); USART_SendData(USARTx, (uint16_t)(*s++)); } } ``` 使用该代码,需要先初始化GPIO引脚和定时器TIM2,然后在主函数中调用`Get_distance()`函数获取超声波测距的距离值,最后使用串口发送函数`USART_SendString()`将距离值发送到计算机上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南抖北快东卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值