Ich benutze Arduino Uno in meinem Projekt: Einer ist ein Master und der andere ist ein Slave. Ich sende Daten vom Master zum Slave mit I2C. Ich muss float senden, aber da I2C nur char senden kann, bin ich verpflichtet, Float in String zu transformieren, dann Zeichen für Zeichen zu senden und sie im Slave zusammenzusetzen.Arduino globale Variable mit I2C und LCD
Das Problem, das ich hatte, ist, deklariere ich die Variable (in der Slave), die Float Empfangen und assumbling vom Master wie eine globale Variable enthalten, und ich muss es in meinem Code in der Slave verwenden, aber Mein Problem ist, dass es immer als 0 gedruckt wird, und es gibt nicht den richtigen Wert davon.
Der Code Ich verwende ist:
#include <LCD16x2.h>
#include <Wire.h>
LCD16x2 lcd;
int buttons;
int sensorPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
float numOut=0; // The Global Variable
int comp=1 ;
String wordd = "";
void setup()
{
Wire.begin(8); // join i2c bus with address #8
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
lcd.lcdGoToXY(1,1);
lcd.lcdClear();
lcd.lcdWrite("EG ");
lcd.lcdGoToXY(7,1);
lcd.lcdWrite(numOut,3);
}
void loop()
{
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
wordd = "";
int x = Wire.read();
for (int i=0; i<=x; i++)
{
char c = Wire.read();
wordd += c;
}
numOut = wordd.toFloat();
Serial.println(numOut,3); // print the integer
}
Ich muss wissen, wie das Ergebnis der globalen Variablen „numOut“, um es in meinem Code zu verwenden.
Vielen Dank im Voraus. !!
Versuchen Sie, 'float numOut = 0;' in 'volatile float numOut = 0;' zu ändern und 'String wordd =" ";' in 'volatile String wordd =" ";' zu ändern, um nicht richtig optimiert zu werden. – MikeCAT
Es funktioniert nicht auch:/!! –
Mögliche Duplikate von [Globale Variable Arduino] (http://StackOverflow.com/Questions/37648796/Global-Variable-arduino) ** Stellen Sie keine Frage erneut! ** – Olaf