Ich mache ein Projekt, in dem ich drei Float-Werte von einem Arduino zum anderen senden und diese Float-Werte in einem Array im empfangenden Arduino speichern soll. Während des Druckens der empfangenen Float-Werte kann ich nur die ersten zwei Ziffern im seriellen Monitor sehen.Float-Werte können nicht von einem Arduino zu einem anderen gesendet werden:
Ich bin ein Anfänger und weiß nicht, wie man die ganzen Float-Werte bekommt. Bitte helfen Sie mir mit dem Programm. Hier habe ich den Sender- und Empfängercode gepostet. Mittlers Code:
float transmit[3]={72.453444,83.345678,60}; //Values to be sent
void setup()
{
Serial.begin(115200);
int i;
for(i=0;i<3;i++)
{
Serial.write(transmit[i]);
}
}
void loop()
{
}
Receiver’s Code:
float received[3]; //create an float array
int i;
void setup()
{
Serial.begin(115200);
}
void loop()
{
while(Serial.available()>0)
{
for(i=0;i<=2;i++)
{
received[i]=(Serial.read());
delay(10);
}
Serial.println(received[0]);
Serial.println(received[1]);
Serial.println(received[2]);
}
}
Values received on Serial Monitor: 72 83 60
Vielen Dank im Voraus.
Vielen Dank für Ihre Arbeit. aber immer noch Fehler sowohl im Senden als auch Empfangen Programm .. In Sende-Programm habe ich den Fehler als "keine übereinstimmende Funktion für den Aufruf an 'Hardware serial :: write (float [3], unsigned int)'". – Krish
Im Empfänger-Programm habe ich den Fehler als "kann nicht konvertieren Float zu 'uint8_t *' in der Initialisierung". – Krish
@Krisch Ok, vielleicht mag es nicht implizite Besetzung. Versuchen Sie, die Zeiger explizit auf 'uint8_t *' zu setzen (siehe die Antwort seit ich den Code korrigiert habe; Sie müssen zwei Zeilen ändern - eine im Absender und eine im Empfänger) – frarugi87