/** @brief nRF905 TX Demo, by elechouse. */ #include #include #include #define BUF_LEN 32 #define CONF_LEN 10 #define TrigPin 8 #define EchoPin 9 #define NRF905_CSN 4 int distance; 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}; LiquidCrystal lcd(A1,A2,A3,A4,A5,10); void setup() { unsigned char i; pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); //Define the NO.6 pin as the data output pin //pinMode(6,OUTPUT); lcd.begin(A1,A3); lcd.setCursor(4,0); lcd.print('A'); lcd.print('r'); lcd.print('d'); lcd.print('u'); lcd.print('i'); lcd.print('n'); lcd.print('o'); 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() { int a,b,c; digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); // Test the width of the pulse and calculate the distance distance = pulseIn(EchoPin, HIGH) / 58; a=distance/100; b=distance%100/10; c=distance%10; tx_buf[0]=table[a]; tx_buf[1]=table[b]; tx_buf[2]=table[c]; tx_buf[3]='c'; tx_buf[4]='m'; tx_buf[5]='\r'; tx_buf[6]='\n'; /** transmit data packet with default TX Address */ nrf905.TX(tx_buf); lcd.setCursor(0,1); lcd.print('D'); lcd.print('i'); lcd.print('s'); lcd.setCursor(4,1); lcd.print(a); lcd.print(b); lcd.print(c); lcd.print('c'); lcd.print('m'); /** transmit data packet with specified TX Address */ // nrf905.TX(tx_buf, tx_address); // NOTE: TX_Address and RX_Address must be the same /** Count Sending times */ tx_buf[12]++; if(tx_buf[12] > '9'){ tx_buf[12] = '0'; } delay(500); }