完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
布置哪位大神可以帮下忙,我这边用的CC2530,现在能做到按下zigbee1的开关,点亮zigbee2的led1灯,和能做到用烟雾传感器控制zigbee1的led1灯,我现在想要达到传感器检测到烟雾之后zigbee1的led1灯亮,zigbee1的led1灯亮之后能够使zigbee2的led1灯亮,我是新学的,弄不出来,还请大神指教,这里附上代码
以下为烟雾传感器 #include #define uint unsigned int #define uchar unsigned char //定义控制LED灯的端口 #define LED1 P1_0 //LED1为P1.0口控制 #define AIR P2_0 //光敏为P2.0口控制 //函数声明 void Delayms(uint); //延时函数 void InitLed(void); //初始化LED1 void AirInit(); //光敏初始化 uchar AirScan(); //烟雾扫描程序 /**************************** 延时函数 *****************************/ void Delayms(uint xms) //i=xms 即延时i毫秒 { uint i,j; for(i=xms;i>0;i--) for(j=587;j>0;j--); } /**************************** LED初始化函数 *****************************/ void InitLed(void) { P1DIR |= 0x01; //P1_0定义为输出 LED1 = 1; //LED1灯熄灭 } /**************************** 按键初始化函数 *****************************/ void AirInit() { P2SEL &= ~0X01; //设置P20为普通IO口 P2DIR &= ~0X01; // 在P20口,设置为输入模式 P2INP &= ~0x01; //打开P20上拉电阻,不影响 } /**************************** 烟雾检测函数 *****************************/ uchar AirScan(void) { if(AIR==0) {Delayms(10); if(AIR==0) { return 1; // 无烟雾 } } return 0; //有烟雾 } /*************************** 主函数 ***************************/ void main(void) { InitLed(); //调用初始化函数 AirInit(); while(1) { if(AirScan()) //按键改变LED状态 LED1=1; //无烟雾,LED1灭掉 else LED1=0; //有烟雾,LED1点亮 } } 以下为无线点灯 #include #include #include #include #include #include #include "hal_mcu.h" #include "hal_button.h" #include "hal_rf.h" #include "util_lcd.h" #include "basic_rf.h" // Application parameters #define RF_CHANNEL 25 // 2.4 GHz RF channel // BasicRF address definitions #define PAN_ID 0x2007 #define SWITCH_ADDR 0x2520 #define LIGHT_ADDR 0xBEEF #define APP_PAYLOAD_LENGTH 1 #define LIGHT_TOGGLE_CMD 0 // Application states #define IDLE 0 #define SEND_CMD 1 // Application role #define NONE 0 #define SWITCH 1 #define LIGHT 2 #define APP_MODES 2 /*********************************************************************************** * LOCAL VARIABLES */ static uint8 pTxData[APP_PAYLOAD_LENGTH]; static uint8 pRxData[APP_PAYLOAD_LENGTH]; static basicRfCfg_t basicRfConfig; // Mode menu static menuItem_t pMenuItems[] = { #ifdef ASSY_EXP4618_CC2420 // Using Softbaugh 7-seg display " L S ", SWITCH, " LIGHT ", LIGHT #else // SRF04EB and SRF05EB "Switch", SWITCH, "Light", LIGHT #endif }; static menu_t pMenu = { pMenuItems, N_ITEMS(pMenuItems) }; #ifdef SECURITY_CCM // Security key static uint8 key[]= { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, }; #endif /*********************************************************************************** * LOCAL FUNCTIONS */ static void appLight(); static void appSwitch(); static uint8 appSelectMode(void); static void appLight() { //halLcdWriteLine(HAL_LCD_LINE_1, "Light"); //halLcdWriteLine(HAL_LCD_LINE_2, "Ready"); #ifdef ASSY_EXP4618_CC2420 halLcdClearLine(1); halLcdWriteSymbol(HAL_LCD_SYMBOL_RX, 1); #endif // Initialize BasicRF basicRfConfig.myAddr = LIGHT_ADDR; if(basicRfInit(&basicRfConfig)==FAILED) { HAL_ASSERT(FALSE); } basicRfReceiveOn(); // Main loop while (TRUE) { while(!basicRfPacketIsReady()); if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) { if(pRxData[0] == LIGHT_TOGGLE_CMD) { halLedToggle(1); } } } } static void appSwitch() { //halLcdWriteLine(HAL_LCD_LINE_1, "Switch"); //halLcdWriteLine(HAL_LCD_LINE_2, "Joystick Push"); //halLcdWriteLine(HAL_LCD_LINE_3, "Send Command"); #ifdef ASSY_EXP4618_CC2420 halLcdClearLine(1); halLcdWriteSymbol(HAL_LCD_SYMBOL_TX, 1); #endif // Initialize BasicRF basicRfConfig.myAddr = SWITCH_ADDR; if(basicRfInit(&basicRfConfig)==FAILED) { HAL_ASSERT(FALSE); } pTxData[0] = LIGHT_TOGGLE_CMD; // Keep Receiver off when not needed to save power basicRfReceiveOff(); // Main loop while (TRUE) { if( halButtonPushed()==HAL_BUTTON_1 ) { basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH); // Put MCU to sleep. It will wake up on joystick interrupt halIntOff(); halMcuSetLowPowerMode(HAL_MCU_LPM_3); // Will turn on global // interrupt enable halIntOn(); } } } void main(void) { uint8 appMode = NONE; // Config basicRF basicRfConfig.panId = PAN_ID; basicRfConfig.channel = RF_CHANNEL; basicRfConfig.ackRequest = TRUE; #ifdef SECURITY_CCM basicRfConfig.securityKey = key; #endif // Initalise board peripherals halBoardInit(); halJoystickInit(); // Initalise hal_rf if(halRfInit()==FAILED) { HAL_ASSERT(FALSE); } // Indicate that device is powered halLedClear(2); halLedClear(1); //appSwitch(); appLight(); HAL_ASSERT(FALSE); } |
|
相关推荐
1个回答
|
|
通信那边没问题??
|
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3257 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3905 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3412 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
3965 浏览 1 评论
20603 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
743浏览 2评论
928浏览 2评论
958浏览 1评论
1080浏览 1评论
359浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 20:42 , Processed in 0.860827 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号