Arduino İle TrigonoMETRE

Öğrencilerimizin matematik dersine  ilgilerini artırmak ve konuyu kavramalarına katkı sağlamak amacıyla hazırlanan bu materyal, trigonometrik fonksiyonların birim çember üzerinde hareket eden kadran ile eş zamanlı gösterimini sağlamaktadır. Bu şekilde sinüs, kosinüs, tanjant ve kotanjant değerlerinin birbirleri arasında ki ilişkinin gözlemlenmesi amaçlanmaktadır.

Proje videosu

 

Kullanılan Malzemeler:

 Arduino UNO

LCD 4×20

180 veya 360 derecelik Servo motor

10K çok turlu potansiyometre

Dakota panel

9V pil ve Soket

Projenin Yapılışı:

İlk olarak Arduino ile LCD bağlantıları yapılır ve (adetim olduğu üzere) LCD bağlantılarının test edilmesi amacıyla Arduino UNO ile ekrana yazı yazdırılır. Bunun için basit bir kod yazılarak kontrol işlemi yapılmalıdır. Aksi takdirde devrenin karmaşıklaşması ile doğabilecek hataları bulmak çok zor olacaktır. 

Aşağıda Arduino UNO ile LCD bağlantıları görülmektedir

trigonometre-lcd

Tüm Arduino dersleri için tıklayın…

Aşama aşama gidersek LCD bağlantıları ve testinden sonra Servo motor bağlantılarına geçilebilir. Sevo motor, bilindiği üzere açısal hareket edebilen istenilen açı değerine giderek orada sabit durdurulabilen özel üretim motorlardır. Servo motorlarda genel olarak 3 adet pin bulunmaktadır. Bu pinlerden 1- +Vcc, 2- Gnd, 3- Sinyal ucudur. +5Volt ile çalışmaktadır. Vcc pini Arduino UNO üzerinde bulunan Vcc girişine,Gnd pini  Arduino UNO üzerinde bulunan Gnd girişine, Sinyal pini ise Arduino UNO üzerinde bulunan (PWM çıkış özelliği olan) dijital pinlerden 3. pine bağlanır.  (Arduino ile LCD kullanımı yazısı için tıklayın…)

Daha sonra ise açı değerini ayarlamak için kullanılan Potansiyometrenin bağlantısına geçilir. potansiyometre 10k kullanılmıştır. Pot 3 uçlu ayarlanabilen dirençtir. iki ucu sabit enerji girişi olarak kullanılacaktır. 1. pin Arduino üzerinde bulunan Vcc girişine, 3. pin yine Arduino üzerinde bulunan Gnd pinine, ortada kalan uç ise Arduino UNO üzerinde bulunan analog girişlerden A0 pinine bağlantısı yapılır. Bu şekilde devre bağlantıları tamamlanmış olur.

Arduino ile servo motor yazısını okumak için tıklayın…

Arduino ile analog okuma nasıl yapılır ve analogRead() komutu kullanımı için tıklayın…

Devre şemasının tamamı aşağıdaki gibidir

trigonometre-full-yazılı

 

Projenin programı aşağıda verilmiştir.

#include <Servo.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
////////////////////////////////////////////////
float sin_hesap,cos_hesap,tan_hesap,cot_hesap;
float radyan_deger;
float aci_degeri=0;
int aci_ekran=0;
float aci_servo=0;
///////////////////////////////////////////////
Servo myservo;
///////////////////////////////////////////////
void setup() {

myservo.attach(3);

lcd.begin(20,4);

lcd.clear();
lcd.setCursor(4,0);
lcd.print(“Trigonometre”);
lcd.setCursor(2,1);
lcd.print(“www.dudigan.com”);
for(int a=8;a<174;a++){
myservo.write(a);
delay(100);
}
for(int a=173;a>8;a–){
myservo.write(a);
delay(100);
}
delay(300);
}
///////////////////////////////////////////////
void loop() {
//////////////////////
aci_degeri = map(analogRead(0),0,1023,0,360);
//////////////////////
if(aci_degeri<181){

aci_servo = aci_degeri;

myservo.write(aci_servo);
}
///////////////////////////////////

radyan_deger = (float)aci_degeri/57,2957;

///////////////////////////////////
sin_hesap = sin(radyan_deger);
cos_hesap = cos(radyan_deger);
tan_hesap = tan(radyan_deger);
cot_hesap = 1/tan_hesap;
///////////////////////////////////
if(aci_degeri==0){sin_hesap = 0;tan_hesap = 0;}
else if(aci_degeri==90){cos_hesap = 0;cot_hesap = 0;}
else if(aci_degeri==180){sin_hesap = 0;tan_hesap = 0;}
else if(aci_degeri==270){cos_hesap = 0;cot_hesap = 0;}
else if(aci_degeri==360){sin_hesap = 0;tan_hesap = 0;}

///////////////////////////////////
lcd.clear();
lcd.setCursor(1,1);
lcd.print(“–ACI–“);
lcd.setCursor(3,2);
aci_ekran = (int)aci_degeri;
lcd.print(aci_ekran);
lcd.setCursor(9,0);
lcd.print(“sin: “);lcd.setCursor(13,0);lcd.print(sin_hesap);
lcd.setCursor(9,1);
lcd.print(“cos: “);lcd.setCursor(13,1);lcd.print(cos_hesap);
lcd.setCursor(9,2);
lcd.print(“tan: “);lcd.setCursor(13,2);if(aci_degeri==90)lcd.print(“sonsuz”); else if(aci_degeri==270)lcd.print(“sonsuz”); else lcd.print(tan_hesap);
lcd.setCursor(9,3);
lcd.print(“cot:”);lcd.setCursor(13,3);if(aci_degeri==0)lcd.print(“sonsuz”); else if(aci_degeri==180)lcd.print(“sonsuz”);else if(aci_degeri==360)lcd.print(“sonsuz”);else lcd.print(cot_hesap);
delay(300);
}

*************************************************************************************************************

Proje İle İlgili Görseller

IMG_20160506_163007 IMG_20160506_163015 IMG_20160506_163019 IMG_20160506_163030 IMG_20160506_163037 IMG_20160511_135844

Mehmet Yalçın ASLAN

Elektronik/Bilgisayar Öğretmeni

 

 

 

Dijital Dünyanın Çekirdeği “1” Ve “0”

Dijital Sayı Sistemleri

Mantıksal Kavramlara Giriş

Analog Ve Dijital Kavramları

 

 

Kontrol Sistemleri İle Yeni Yaklaşımlar

Algoritma Nedir?

Kontrol Yapıları

Bir Cevap Yazın

%d blogcu bunu beğendi: