float value = 1.1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
value = value - 0.1; // تقليل القيمة بمقدار 0.1 في كل دورة
if (value == 0)
{
Serial.println("The value is exactly zero");
}
else if (almostEqual(value, 0))
{
Serial.print("The value ");
Serial.print(value, 7); // الطباعة إلى 7 أرقام عشرية
Serial.println(" is almost equal to zero, restarting countdown");
value = 1.1; // إعادة القيمة إلى 1.1
}
else
{
Serial.println(value); // طباعة القيمة الحالية
}
delay(250); // تأخير 250 مللي ثانية
}
// تعريف دالة التحقق من التقريب
bool almostEqual(float a, float b)
{
const float DELTA = .00001; // أقصى فرق بين القيمتين للتقريب
if (a == 0) return fabs(b) <= DELTA;
if (b == 0) return fabs(a) <= DELTA;
return fabs((a - b) / max(fabs(a), fabs(b))) <= DELTA;
}