Совершенно новый для программирования Arduino, поэтому я прошу прощения, если то, что я делаю в следующем коде, глупо:)
Я пишу функцию для пользовательского измерителя ветра.У меня очень странная «ошибка»: если я прокомментирую строку № 41 приведенного ниже кода, которая представляет собой просто «Serial.println» с любым текстом внутри, функция wind возвращается в цикл, fixed number: 8029.90.
Кроме того, переменная "Perimetros" оценивается как "0", что является ложным и приведет к тому, что возвращаемое значение функции "wind" будет делением с 0 знаменателем (таким образом,ошибка, а не «0»).
#include <time.h>
// Global Variables:
// function: 'loop'
int GeneralDelay = 1;
float Wind;
float Rain;
int ticktockRain;
String message;
// function: 'wind'
int RotateFirstTime = 0;
int RotateLastTime = 0;
int RotateTimeDelta = 0;
float Aktina = 11.3;
float ConvertedAktina = Aktina * 0.00001;
float Perimetros = ConvertedAktina*2.0*3.14159;
float RPM;
int WindSensor = 8;
int SampleTimeRPM = 5000;
float tempWind;
int flagWind = 0;
int WindRunningTimeSTART = 0;
int WindRunningTimeEND = 0;
void setup()
{
Serial.begin(9600);
pinMode(WindSensor, INPUT);
}
float wind(){
WindRunningTimeSTART = millis();
while (SampleTimeRPM > (WindRunningTimeEND- WindRunningTimeSTART)){
//Serial.print("SampleTimeRPM =");
//Serial.println(WindRunningTimeEND- WindRunningTimeSTART);
WindRunningTimeEND = millis();
if (digitalRead(WindSensor) == HIGH && flagWind == 0)
{
Serial.println("LITERALLY WHATEVER TEXT MAKES THIS CODE WORK");
RotateFirstTime = millis();
flagWind = 1;
}
if (digitalRead(WindSensor) == HIGH && flagWind == 1)
{
RotateLastTime = millis();
flagWind = 0;
}
RotateTimeDelta = (RotateLastTime - RotateFirstTime);
if (RotateTimeDelta > 0 && flagWind == 0)
{
RPM = (3600000/RotateTimeDelta*3.14159*1*Perimetros);
tempWind = RPM;
RPM = 0.0;
}
}
return(tempWind);
}
void loop(){
Wind = wind();
Serial.print("Wind: ");
Serial.println(Wind);
}
Если я просто раскомментирую эту конкретную строку, а «Serial.println ()» будет выполнен с любым текстом внутри (пустой текст не работает), тогдавсе расчеты, операции и общая логика функции "ветер" выполнены отлично и на 100% правильно !!!
Мой вопрос: на "digitalRead" влияют какие-либо средства, из "Serial.функции print "или" Serial.println "?
Заранее благодарим вас за любые предложения, которые могут у вас возникнуть по этому странному вопросу, и извините, если я задам что-то очевидное!