zigbee 无线发送数据,呼吸灯

news2024/11/22 11:43:17

控制端代码:

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h" 
#include "sensor_drv/sensor.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
/*****点对点通讯地址设置******/
#define RF_CHANNEL                11         // 频道 11~26
#define PAN_ID                    0x1111     //网络id 
#define MY_ADDR                   0xAAAA     //本机模块地址
#define SEND_ADDR                 0xBBBB     //发送地址
/**************************************************/

#define LED1 P1_0
#define LED2 P1_1
#define SW1  P1_2
#define FAN P1_7       //风扇
#define LIGHT P2_0     //照明灯

static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
}

/********************MAIN************************/


int keyFlag =0;//按键标志位,当为1时,启动

void keyScan(){
  if(SW1==0){
    halMcuWaitMs(10);
    if(SW1==0){
      keyFlag = 1-keyFlag;
      while(SW1==0);
    }   
  }
}

void flash(){    //闪烁,为了能够按键按下快速跳出程序,采用循环方式
  for(int i=0;i<25;i++){
    LED1 = 1;
    halMcuWaitMs(10);
    if(SW1==0) return;
  }
  for(int i=0;i<25;i++){
    LED1 = 0;
    halMcuWaitMs(10);
    if(SW1==0) return;
  }
}



void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
    
    P1DIR |= 0X83;  //设置P1_0和P1_1和P1_7引脚为输出模式,
    P2DIR |= 0X01;  //设置P2_0
    
    LED1 = 0;
    LED2 = 0; 
    
    uint8 buf[1];  //定义一个数组,发送数据
      
    while(1)
    {
    /* user code start */
      keyScan();
      if(keyFlag==1){
        buf[0] ='k';  //发送一个字节数据 ,'k' 表示开启 
        basicRfSendPacket(SEND_ADDR,buf,1);
        flash();  //开启闪烁
      }
      else if(keyFlag==0){
        buf[0] ='g';  //发送一个字节数据 ,'g' 表示关闭
        basicRfSendPacket(SEND_ADDR,buf,1);
        LED1 = 0;
        halMcuWaitMs(100);
      }
      
    /* user code end */
    }
}

 节点端代码:

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h" 
#include "sensor_drv/sensor.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
/*****点对点通讯地址设置******/
#define RF_CHANNEL                11         // 频道 11~26
#define PAN_ID                    0x1111     //网络id 
#define MY_ADDR                   0xBBBB     //本机模块地址
#define SEND_ADDR                 0xAAAA    //发送地址
/**************************************************/

#define LED1 P1_0
#define LED2 P1_1
#define SW1  P1_2
#define FAN  P1_7       //风扇
#define LIGHT P2_0     //照明灯

static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
}

/********************MAIN************************/


int keyFlag =0;//按键标志位,当为1时,启动

void keyScan(){
  if(SW1==0){
    halMcuWaitMs(10);
    if(SW1==0){
      keyFlag = 1-keyFlag;
      while(SW1==0);
    }   
  }
}

int circle = 600;

void pwm(){
  for(int i=0;i<circle;i++){
    LED1 =1;
    halMcuWaitUs(i);
    LED1 =0;
    halMcuWaitUs(circle-i);
    if(SW1==0) return;     //如果按键按下,跳出PWM
  }
  for(int i=0;i<circle;i++){
    LED1 =0;
    halMcuWaitUs(i);
    LED1 =1;
    halMcuWaitUs(circle-i);
    if(SW1==0) return;   //如果按键按下,跳出PWM
  }
 
}


