
قمت بتعديل الرقم 5000 الى 500 فكانت النتائج كما يلي

وهذا هو الكود الذي كتبته بناء على مشاركتك وتوصيتك
كود:
int val;
int tempPin = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(tempPin);
float mv = (val/1024.0 )* 500;
float cel = mv /10;
Serial.print("Temperature = ");
Serial.print(cel);
Serial.print("*c");
Serial.println();
delay(1000);
}
أشكرك مجددا
|
أخي لا شكر على واجب والفائدة حاصلة إن شاء الله للجميع.
500 هي ناتج قسمة 5000 على 10 يعني إذا استخدمنا هذا السطر:
كود:
float mv = (val/1024.0 )* 500;
يصبح هذا السطر لاغيا :
هذا المفروض.
هذا يعني أن التعليمة التالية في برنامجك الأول كافية:
كود:
temp = temp * 0.48828125;
وهذه المفروض أنها زائدة :
وهذا راجع لطريقة عمل الحساس فهو يعطي 10 ميللي فولت مقابل 1° C
علما أن الجهد المرجعي للمحول أنالوج / ديجتال هو 5 فولت اي 5000 ميللي فولت
ومتغير تخزين ناتج التحويل هو عدد من 11 بت.
اي أن ناتج التحويل يمكن أن يكون عددا يبدأ من 0 الى 1023.
بعني هذا السطر وحده يكفي:
كود:
temp = temp * 0.48828125;
وهذا فعلا يعمل به في أمثلة بالميكروسي و بفلوكود ..