我希望在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();
}