void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
    
    P1DIR |= 0X83;  //设置P1_0和P1_1和P1_7引脚为输出模式,
    P2DIR |= 0X01;  //设置P2_0为输出模式
    
    LED1 = 0;
    LED2 = 0; 
    
    uint8 buf[1];  //定义一个数组,发送数据
      
    while(1)
    {
    /* user code start */ 
      if(basicRfPacketIsReady()){
        basicRfReceive(buf,1,NULL);
        if(buf[0]=='k'){
          FAN = 1;
        }
        else if(buf[0]=='g'){
           FAN = 0;
        }
      }
      keyScan();
      if(keyFlag==1){
        pwm();  //呼吸灯
        LIGHT = 1;
      }
      else if(keyFlag==1){
        LED1 =0;
        LIGHT = 0;
      }
      
    /* user code end */
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器数据恢复】IBM服务器虚拟磁盘文件被误删除的数据恢复案例

服务器数据恢复环境&#xff1a; IBM X系列服务器柏科某型号存储。服务器上部署VMware ESXi虚拟主机&#xff0c;存储上存放虚拟机文件。 虚拟主机采用的Windows Server操作系统&#xff0c;部署宏桥和索菲2套应用&#xff0c;数据库是SQL Server。 虚拟磁盘&#xff1a;数据盘…

已经有MySQL了,干嘛还要学MongoDB?

三分钟的时间&#xff0c;通过本文你将学会 1.MongoDB主要特征 2.MongoDB优缺点&#xff0c;扬长避短 3.何时选择MongoDB&#xff1f;为啥要用它&#xff1f; 4.MongoDB与MySQL关键字对比 5.下载与安装MongoDB 6.Java整合MongoDB&#xff0c;实现增删改查 MongoDB和MySQ…

PyTorch-TensorBoard

一、介绍&#xff1a; TensorBoard&#xff1a;是一组用于数据可视化的工具。 SummaryWriter&#xff1a;类&#xff0c;用于提供一个高级API&#xff0c;并在给定目录中创建事件文件&#xff0c;向其中添加摘要和事件。 1. SummaryWriter(log_dir)&#xff1a;log_dir表示Tens…

MySQL 索引(w字)

目录 关于索引 关于磁盘 磁盘 ​扇区 结论 MySQL 与磁盘交互基本单位 MySQL 整体轮廓 结论 关于索引 建立测试表 关于 Page 为何IO交互要是 Page 理解单个Page 理解多个Page ​页目录 复盘一下 ​B树 ​B树 聚簇索引 VS 非聚簇索引 总结(重点) …

就业内推 | 地产行业招运维,最高30k*15薪,有住房交通补贴

01 宝能 &#x1f537;招聘岗位&#xff1a;网络运维高级工程师 &#x1f537;职责描述&#xff1a; 1、负责集团各数据中心和职场网络的设计规划、实施落地和持续优化&#xff1b; 2、负责集团网络的日常运维工作&#xff0c;如服务请求和变更的处理、网络相关故障解决&#…

JSP详解

JSP的概念&#xff1a; 概念&#xff1a;Java Serve Pages Java服务端页面 一种动态的网页技术&#xff0c;其中可以定义Html、css、js等静态内容。还可以定义Java代码的动态内容。 JSPHtmljava JSP的存在使我们可以不用在servlet里面用输出流一行一行的写字符串&#xff0…

拿下7家大厂offer后,整理出来的笔记.....

我第一次接触自动化是在2016年。那时刚毕业一年有余&#xff0c;组内一直做手工功能测试&#xff0c;大概在2018年9月&#xff0c;部门领导要求测试组引入自动化。组内之前从没有开展过任何自动化&#xff0c;测试主管安排了一个刚入职不久的研究生同事去研究。 当时自己内心还…

Jmeter性能测试 -3数据驱动实战

什么是数据驱动&#xff1f; 从数据文件中读取测试数据&#xff0c;驱动测试过程的一种测试方法。数据驱动可以理解为更高级的参数化。 特点&#xff1a;测试数据与测试代码分离&#xff1b;数据控制过程 好处&#xff1a;降低开发和维护成本&#xff0c;减少代码量&#xf…

原型设计工具

常见原型图设计工具 Sketch(国内外通用) 仅支持mac系统&#xff0c;无window系统软件。 Figma(国外) Figma是一个基于浏览器的协作式UI设计工具。 即时设计(国内) 墨刀(国内) 墨刀采用简便的拖拽连线操作&#xff0c;作为一款在线原型设计软件&#xff0c;墨刀支持云端保存…

Docker 设置国内镜像源

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到网络问题&#xff0c;此时可以配置国内的镜像加速来下载。Docker 官方和国内很多云服务商都提供了国内加速器服务&#xff0c;例如如下&#xff1a; 科大镜像&#xff1a;https://docker.mirrors.ustc.edu.cn/网易&#…

SpringSecurity 硅谷通用权限系统:权限管理

由于项目需要 快速入门一下 看的是这篇 比较新比较快 硅谷通用权限系统&#xff1a;权限管理 一、权限管理 1、权限管理介绍 每个系统的权限功能都不尽相同&#xff0c;各有其自身的业务特点&#xff0c;对权限管理的设计也都各有特色。不过不管是怎样的权限设计&#xff0c;大…

Flutter 笔记 | Flutter 容器组件

Padding 这个组件最能体现Flutter与其他UI框架的一个不同点&#xff0c;那就是在其他UI框架中padding基本都是作为组件的一个属性&#xff0c;例如在html中常见的布局标签都有padding属性&#xff0c;Android中也是如此&#xff0c;但是在Flutter中组件并没有一个叫padding的属…

财务共享时代企业数智化应用能帮我们做些什么?

随着企业规模的不断扩大和业务范围的逐步扩展&#xff0c;财务工作的难度和复杂度也在不断提高&#xff0c;传统的手工录入和处理方式呈现出流程长、效率低、易出错等问题。为了提升财务工作的效率和准确性&#xff0c;越来越多的企业开始利用数智化应用打造企业内部的财务数智…

初识web自动化测试,快速成长指南!

目录 自动化 说明 优点 自动化测试 自动化测试能解决什么问题&#xff1f; 相关知识 Web自动化测试 定义 什么Web项目适合做自动化测试? Web自动化测试在什么阶段开始? 所属分类 Web自动化测试工具选择 主流的Web自动化测试工具 Selenium 概念 特点 环境搭建…

防火墙直路部署,上下行连接交换机的主备备份组网

组 网 需 求 如图所示&#xff0c;企业的两台FW的业务接口都工作在三层&#xff0c;上下行分别连接二层交换机。上行交换机连接运营商的接入点&#xff0c;运营商为企业分配的IP地址为1.1.1.1。现在希望两台FW以主备备份方式工作。正常情况下&#xff0c;流量通过FW_A转发。当F…

前端线上接口503-nginx跨域proxy_pass;proxy_set_header

nginx大怨种 前端线上接口503-nginx跨域 前端线上接口503-nginx跨域 前提&#xff1a;vue项目本地接口通过proxy都可使用&#xff0c;但是项目部署在服务器上后发现所有接口出现503如下状况 简而言之&#xff1a;页面部署在域名为https://aa.bb.cc.com/vehicle/#/下&#xff0…

Rocky Linux 9 x86_64 OVF (sysin)

Rocky Linux 9 x86_64 OVF (sysin) 以社区方式驱动的企业 Linux 请访问原文链接&#xff1a;https://sysin.org/blog/rocky-linux-9-ovf/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Rocky Linux 9.0 (5.14.0-70.13.1.el9…

财务共享领先实践,看看他们是怎么做的

随着信息技术的快速发展&#xff0c;由于创新商业模式的出现&#xff0c;金融结构、操作策略和流程正在发生变化。大数据、云计算、人工智能、机器人流程自动化&#xff08;RPA&#xff09;等新兴技术正在应用于金融及财务领域&#xff0c;以优化财务管理流程并提高运营效率。财…

公司来了个测试开发,听说是00后,上来一顿操作给我看呆了...

5年测试&#xff0c;应该是能达到资深测试的水准&#xff0c;即不仅能熟练地开发业务&#xff0c;而且还能熟悉项目开发&#xff0c;测试&#xff0c;调试和发布的流程&#xff0c;而且还应该能全面掌握数据库等方面的技能&#xff0c;如果技能再高些的话&#xff0c;甚至熟悉分…

若依框架在未登录的情况下访问swagger3.0页面,出现弹窗的解决方法

若依框架在未登录的情况下访问swagger3.0页面&#xff0c;出现弹窗的解决方法 效果展示&#xff1a; 解决方法&#xff1a;在ShiorConfig.java类中找到shiroFilterFactoryBean方法&#xff0c;然后在filterChainDefinitionMap里面put你要过滤的地址&#xff0c;如下&#xff…