如何使用xbee

时间:2016-05-31 05:55:14

标签: arrays arduino xbee

我希望在AT模式下使用xbee将一个存储在数组中的三个浮点值(例如:11.123456,77.123456,60.00)从一个arduino发送到另一个arduino。而且我还希望将这些接收到的值再次存储在一个数组中。

请帮我解释一下代码。

发射器代码:

void setup()
{
Serial.begin(115200);
Serial.write((uint8_t*)transmit, 3 * sizeof(float));
}
void loop()
{
   float transmit[3]={72.453444,83.345678,60}; //Values to be sent
}

接收者代码:

  #include <SoftwareSerial.h>
 #include <TinyGPS.h>
 TinyGPS gps;
 SoftwareSerial serialgps(2,3);
 #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 6,5, 4);
float b[3],latitude, longitude; 
int i;
void setup() 
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("  SMART ENGINE");
 delay(2000);
lcd.clear();

lcd.setCursor(0,0);
lcd.print("Happy Journey");
delay(1000); 
} 

void loop()
{
if(serialgps.available()>0)
{
 {
   Gpsgetdata();
 }

      if(Serial.available() >= 3 * sizeof(float))
        {
          Serialavailable();
        }
 }
 }

void Gpsgetdata()
{
int c = serialgps.read(); 
if(gps.encode(c)) 
lcd.print("Aquiring Location"); 
 {
gps.f_get_position(&latitude, &longitude);
}
}


void Serialavailable()
{
lcd.setCursor(0,0);
{
    uint8_t *recv_bytes = (uint8_t*)b;
    for(i=0; i < 3 * sizeof(float); i++)
    {
        recv_bytes[i] = Serial.read();
    }
 int a=0;
 float lati=b[0];
 float lon =b[1];
 a=b[2];
 delay(1000);
 if(a>=10&&lati>=10&&lon>=10)
 {
    lcd.clear();  
 for(int z=b[2];z>=15;z--)
 {
    lcd.setCursor(0,0);
    lcd.print("Please wait for:");
      lcd.setCursor(4,1);
        lcd.print("Seconds");
          lcd.setCursor(0,1);
           lcd.print(z);
            delay(1000);
 }
      }
}
while(Serial.available())
Serial.read();
lcd.clear();
setup();

}

0 个答案:

没有答案