Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Human Body Infrared Smoke Temperature Alarm System with Arduino, for more details: http://www.instructables.com/id/Human-Body-Infrared-Smoke-Temperature-Alarm-System/
- the code is as following:
- the receiving part:
- /**
- @brief nRF905 RX Demo, by elechouse.
- */
- #include <NRF905.h>
- #include <SPI.h>
- #include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- #define BUF_LEN 32
- #define CONF_LEN 10
- #define NRF905_CSN 4
- int num[10]={0};
- int count=0;
- int count_dis=0;
- unsigned char table[10]={'0','1','2','3','4','5','6','7','8','9'};
- unsigned char write_config_buf[CONF_LEN]={
- 0x76, //CH_NO,868.4MHZ
- 0x0E, //output power 10db, resend disable, Current Normal operation
- 0x44, //4-byte address
- 0x20,0x20, //receive or send data length 32 bytes
- 0xCC,0xCC,0xCC,0xCC, //receiving address
- 0x58, //CRC enable,8bit CRC,external clock disable,16MHZ Oscillator
- };
- unsigned char rx_buf[BUF_LEN]= {0};
- unsigned char read_config_buf[CONF_LEN];
- unsigned char rx_address[4]= {0xcc,0xcc,0xcc,0xcc};
- void putstring(unsigned char *str)
- {
- while(*str){
- Serial.write(*str++);
- }
- }
- LiquidCrystal_I2C lcd(0x27,16,2);
- void setup()
- {
- //num[0]=12;
- char i;
- pinMode(13, OUTPUT);
- pinMode(22,INPUT);
- pinMode(23,INPUT);
- pinMode(24,INPUT);
- lcd.init(); // initialize the lcd
- // Print a message to the LCD.
- lcd.backlight();
- lcd.setCursor(0,0);
- lcd.print("HELLO!");
- pinMode(10, OUTPUT); // make sure SPI works
- pinMode(NRF905_CSN,OUTPUT);
- nrf905=NRF905(NRF905_CSN);
- /** pin/port configuration */
- nrf905.init();
- /** register configuration */
- // user self-defined configuration
- // nrf905.write_config(write_config_buf);
- /**
- default configuration, need to specify frequency
- choose Z-Wave frequency band, support :
- US 908.42Mhz
- EUROPE 868.42MHz
- AFRICA 868.42MHz
- CHINA 868.42MHz
- HK 919.82MHz
- JAPAN 853.42MHz
- AUSTRALIA 921.42MHz
- NEW_ZEALAND 921.42MHz
- BRASIL 921.42MHz
- Russia 896MHz
- */
- nrf905.write_config(CHINA);
- /** read register configuration, check register value written */
- nrf905.read_config(read_config_buf);
- /** serial communication configurate */
- Serial.begin(9600);
- /** test configuration */
- for(i=0; i<CONF_LEN; i++){
- Serial.print(read_config_buf[i],HEX);
- Serial.print(' ');
- }
- }
- void loop()
- {
- nrf905.RX(rx_buf);
- //putstring(rx_buf);
- if(*rx_buf)
- {if(rx_buf[0]!='K')
- {
- if(count==10)
- count=0;
- num[count]=((int)rx_buf[0]-48)*10+((int)rx_buf[1]-48);
- //num[0]=12;
- count++;
- digitalWrite(13,HIGH);
- delay(10);
- digitalWrite(13,LOW);
- }
- Serial.write( '*');;
- //Serial.write(table[num[1]/10]);
- //Serial.write( table[num[1]%10]);
- // Serial.write(rx_buf[0]/10);
- // Serial.write( rx_buf[0%10]);
- }
- rx_buf[0]=0;
- rx_buf[1]=0;
- keyscan();
- }
- void keyscan()
- {
- if(digitalRead(22) == LOW)
- {
- count_dis=0;
- //xianshishuzu
- lcd.setCursor(0,0);
- lcd.print("num:T");
- //lcd.print((char)table[count_dis/10]);
- lcd.print((char)table[count_dis%10]);
- lcd.setCursor(12,1);
- lcd.print((char)table[num[count_dis]/10]);
- lcd.print((char)table[num[count_dis]%10]);
- while(!digitalRead(22));
- }
- if(digitalRead(23) == LOW)
- {
- count_dis++;
- if(count_dis==10)
- count_dis=0;
- //xianshishuzu
- lcd.setCursor(0,0);
- lcd.print("num:T");
- //lcd.print((char)table[count_dis/10]);
- lcd.print((char)table[count_dis%10]);
- lcd.setCursor(12,1);
- lcd.print((char)table[num[count_dis]/10]);
- lcd.print((char)table[num[count_dis]%10]);
- while(!digitalRead(23));
- }
- if(digitalRead(24) == LOW)
- {
- //xianshishuz
- num[count_dis]=0;
- count_dis++;
- if(count_dis==10)
- count_dis=0;
- lcd.setCursor(0,0);
- lcd.print("num:T");
- //lcd.print((char)table[count_dis/10]);
- lcd.print((char)table[count_dis%10]);
- lcd.setCursor(12,1);
- lcd.print((char)table[num[count_dis]/10]);
- lcd.print((char)table[num[count_dis]%10]);
- while(!digitalRead(24));
- }
- }
- the sending part:
- /**
- @brief nRF905 TX Demo, by elechouse.
- */
- #include <Wire.h>
- #include <NRF905.h>
- #include <SPI.h>
- #include <LiquidCrystal_I2C.h>
- #define BUF_LEN 32
- #define CONF_LEN 10
- #define TrigPin 8
- #define EchoPin 9
- #define NRF905_CSN 4
- unsigned char table[10]={'0','1','2','3','4','5','6','7','8','9'};
- unsigned char tx_buf[BUF_LEN]= "";
- unsigned char read_config_buf[CONF_LEN];
- byte tx_address[4]= {0xcc,0xcc,0xcc,0xcc};
- int num=0;
- char flag=0;
- LiquidCrystal_I2C lcd(0x27,16,2);
- void setup()
- {
- unsigned char i;
- pinMode(A1,INPUT);
- pinMode(A2,INPUT);
- pinMode(A3,INPUT);
- pinMode(9,INPUT);
- pinMode(13, OUTPUT);
- lcd.init(); // initialize the lcd
- // Print a message to the LCD.
- lcd.backlight();
- lcd.setCursor(0,0);
- lcd.print("HELLO!");
- pinMode(10, OUTPUT); // make sure SPI works
- pinMode(NRF905_CSN,OUTPUT);
- nrf905=NRF905(NRF905_CSN);
- nrf905.init();
- /** register configuration */
- // user self-defined configuration
- // nrf905.write_config(write_config_buf);
- /**
- default configuration, need to specify frequency
- choose Z-Wave frequency band, support :
- US 908.42Mhz
- EUROPE 868.42MHz
- AFRICA 868.42MHz
- CHINA 868.42MHz
- HK 919.82MHz
- JAPAN 853.42MHz
- AUSTRALIA 921.42MHz
- NEW_ZEALAND 921.42MHz
- BRASIL 921.42MHz
- Russia 896MHz
- */
- nrf905.write_config(CHINA);
- nrf905.read_config(read_config_buf);
- Serial.begin(9600);
- for(i=0; i<10; i++)
- {
- Serial.print(read_config_buf[i],HEX);
- Serial.print(' ');
- }
- tx_buf[12] = '0';
- }
- void loop()
- {
- keyscan();
- num_send();
- delay(15);
- }
- void keyscan()
- {
- if(digitalRead(A1) == LOW)
- {
- flag=0;
- //xainshicall
- lcd.setCursor(0,0);
- lcd.print("num:");
- lcd.print((char)table[num/10]);
- lcd.print((char)table[num%10]);
- lcd.setCursor(9,1);
- lcd.print("call ");
- while(!digitalRead(A1));
- }
- if(digitalRead(A2) == LOW)
- {
- num++;
- lcd.setCursor(0,0);
- lcd.print("num:");
- lcd.print((char)table[num/10]);
- lcd.print((char)table[num%10]);
- while(!digitalRead(A2));
- }
- if(digitalRead(A3) == LOW)
- {
- num--;
- lcd.setCursor(0,0);
- lcd.print("num:");
- lcd.print((char)table[num/10]);
- lcd.print((char)table[num%10]);
- while(!digitalRead(A3));
- }
- if(digitalRead(9) == LOW)
- {
- flag=1;
- lcd.setCursor(0,0);
- lcd.print("num:");
- lcd.print((char)table[num/10]);
- lcd.print((char)table[num%10]);
- //xianshicalling
- lcd.setCursor(9,1);
- lcd.print("calling");
- while(!digitalRead(9));
- }
- }
- void num_send()
- {
- if(flag==1)
- {
- flag=0;
- tx_buf[0]=table[num/10];
- tx_buf[1]=table[num%10];
- nrf905.TX(tx_buf);
- }
- if(flag==0)
- {
- tx_buf[0]='K';
- tx_buf[1]=1;
- nrf905.TX(tx_buf);
- delay(10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement