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+++ 


Yorumlar

Bu blogdaki popüler yayınlar

MZ80 Sensörü ile Alarm(KIZIL ÖTESİ UZAKLIK SENSÖRÜ)

GOOGLE KENDİ ENERJİSİNİ KENDİ ÜRETİYOR!

Coşkun Taşdemir'e birkaç soru sorduk!