1
00:00:00,00 --> 00:00:13,500
Evet herkese tekrardan merhaba. Önceki bölümde 
PWM motorlarla nasıl bir sürüş treni için 
kod yazacağınızı göstermiştim.

2
00:00:13,600 --> 00:00:18,400
Joystick veri girişlerini kullanarak çalışan 
bir Tank Drive elde etmiştik.

3
00:00:18,500 --> 00:00:26,700
Şimdi yapacağımız şey ise, CAN kullanmak. 
CAN basit olarak PWM gibi farklı bir bağlantı 
metodu.

4
00:00:26,800 --> 00:00:35,000
PWM hız kontrol devresiyle mikroişlemci arasındaki 
direk bağlantı metodudur. Ve CAN'e göre daha 
basit bir şekilde çalışmaktadır

5
00:00:35,100 --> 00:00:43,900
CAN ise tüm motor kontrol devrelerinden geçen 
daha karmaşık bir kontrol metodudur. Ve kullanmak 
için her bir kontrolorü numaralandırmanız 
gerekir.

6
00:00:44,000 --> 00:00:57,300
CAN numaraları RoboRIO arayüzünde ayarlanabilir 
ve oradan mevcut numaraları kontrol edebilirsiniz.

7
00:00:57,400 --> 00:01:07,700
Ama genel olarak CAN cihazları programlamak 
bir Spark'ı programlamaya çok benzerdir.

8
00:01:07,800 --> 00:01:12,600
Ayrıca CAN devrelerin kontrol edilmek için 
daha fazla yöntemi vardır. Bu yüzden biraz 
daha fazla uğraş gerektirebilir.

9
00:01:12,700 --> 00:01:17,500
Bu bölümde asıl olarak yapacağımız şey önceden 
yazdığımız drivebase'deki PWM kontrol devrelerini 
CAN olanlarla değiştirceğiz.

10
00:01:17,600 --> 00:01:22,400
En sık kullanılan ve en güçlü olan CAN motor 
kontrol devresi TalonSRX'tir

11
00:01:22,500 --> 00:01:50,000
Yapmanız gereken videoda yazdığım importu 
yazdıktan sonra Spark yerine TalonSRX yazmak. 
Bu işlemleri yapabilmek için önceden CTRE 
kütüphanesini yüklemeniz lazım.

12
00:01:50,100 --> 00:01:59,600
Drivebase metodunda yaptığımız tanımlamaları 
da TalonSRX'e göre değiştirmemiz gerekiyor.

13
00:01:59,700 --> 00:02:04,500
PWM kontrol devresi gibi bunun da bir numara 
alması gerekiyor ama alması gereken asıl 
numara ise CAN numarası.

14
00:02:04,600 --> 00:02:22,800
Şu anlık RobotMap'te tanımlamış olduğumuz 
gibi 0 ve 1 olarak bırakacağız ama daha sonradan 
değiştirmemiz gerekecek.

15
00:02:22,900 --> 00:02:27,700
Motor kontrol devrelerini değiştirdik ancak 
hala yapmamız gereken şeyler var.

16
00:02:27,800 --> 00:02:45,200
Burada karşımıza çıkan asıl sıkıntı TalonSRX'lerle 
gelen çok fazla seçenek olması.

17
00:02:45,300 --> 00:03:02,800
Benim yapmayı tercih ettiğim ise Robot.java'da 
TalonSRX'ler için bir init metodu kurmak.

18
00:03:02,900 --> 00:03:07,700
Bu metod sayesinde de TalonSRX'lerin çoğu 
özelliğini ayarlayabileceğiz.

19
00:03:07,800 --> 00:03:51,200
Ekranda gözüken metodu açıyorsunuz metodun 
adı istediğiniz gibi olabilir ancak parantezin 
içine doğru şeyleri yazdığınıza emin olun

20
00:03:51,300 --> 00:03:56,100
Şimdi ise kullanmadığımız importları silebiliriz.

21
00:04:04,700 --> 00:04:19,100
Şimdi ise yapmamız gereken birkaç şey var. 
Öncelikle yapmamız gereken motorun nötralitesini 
ayarlamak.

22
00:04:19,200 --> 00:04:24,000
Brake ya da Coast mode olmak üzere motoru 
ayarlamamız gerekiyor.

23
00:04:24,100 --> 00:04:54,600
Ayarlamak için ise ekrandaki satırı yazıp 
argüman olarak ise ya Brake ya da Coast'ı 
seçmeniz gerekiyor. Şimdilik Coast seçiyorum 
ama siz istediğinizi seçebilirsiniz.

24
00:04:54,700 --> 00:05:05,900
Daha sonra yapacağımız ise 2. satırı yazmak. 
Bu sayede hız kontrol devresinin çıkışları 
daha istikrarlı olacaktır.

