با استفاده از یک نمایشگر 7 قسمتی دوگانه، یک سنسور دمای DS18B20 و چند رجیستر شیفت متوجه شدم که می توانم یک دماسنج دیجیتال بسازم.
مرحله 1: سنسور دما
سنسوری که من استفاده می کنم DS18B20 است، این یک سنسور 3 پین است که فقط به یک پایه ورودی از آردوینو نیاز دارد. چندین حسگر را می توان به هم متصل کرد، با این حال من فقط از یکی برای این پروژه استفاده می کنم. همانطور که در مورد بسیاری از سنسورهای مختلف، یک کتابخانه مفید وجود دارد که دریافت دما بر حسب سانتیگراد یا فارنهایت را بسیار آسان می کند، این کتابخانه Dallas_Temperature در اینجا و برگه مشخصات سنسور موجود در maxim است.
برای اتصال آن به آردوینو، پایه زمین سنسور را به پایه زمین آردوینو وصل کنید، یک مقاومت 4.7k بین پایه 2 و پایه 3 روی سنسور قرار دهید، پایه 3 را به 3.3 ولت از آردوینو وصل کنید و سپس پایه 2 را وصل کنید. به ورودی دیجیتال در آردوینو. پس از انجام این کار، ما آماده خواندن دما هستیم!
مرحله 2: کنترل صفحه نمایش
من انتخاب کردم که از یک 7 سگمنت دوگانه استفاده کنم، مدت زیادی طول نکشید تا پینهای خروجی را بفهمم، با این حال یک مشکل این بود که اگر آردوینو مستقیماً آن را وصل کنم، تعداد پینهایی که این مورد نیاز دارد، یک عدد 16 بزرگ بود. شیفت رجیسترهای متصل به هم این می تواند تعداد پایه های مورد نیاز را تنها به 3 کاهش دهد، زیرا دو رجیستر شیفت تنها به 3 پایه نیاز دارند و با اتصال به یکدیگر 16 خروجی موازی ارائه می دهند.
مرحله 3: کنار هم قرار دادن آن
کدی که من قرار داده ام در انتهای این پست است. اساساً کتابخانههای دما را تنظیم میکند، دما را میخواند و سپس آن را در شیفت ثباتها قرار میدهد.
#include OneWire.h
#include DallasTemperature.h
// تنظیم پین
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int tempPin = 7;
// کتابخانه برای اتصال به سنسور
OneWire oneWire (tempPin);
DallasTemperature tempSens(&oneWire);
// نویسهها برای نمایش در نمایشگر 7 قسمتی 0-9
بایت numberSet[10] = {
B01111011, B01000001, B00110111, B01100111, // 0,1,2,3
B01001101, B01110101, B01001101, B0110101, B01001101, B0110101, 4،5 ,6,7
B01111111, B01101111 // 8,9
};
void setup() {
// init serial
Serial.begin(9600);
// شروع سنسور دما
tempSens.begin();
// تنظیم حالت های پین برای رجیسترهای شیفت
pinMode(latchPin, OUTPUT);
pinMode (myClockPin، OUTPUT)؛
pinMode (myDataPin، OUTPUT)؛
}
آردوینو