Arduino Kullanarak Denklem Çözümü
Herkese tekrardan Merhabalar! :) Her gün düzenli olarak yazı atmaya çalışıyorum. Tabii ki de çok yapılmamış projeleri! Neyse yazımıza geçelim. Başlıktan da anlayacağınız üzere konumuz "ARDUİNO KULLANARAK DENKLEM ÇÖZÜMÜ" İlk önce biraz konuşalım. Denklem tek bilinmeyenli denklem olacaktır. Denklemi Serial Monitor'e yazacaksınız. Size işlemleriyle beraber sonucu verecektir. Eğer denklemi yanlış yazarsanız "Anlamadim" diye mesaj alacaksınız :) 1/2'nin sonucu 0,5 fakat kodda öyle ayarlamadığım için 0,5 yazmıyor 0 yazıyor. İsterseniz bunu değiştirebilirsiniz. Hemen kodumuza geçelim. Yanlarında zaten açıklamalarını yazdım.
char bytes[256]; // Yazacağımız denklemi tutacak karakter dizisi
int led = 12; //Led'i 12. pine atıyoruz
void setup()// Ana program öncesi ayarları yapan fonksiyon
{
Serial.begin(9600); // Seri portı 9600 bps hızında ayarlıyoruz
Serial.println("*** Denklemi Yaziniz ***");// Bu olmasa da olur Serial Monitorü açtığımızda karşımıza gelecek yazı.
pinMode(led,OUTPUT);//Led'i OUTPUT yani enerjinin çıkışı olarak belirliyoruz.
}
void loop()// Ana program
{
if (Serial.available() > 0) { //Seri porttan veri geldiyse ve 0'dan büyükse asağıdaki kodu çalıştırıyor.
byte readSize = Serial.readBytesUntil(';', bytes, 256);// Seri porttan gelen veriyi bytes adlı diziye oku
bytes[readSize]=0;// Seri porttan gelen veriyi bytes adlı diziye oku
denklemcoz();// Programımızın adı
}
}
void denklemcoz()//
{
Serial.println(bytes);// Gelen veriyi yazdır
long bilinmeyen, bilinen, sonuc;//Kullanacağımız değişkenler
int readCount = sscanf(bytes, "%ldx+%ld=%ld", &bilinmeyen, &bilinen, &sonuc);// Denklemi oku
if (readCount != 3) {// 3 değişkeni de okuyamadıysa "Anlamadim!" yazısını yazdır
Serial.println("Anlamadim,Denklemi Dogru yazdigina emin misin Dostum?");//3 değişkeni de okuyamadıysa bu yazıyı yazdır.
digitalWrite(led,HIGH);//Led'i HIGH durumuna yani yanıcak şekile getir
delay(2000);//2 saniye bekle
digitalWrite(led,LOW);//Ledi söndür
delay(2000);//2 saniye bekle
return;//Fonksiyondan çık
}
Serial.print(sonuc,DEC);//Sonucu yazdır
Serial.print("-");//Sonuç-bilinen yerinde ki -
Serial.print(bilinen,DEC);//Bilinen sayı
Serial.print("=");//Sonuc-bilinen=bilinmeyenX burada ki = işareti
Serial.print(bilinmeyen,DEC);//bilinmeyen sayı
Serial.println("x");//Bilinmeyen'in sonuna gelen x örneğin 2x+4=8 x=2 burada ki X
long MatematikCandir = sonuc - bilinen;// MatematikCandir yani Sonuc sayı istediğiniz adı verebilirsiniz.
Serial.print(MatematikCandir,DEC);// MatematikCandir'ı yaz
Serial.print("=");//Sonuc=
Serial.print(bilinmeyen,DEC);//Bilinmeyen
Serial.println("x");//
Serial.print(MatematikCandir,DEC);//Bilinen
Serial.print("/");//Bilinen bölü
Serial.print(bilinmeyen,DEC);// Bilinen bölü bilinmeyen
Serial.println("=x");//=X
long MatematikHayattir=MatematikCandir/bilinmeyen;//Bilinmeyen =Bilinen/Bilinmeyen
Serial.print("x=");//
Serial.println(MatematikHayattir,DEC);//Bilinmeyen'in sonucunu yazdır
//MatematikHayattir=Bilinmeyen
//MatematikCandir=Sonuc
//www.eymenalpat.blogspot.com.tr ... Kopyalarımızdan Kaçınız.. :)
}
Bağlantılar Led'i yakmak için Ledin - bacağını GND'ye + bacağını 12. pine bağlıyoruz..
Eğer sorunuz olursa yorumlara yazabilirsiniz! Okuduğunuz için teşekkürler.. Yorum atmayı ve paylaşmayı unutmayın! Bizi Twitter'dan takip edebilirsiniz; @bilinmeyen905
+++ KODA YANLIŞ DENKLEM YAZINCA BELİRTEN LED EKLENDİ! +++
+++GÜNCEL+++
char bytes[256]; // Yazacağımız denklemi tutacak karakter dizisi
int led = 12; //Led'i 12. pine atıyoruz
void setup()// Ana program öncesi ayarları yapan fonksiyon
{
Serial.begin(9600); // Seri portı 9600 bps hızında ayarlıyoruz
Serial.println("*** Denklemi Yaziniz ***");// Bu olmasa da olur Serial Monitorü açtığımızda karşımıza gelecek yazı.
pinMode(led,OUTPUT);//Led'i OUTPUT yani enerjinin çıkışı olarak belirliyoruz.
}
void loop()// Ana program
{
if (Serial.available() > 0) { //Seri porttan veri geldiyse ve 0'dan büyükse asağıdaki kodu çalıştırıyor.
byte readSize = Serial.readBytesUntil(';', bytes, 256);// Seri porttan gelen veriyi bytes adlı diziye oku
bytes[readSize]=0;// Seri porttan gelen veriyi bytes adlı diziye oku
denklemcoz();// Programımızın adı
}
}
void denklemcoz()//
{
Serial.println(bytes);// Gelen veriyi yazdır
long bilinmeyen, bilinen, sonuc;//Kullanacağımız değişkenler
int readCount = sscanf(bytes, "%ldx+%ld=%ld", &bilinmeyen, &bilinen, &sonuc);// Denklemi oku
if (readCount != 3) {// 3 değişkeni de okuyamadıysa "Anlamadim!" yazısını yazdır
Serial.println("Anlamadim,Denklemi Dogru yazdigina emin misin Dostum?");//3 değişkeni de okuyamadıysa bu yazıyı yazdır.
digitalWrite(led,HIGH);//Led'i HIGH durumuna yani yanıcak şekile getir
delay(2000);//2 saniye bekle
digitalWrite(led,LOW);//Ledi söndür
delay(2000);//2 saniye bekle
return;//Fonksiyondan çık
}
Serial.print(sonuc,DEC);//Sonucu yazdır
Serial.print("-");//Sonuç-bilinen yerinde ki -
Serial.print(bilinen,DEC);//Bilinen sayı
Serial.print("=");//Sonuc-bilinen=bilinmeyenX burada ki = işareti
Serial.print(bilinmeyen,DEC);//bilinmeyen sayı
Serial.println("x");//Bilinmeyen'in sonuna gelen x örneğin 2x+4=8 x=2 burada ki X
long MatematikCandir = sonuc - bilinen;// MatematikCandir yani Sonuc sayı istediğiniz adı verebilirsiniz.
Serial.print(MatematikCandir,DEC);// MatematikCandir'ı yaz
Serial.print("=");//Sonuc=
Serial.print(bilinmeyen,DEC);//Bilinmeyen
Serial.println("x");//
Serial.print(MatematikCandir,DEC);//Bilinen
Serial.print("/");//Bilinen bölü
Serial.print(bilinmeyen,DEC);// Bilinen bölü bilinmeyen
Serial.println("=x");//=X
long MatematikHayattir=MatematikCandir/bilinmeyen;//Bilinmeyen =Bilinen/Bilinmeyen
Serial.print("x=");//
Serial.println(MatematikHayattir,DEC);//Bilinmeyen'in sonucunu yazdır
//MatematikHayattir=Bilinmeyen
//MatematikCandir=Sonuc
//www.eymenalpat.blogspot.com.tr ... Kopyalarımızdan Kaçınız.. :)
}
Bağlantılar Led'i yakmak için Ledin - bacağını GND'ye + bacağını 12. pine bağlıyoruz..
Eğer sorunuz olursa yorumlara yazabilirsiniz! Okuduğunuz için teşekkürler.. Yorum atmayı ve paylaşmayı unutmayın! Bizi Twitter'dan takip edebilirsiniz; @bilinmeyen905
+++ KODA YANLIŞ DENKLEM YAZINCA BELİRTEN LED EKLENDİ! +++
+++GÜNCEL+++
Yorumlar
Yorum Gönder
Hosgeldiniz!Yazimizi okudugunuz icin tesekkurler. Yorum birakmayi unutmayin.