25
00:05:06,000 --> 00:05:31,600
Bir başka yazmamız gereken ise sensorphase. 
Sensorphase encoder'ınıza motorun dönüş yönünün 
doğru ya da yanlış olduğunu belirmeyi sağlayacak 
bir metoddur.

26
00:05:31,700 --> 00:05:38,800
Eğer motorunuz + yöne döndüğünde Encoder'ınız 
da + yönde artıyorsa bu argümanı false yapmalısınız. 
Ancak ters çalışıyorsa argümanı true yaparak 
bu durumu düzeltebilirsiniz.

27
00:05:38,900 --> 00:06:03,000
Ayrıca TalonSRX'e eklenebilecek 2 limit switch 
vardır. LimitSwitch'inizin tipini ve argümanlarını 
eğer takımınızda burada farklı bir şey kullanıyorsanız 
ona göre ayarlayın.

28
00:06:03,100 --> 00:06:17,800
Ama burada ayarlanılanlar işinizi görecektir. 
Ekrandaki satırı yazın ve argümanları doldurun.

29
00:06:17,900 --> 00:06:22,700
1. Argüman sensörün bağlantı şekili.

30
00:06:22,800 --> 00:06:39,600
2. Argümanınız ise switch'inizin normalde 
açık mı kapalı mı olduğunu öğrenmel için. 
Bunu bir röledeki gibi düşünebilirsiniz.

31
00:06:39,700 --> 00:06:44,500
Son argüman ise olması gereken gecikmeyi 
soruyor gecikme istemediğimiz için 0 yazıyoruz.

32
00:06:44,600 --> 00:06:53,800
Eğer isterseniz aynısını 2. Switch için de 
yapabilirsiniz.

33
00:06:53,900 --> 00:07:40,700
Şimdi yapmamız gereken ise, motor kontrol 
devrelerinin normal çıktılarını ayarlamak. 
Bunun için ekrandaki satırı yazmalısınız.

34
00:07:40,800 --> 00:07:51,400
Aynısını hem + yönüne doğru güç ve - yönüne 
doğru güç için ayarlamamız gerekiyor. 1. 
argüman double 0.0 ve ikinci argüman 0 olacak.

35
00:07:59,900 --> 00:08:15,400
Şimdi yapmamız gereken bir şey daha var. 
Motorların hızlanma oranını ayarlamamız gerekiyor.

36
00:08:15,500 --> 00:08:20,300
Hızlanma oranının yaptığı motorun %0 güçten 
%100 e nasıl çıkacağını ayarlamaktır.

37
00:08:20,400 --> 00:08:29,400
Daha sonradan bu özelliği kullanacağımız 
kapalı döngülere geleceğiz.

38
00:08:29,500 --> 00:08:43,400
Bu özelliği ayarlamak için yazdığım satırı 
yazıyoruz ve 1. argüman olarak 0.5 ve 2. 
argüman olarak 0 yazıyoruz.

39
00:08:43,500 --> 00:08:48,300
Gördüğünüz gibi ayarlanması gereken bir sürü 
özellik var. hepsini ayrı ayrı çalıştırmak 
yerine bir metodun içine yazmamız daha rahat 
oldu.

40
00:08:48,400 --> 00:09:11,400
Şimdi ise Drivebase sınıfına gelip yazdığımız 
metodu ana sınıftan çağırıp iki motor için 
de çalıştırıyoruz.

41
00:09:11,500 --> 00:09:26,200
Ve işte gördüğünüz gibi artık TalonSRX'ler 
ayarlandı. Ama hala yapmamız gereken birkaç 
şey var. Buradaki hatayı çözmemiz gerekiyor 
ama başka bir şey var.

42
00:09:26,300 --> 00:09:44,300
Bildiğiniz gibi PWM kontrolör aldığı PWM 
sinyaline göre hareket ediyordu. Ve bir PWM 
sinyalini iki kontrol devresine dağıttığınızda 
ikisi de çalışabilirdi.

43
00:09:44,400 --> 00:09:49,200
Ve bu sayede de bir PWM sinyalini 2 motor 
için kullanabilirdik.

44
00:09:49,300 --> 00:09:59,700
Ancak CAN kontrol devrelerinde böyle çalışmıyor.Şimdi 
yapacağımız şey drivebase türünüze göre gerekli 
olmayabilir.

45
00:09:59,800 --> 00:10:04,600
Ancak benim takımım dişli kutusunda 2 motor 
kullandıdğı için her motora bir Talon düşmesi 
gerekiyor.

46
00:10:04,700 --> 00:10:09,500
Bu yüzden de işimi görmesi için bir kaç tane 
daha TalonSRX tanımlamam gerekiyor.

47
00:10:09,600 --> 00:10:22,900
Doğru çalışmaları için aynı yönde dönmeleri 
gerekiyor o yüzden sol taraftakiler tek bir 
değer sağdakilerin tek bir değere göre hareket 
etmesi gerekiyor

