Arduino Bilgisi Olanlar Yardımcı Olabilir mi?
8
●92
- 19-05-2020, 13:30:41Merhabalar arduino ve sıcaklık sensörü aracılığıyla sıcaklığı ölçüp dereceyi displayde yazdırıyorum. Örneğin displayde görülen değer 25 dereceyi geçince arduinonun 4 numaralı çıkışındaki motor çalışsın, 25 derecenin altına düşünce dursun istiyorum. Display ekrana yazdırma vs kısmını ayarladım. Displayde yazan değeri nasıl okutup eğer>25, 4. porta çıkış ver kısmını yazabilirim? Yardımcı olur musunuz ?
- 19-05-2020, 13:37:00Hocam displayden değeri okumanıza gerek yok,
örneğin sıcaklık değerini int derece değişkeninde tutuyorsunuz diyelim
if (derece > 25) {
digitalWrite (5, HIGH);
}
else {
digitalWrite (5, LOW);
}
bunu yazmanız yeterli. Tabi kodları atarsanız daha sağlıklı yardımcı olurum - 19-05-2020, 13:40:41truvacreative adlı üyeden alıntı: mesajı görüntüleThirtySeven adlı üyeden alıntı: mesajı görüntüle
// include the library code: #include <LiquidCrystal.h> #include "DHT.h" // set the DHT Pin #define DHTPIN 8 // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); dht.begin(); // Print a message to the LCD. lcd.print("Sıcaklık: Nem:"); } void loop() { delay(500); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // read humidity float h = dht.readHumidity(); //read temperature in Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(f)) { lcd.print("ERROR"); return; } lcd.print(f); lcd.setCursor(7,1); lcd.print(h); }Kodlar bu şekilde genel bir düzenleme yapacağım fahrenheit değilde derece olarak çıkış alacağım. - 19-05-2020, 13:50:48motoru 5. pine bağlayamazsınız hocam, 5'de display bağlı. Motorun sağa dönüş pinini 6. pine, sola dönüş pinini 7. pine bağlanmş varsayarak
buyrun;
// include the library code: #include <LiquidCrystal.h> #include "DHT.h" // set the DHT Pin #define DHTPIN 8 // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); dht.begin(); lcd.print("Sıcaklık: Nem:"); pinMode (6, OUTPUT); //6. pinde motorun sağa dönüş pini pinMode (7, OUTPUT); //7. pinde motorun sola dönüş pini } void loop() { delay(500); lcd.setCursor(0, 1); float h = dht.readHumidity(); float f = dht.readTemperature(true); if (isnan(h) || isnan(f)) { lcd.print("ERROR"); return; } lcd.print(f); lcd.setCursor(7,1); lcd.print(h); if (f > 25) { digitalWrite(6, HIGH); //eğer sıcaklık 25 f'in üstündeyse motor sağa doğru döner digitalWrite(7, LOW); // motorun sola dönüşü kapalıdır. } else { digitalWrite(6, LOW); digitalWrite(7, LOW); } } - 19-05-2020, 13:54:51yukarıdaki arkadaşın dediği gibi sıcaklık değerini okuduğunuz değişkeni 25 derece için kontrol etmeniz gerek.
- 19-05-2020, 14:29:37readTemperature(true) olunca fahrenheit okuyordu readTemperature() olarak güncelledim. Bu durumda derece göstermesi gerekiyor. Malzeme siparişleri muhtemelen yarın gelmiş olacak ozaman deneyeceğimBaRBaRYaN adlı üyeden alıntı: mesajı görüntüle
// Kütüphane kodları #include <LiquidCrystal.h> #include "DHT.h" // Sıcaklı ve nem sensörü dht11'in pinini belirler. #define DHTPIN 8 // Displayin kütüphaneden veri okuması için gerekli pin başlatma numaraları LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { // Displayin sütun ve satır sayısını belirler. lcd.begin(16, 2); dht.begin(); // Vantilatör takılan motorun çıkış pini pinMode(7,OUTPUT); // Ekrandaki göstergeler lcd.print("Sıcaklık: Nem:"); } void loop() { delay(500); // Gösterge 1.satırda, Sayım değerleri ise 2.satırda göster lcd.setCursor(0, 1); // Nem Ölçümü float n=dht.readHumidity(); // Derece Ölçümü float s=dht.readTemperature(); // Derece 25'ten fazlaysa motoru çalıştır if (s>25) { digitalWrite (7, HIGH); } else { digitalWrite (7, LOW); } // Eğer NaN değer alınırsa ekranda hata yazacak. if (isnan(n) || isnan(s)) { lcd.print("HATA"); return; } lcd.print(s); lcd.setCursor(7,1); lcd.print(n); }Son hali bu şekilde - 19-05-2020, 14:46:44hocam malzemesiz de bazı şeyleri deneyebilirsiniz.
bunun için size 2 farklı site önereyim
...
1 TINKERCAD
3 boyutlu çizim ve arduino ile ilgili devreleri çizip deneyebilirsiniz. kodları bilgisayarınıza indirip arduino ya yükleyebilirsiniz. veya malzeme olmadan da devlerinizi deneyebilirsiniz. (tüm komponentleri desteklemiyor ama temel bir çok komponent var)

2. CIRCUITO.IO
Sürükle bırak mantığı ile mikrodenetleyiciyi seçip elemanları üzerine bıraktığınızda bağlantılarını bile kendi yaparak size deneyebileceğiniz temel kodları ve kütüphaneleri de ekleyerek indirilebilir bir paket halinda sunuyor.




