Arkadaşlar merhaba şöyle bir ödevim var yardım edermisiniz : Yağmur hızına göre (buton basma hızına) anahtarlama yapan yapan bir manyetik kontağın 1 veya 0 sürelerini arduino seri ekranına yazan yazılım ve donanım tasarımı yapınız.
kodların temelini oluşturdum sadece tek sorum var millis'i nasıl sıfırlayabiliriz?
#define buton 5 // arduino'da butonumuzun hangi bacağa bağlı olacağını belirler. int butonDurumu=0; //buton durumu negatif unsigned long Zaman; //0'dan 4.294.967.295 (2 ^ 32 – 1) aralığını depolar bunun nedeni yeniZaman değişkeni çok yüksek değerlere çıkacak onun için. int z=0,y=0; //değişken
void setup() { Serial.begin(9600); //Seri Portumuzu 9600 baud olarak ayarlıyoruz. pinMode(buton, INPUT); //buton pinini giriş veya çıkış şeklinde yapılandır.
}
void loop() {
butonDurumu=digitalRead(buton);//butonDurum değişkenini gerçekteki buton durumuna eşitle.
Zaman = millis(); //zamanı başlat
if(butonDurumu==1){ //eğer butona basıldıysa gir
if(butonDurumu==1 && z==0) //eğer butona basıldıysa ve z değişkeni 0 ise gir { z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için) if( z==1) //z=1 ise gir { Zaman=0; //Zaman değişkenini 0'a eşitle (ilk defa basıldığı zaman süreyi 0 vermek için yapıldı.)
Serial.print("Yagmur Hizi : "); //ekrana yaz Serial.println(Zaman); //ekrana Zaman değişkeninin değerini çek Serial.println("Durum : Yagmiyor");//ekrana yaz Serial.println("Yagmur Baslatiliyor...");//ekrana yaz Serial.println("*****************************");//ekrana yaz z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için) Zaman = millis(); //zamanı başlat (if'e girmek için zamanı 0 ladık bu yüzden bi seferliğe mahsus bu if içinde zamanı tekrar başlattık) } } y=Zaman/1000; //dönüşüm sayesinde artık değerimizi ms cinsinden değil saniye cinsinden görüyoruz if(y<=0) //y değişkeni 0'a eşit veya kücükse gir (1000ms=1sn) ilk değerlerimiz 1sn'den kücük değerler olduğu için onlarıda yazmak için yazılan bir kod. {
Serial.print("Salisede Dusen Damla Miktari : ");//ekrana yaz Serial.println(Zaman); //burada y yi değilde Zaman değişkenini çektim bunun nedeni ekrana ms cinsinden yazdırmak.
} if(y>0 && z==2) //eğer y değişkeni 1 değerinden büyük ve z değişkeni 2 ise gir { Serial.println("*****************************"); //ekrana yaz z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için) } if(y>0) { Serial.print("Saniyede Dusen Damla Miktari : ");//ekrana yaz Serial.println(y);//ekrana Zaman değişkeninin değerini çek if( y <= 15) //eğer zaman 15'ten kücük veya eşitse gir { Serial.println("Durum : Seyrek Yagis "); //ekrana yaz } }
if(y >15 && z==3) //eğer zaman 15 değerinden büyük ve z değişkeni 3 ise gir { Serial.println("****************************"); //ekrana yaz
z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için) } if(y >15) //eğer zaman 15 değerinden büyük ise gir {
Serial.println("Durum : Saganak Yagis"); //ekrana yaz }
}
}
1. sayfa
Hizmet kalitesi için çerezleri kullanabiliriz, DH'yi kullanırken depoladığımız çerezlerle ilgili veri politikamıza gözatın.
kodların temelini oluşturdum sadece tek sorum var millis'i nasıl sıfırlayabiliriz?
#define buton 5 // arduino'da butonumuzun hangi bacağa bağlı olacağını belirler.
int butonDurumu=0; //buton durumu negatif
unsigned long Zaman; //0'dan 4.294.967.295 (2 ^ 32 – 1) aralığını depolar bunun nedeni yeniZaman değişkeni çok yüksek değerlere çıkacak onun için.
int z=0,y=0; //değişken
void setup() {
Serial.begin(9600); //Seri Portumuzu 9600 baud olarak ayarlıyoruz.
pinMode(buton, INPUT); //buton pinini giriş veya çıkış şeklinde yapılandır.
}
void loop() {
butonDurumu=digitalRead(buton);//butonDurum değişkenini gerçekteki buton durumuna eşitle.
Zaman = millis(); //zamanı başlat
if(butonDurumu==1){ //eğer butona basıldıysa gir
if(butonDurumu==1 && z==0) //eğer butona basıldıysa ve z değişkeni 0 ise gir
{
z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için)
if( z==1) //z=1 ise gir
{
Zaman=0; //Zaman değişkenini 0'a eşitle (ilk defa basıldığı zaman süreyi 0 vermek için yapıldı.)
Serial.print("Yagmur Hizi : "); //ekrana yaz
Serial.println(Zaman); //ekrana Zaman değişkeninin değerini çek
Serial.println("Durum : Yagmiyor");//ekrana yaz
Serial.println("Yagmur Baslatiliyor...");//ekrana yaz
Serial.println("*****************************");//ekrana yaz
z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için)
Zaman = millis(); //zamanı başlat (if'e girmek için zamanı 0 ladık bu yüzden bi seferliğe mahsus bu if içinde zamanı tekrar başlattık)
}
}
y=Zaman/1000; //dönüşüm sayesinde artık değerimizi ms cinsinden değil saniye cinsinden görüyoruz
if(y<=0) //y değişkeni 0'a eşit veya kücükse gir (1000ms=1sn) ilk değerlerimiz 1sn'den kücük değerler olduğu için onlarıda yazmak için yazılan bir kod.
{
Serial.print("Salisede Dusen Damla Miktari : ");//ekrana yaz
Serial.println(Zaman); //burada y yi değilde Zaman değişkenini çektim bunun nedeni ekrana ms cinsinden yazdırmak.
}
if(y>0 && z==2) //eğer y değişkeni 1 değerinden büyük ve z değişkeni 2 ise gir
{
Serial.println("*****************************"); //ekrana yaz
z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için)
}
if(y>0)
{
Serial.print("Saniyede Dusen Damla Miktari : ");//ekrana yaz
Serial.println(y);//ekrana Zaman değişkeninin değerini çek
if( y <= 15) //eğer zaman 15'ten kücük veya eşitse gir
{
Serial.println("Durum : Seyrek Yagis "); //ekrana yaz
}
}
if(y >15 && z==3) //eğer zaman 15 değerinden büyük ve z değişkeni 3 ise gir
{
Serial.println("****************************"); //ekrana yaz
z=z+1; //z değişkenini 1 arttır (birdaha bu if'e girmemesi için)
}
if(y >15) //eğer zaman 15 değerinden büyük ise gir
{
Serial.println("Durum : Saganak Yagis"); //ekrana yaz
}
}
}