48
00:10:23,000 --> 00:10:44,000
Drivebase metdunda TalonSRX'lerin tanımlamasını 
tamamlamamız gerekiyor. Ayrıca bu yeni Talon'ları 
ayrıca numaralandırmamız gerekiyor.

49
00:10:44,100 --> 00:11:01,000
Bu nedenle RobotMap sınıfında yeni değerler 
oluşturmamız gerekiyor. Yeni tanımladığımız 
motorlara yazdığımız gibi numaralandıralım.

50
00:11:01,100 --> 00:11:14,800
Şimdi ise metodda numaralandırmayı tamamlayalım.

51
00:11:14,900 --> 00:11:23,600
Yeni tanımladığımız motorlara da joysticklerden 
gelen veriyi aktarmamız gerekiyor.

52
00:11:23,700 --> 00:11:33,000
Ayrıca önceden yazdığımız metoddaki kurulum 
aşamalarını bu motorlar için de yapmamız 
gerekiyor.

53
00:11:33,100 --> 00:11:46,400
Motorlara güç vereceğimiz kısımda önceki 
motorlar gibi de yapabiliriz. Ama bunu yapmaya 
gerek yok. Çünkü TalonSRX'lerin Follow mode 
adlı bir seçeneği var.

54
00:11:46,500 --> 00:11:56,100
Bunu yapmak için ise yazdığımızı yazıyoruz 
ve argüman olarak takip etmesini istediğiniz 
motoru yazıyoruz.

55
00:11:56,200 --> 00:12:16,100
Ve bu sayede argümana yazdığınız motora verilen 
her komut onu takip eden motora da gönderilecektir. 
Bu sayede iki motorun ters dönmesi zamanında 
robotunuza zarar gelme olasılığı düşecektir

56
00:12:16,200 --> 00:12:18,200
Bu sayede iki motorun ters dönmesi zamanında 
robotunuza zarar gelme olasılığı düşecektir

57
00:12:18,300 --> 00:12:33,000
Ayrıca eğer motorlarınızdan biri ters ise 
bu satırı yazarak düzeltebilirsiniz.

58
00:12:33,100 --> 00:12:58,300
Şimdi yapmamız gereken ise burada aldığımız 
hatayı çözmek. Bu hatanın nedeni ise TalonSRX'lerde 
.set in daha fazla argümanının olması.

59
00:13:23,400 --> 00:13:37,600
Burada ise kontrol modunu ayarlamak için 
farklı seçeneklerimiz var. Akıma göre voltaja 
göre ve birçok farklı seçeneğe göre kontrol 
modunu ayarlayabiliriz.

60
00:13:37,700 --> 00:14:00,600
Position ve velocity argümanları özellikle 
otonom için çok yardımcı oluyor. Position 
un işe yaraduğı kısım encoder yardımıyla 
motora 5m git diyebilmektir.

61
00:14:00,700 --> 00:14:13,000
Şu an yüzdelik değerler verebilmek için PercentOutput 
seçmemiz gerekiyor.

62
00:14:13,100 --> 00:14:35,300
Bunu ayarlamak için buradaki metodumu setRaw 
yerine doğrudan set olarak ayarlıyorum. Ve 
metoda ControlMode mode argümanını ekliyoruz. 
Ve metodun içinde mode'u ekliyoruz.

63
00:14:35,400 --> 00:14:45,100
Ancak bunu değiştirdikten sonra TankDrive 
sınıfını da değiştirmemiz gerekiyor çünkü 
metodun adını değiştirdik.

64
00:14:45,200 --> 00:14:50,000
Bu sorunu çözmek için setRaw yerine set yazıp 
ControlMode argümanını eklememiz gerekiyor.

65
00:14:50,100 --> 00:15:14,100
Ve şu an her şey eskisi gibi ancak Spark 
yerine TalonSRX kullanıyoruz. Ve bu sayede 
robotumuzun hareketi üzerinde daha fazla 
kontrol sahibi olacağız.

66
00:15:14,200 --> 00:15:25,200
TalonSRX'lerle yapabileceğiniz çok fazla 
şey var ancak onlara sonradan değineceğiz.

67
00:15:25,300 --> 00:15:30,100
Evet izlediğiniz için teşekkürler bu videoda 
TalonSRX devrelerini kullanarak nasıl robotunuzu 
hareket ettirirsiniz ona değindik.

68
00:15:30,200 --> 00:15:48,600
Sonraki videolarda PID kullanımına değinebiliriz. 
Bu sayede TalonSRX'lerin kullanıma sunduğu 
tüm özellikleri kullanabiliriz.

69
00:15:48,700 --> 00:15:51,000
Sonra görüşmek üzere.

