hknhc
Üye
- Katılım
- 17 Haz 2009
- Mesajlar
- 88
- Puanları
- 1
- Yaş
- 47
Merhaba,
Üstadlar bir bakarsa mutlu olacağım. ds18b20 den okuyacağımız sıcaklığa bağlı olarak step motoru kontrol etmek istiyoruz. Sıcaklık 24 derece üzerinde ise step motor 4 tur saat yönünde ve sıcaklık 19 dereceye düşene kadar sabit, 19 dereceye düşünce 4 tur saat yönüne ters hareket ettirerek sıcaklık 24 olana kadar sabit olarak kontrol etmek istiyorum. Kod yazma konusunda sıkıntılarım var. Sıcaklığı okutup ekrana yazdırdım lakin sıcaklığa bağlı olarak step motoru hareket ettiren kodu yazamıyorum.
//kullanılacak kütüphaneler
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#include <Stepper.h>
// Haberleşme kablosu Arduino'nun üçüncü bacağına bağlı
#define ONE_WIRE_BUS 3
// Herhangi bir OneWire cihazıyla iletişim kurabilmesi için OneWire örneği belirle
// (sadece Maxim/Dallas entegreleriyle değil)
LiquidCrystal Lcd(7, 8, 9, 10, 11, 12);
OneWire oneWire(ONE_WIRE_BUS);
// Onewire referansımızı Dallas Sıcaklık olarak belirle
DallasTemperature ds18b(&oneWire);
int motorPin1 = 2;
int motorPin2 = 4;
int motorPin3 = 5;
int motorPin4 = 6;
int delayTime = 1;
int tempMax = 24;
int tempmin = 19;
const int stepsPerRevolution = 48;
Stepper myStepper(stepsPerRevolution, 2, 4, 5, 6);
void setup(void)
{
Serial.begin(9600); //Seri haberleşmeye başla
ds18b.begin();
delay(1000);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("SICAKLIK : ");
lcd.setCursor(0, 1);
lcd.print("camlicaortaokulu");
pinMode (motorPin1, OUTPUT);
pinMode (motorPin2, OUTPUT);
pinMode (motorPin3, OUTPUT);
pinMode (motorPin4, OUTPUT);
myStepper.setSpeed(150);
}
void loop(void)
{
// Sıcaklığı almak için komut yolla
ds18b.requestTemperatures();
lcd.setCursor(10, 0);
lcd.println(ds18b.getTempCByIndex(0));
//Her bir saniyede değeri güncelle
delay(1000);
float temp = ds18b.getTempCByIndex(0);
if
(temp < tempmin) {
myStepper.step(4 * stepsPerRevolution);
}
else
{
myStepper.step(-4 * stepsPerRevolution);
}
Biraz daha düzenledim
Üstadlar bir bakarsa mutlu olacağım. ds18b20 den okuyacağımız sıcaklığa bağlı olarak step motoru kontrol etmek istiyoruz. Sıcaklık 24 derece üzerinde ise step motor 4 tur saat yönünde ve sıcaklık 19 dereceye düşene kadar sabit, 19 dereceye düşünce 4 tur saat yönüne ters hareket ettirerek sıcaklık 24 olana kadar sabit olarak kontrol etmek istiyorum. Kod yazma konusunda sıkıntılarım var. Sıcaklığı okutup ekrana yazdırdım lakin sıcaklığa bağlı olarak step motoru hareket ettiren kodu yazamıyorum.
//kullanılacak kütüphaneler
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#include <Stepper.h>
// Haberleşme kablosu Arduino'nun üçüncü bacağına bağlı
#define ONE_WIRE_BUS 3
// Herhangi bir OneWire cihazıyla iletişim kurabilmesi için OneWire örneği belirle
// (sadece Maxim/Dallas entegreleriyle değil)
LiquidCrystal Lcd(7, 8, 9, 10, 11, 12);
OneWire oneWire(ONE_WIRE_BUS);
// Onewire referansımızı Dallas Sıcaklık olarak belirle
DallasTemperature ds18b(&oneWire);
int motorPin1 = 2;
int motorPin2 = 4;
int motorPin3 = 5;
int motorPin4 = 6;
int delayTime = 1;
int tempMax = 24;
int tempmin = 19;
const int stepsPerRevolution = 48;
Stepper myStepper(stepsPerRevolution, 2, 4, 5, 6);
void setup(void)
{
Serial.begin(9600); //Seri haberleşmeye başla
ds18b.begin();
delay(1000);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("SICAKLIK : ");
lcd.setCursor(0, 1);
lcd.print("camlicaortaokulu");
pinMode (motorPin1, OUTPUT);
pinMode (motorPin2, OUTPUT);
pinMode (motorPin3, OUTPUT);
pinMode (motorPin4, OUTPUT);
myStepper.setSpeed(150);
}
void loop(void)
{
// Sıcaklığı almak için komut yolla
ds18b.requestTemperatures();
lcd.setCursor(10, 0);
lcd.println(ds18b.getTempCByIndex(0));
//Her bir saniyede değeri güncelle
delay(1000);
float temp = ds18b.getTempCByIndex(0);
if
(temp < tempmin) {
myStepper.step(4 * stepsPerRevolution);
}
else
{
myStepper.step(-4 * stepsPerRevolution);
}
Biraz daha düzenledim
Son düzenleme: