Bugün Proteus ve Arduino hakkında anlatmak istiyorum. Proteus’ta bizim daha önce yaptığımız projenin simülasyonu yapabiliriz. Bu bize esneklik sağalayacaktır. İlk önce Proteus’ta devreyi kurup eksikler var mı yok mu görebiliyoruz. Bir başka avantaj ise Arduino platformu ve denemeler için tüm parçaları satın almaya gerek kalmaması. Proteus’un deneme sürümünü buradan indirebilirsiniz .
İlk önce Arduino’da kısa bir programı yazalım.Veya onu hazır olarak örneklerden alabiliriz (File, Examles, Basics, Blink).
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Proteus, Arduino’yu doğrudan kullanma imkânı sunmuyor. Bu yüzden Proteus’ta var olan Atmega8 mikrodenetleyiciyi kullanacağız. Programı yazdıktan sonra derliyoruz. Compile işleminden sonra Arduino bilgisayarda temp klasörüne geçici dosyalar yaratıyor. Ben Windows XP kullanıyorum. Bu dosya benim bilgisayarımda C:\Temp\build3763817177409621585.tmp\ dizininde bulunuyor. Sizde farklı bir yerde olabilir. Mesela (Windows 8’de) C:\Users\Vitiok\AppData\Local \Temp… Bizi ilgilendiren dosya Blink.cpp.hex. Bu dosyayı kullanarak Proteus’ta olan Atmega8 mikrodetleyiciyi çalıştıracağız.
Proteus’u açalım. Çalışma ortamında sol tarafta P’ye basıp arama penceresine Atmega8 yazıp listeden seçelim. Sonra bir kırmızı LED’i aynı şekilde seçelim.
Tüm araçları seçtikten sonra böyle bir devre oluşturalım.
Mikrodenetliyiciye çift tıklağında karşımıza böyle bir pencere gelecektir.
Burada Program File penceresinden temp dosyamızı seçeriz ve OK’e bastıktan sonra simülasyonu başlatabiliriz. Devreyi çalıştırmak için aşağıdan start düğmesine basacağız.
Küçük bir uygulama daha yapalım. Düğmeye bastığı zaman program LED’i yakacak. Düğmeyi bıraktığımız zaman LED’i söndürecek.
int switchPin=8;
int ledPin=13;
void setup()
{
pinMode(switchPin,INPUT); //// initialize the digital pin as an input
pinMode(ledPin,OUTPUT); //// initialize the digital pin as an output
}
void loop()
{
if (digitalRead(switchPin)==HIGH)
{
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
}
Proteust’a devre:
Program iki değişkeni kullanacak. Birinci :
int switchPin=8;
8’ci pini kontrol için kullanacağız. Butona bastığımız zaman 8. pine lojik 1 gönderecek (5 Volt).
İkinci değişken:
int ledPin=13;
13. pinde bizim LED’imiz olacak.
{
if (digitalRead(switchPin)==HIGH)
{
If komutu karşılaştırmayı yapıyor. DigitalRead 8. pini okuyor. Eğer 8. pinde 1 (1=HIGH) ise if komutu birinci satırı çalıştırıyor. Yani:
digitalWrite(ledPin,HIGH);
Bu satırda LED’i yakıyoruz.
Eğer switchPin eşit 0’sa (0=LOW) o zaman ikinci satırı çalıştırıyor.
digitalWrite(ledPin,LOW);
LED’i söndürüyor.
If…else komutunu daha ayrıntılı inceleyelim.
If yapısı bize seçim yapmayı imkanı veriyor. Mesela siz dijital pini kontrol etmek istiyorsanız ona göre işlem yapacaksınız. Eğer dijital pin 1 ise birinci işlem yapacak. 0’ sa ikinci işlemi yapacak.
if (inputPin == HIGH)
{
İşlem1;
}
else
{
İşlem2;
}
Sadece iki seçim için değil daha fazla da yapabiliriz. Mesela :
if (inputPin < 500)
{
İşlem1;
}
else if (inputPin >= 1000)
{
İşlem2;
}
else
{
İşlem3;
}
Burda 3. işlem inputPin 500 ve 1000 arasında yer alıyor.
If yapısı parantez içinde (inputPin<500) inputPin’i kontrol ediyor. Doğruysa (true) birinci işlem yapıyor.Yanlışsa (false) sonraki işleme geçiyor.
Biz projede direnç (R68K) kullandık. Direnci kullanmasaydık pinde rastgele akım LED’e rastgele sinyalleri gönderecekti ve LED’imiz düzgün çalışmayacaktı. Bu akımı çekmek için toprağı kullandık. Proteus’ta görebilirsiniz, butona bastığınız zaman direnç, akımın toprağa gitmesini engelliyor.
Atmega’nın kullandığı pinleri daha iyi anlamak için bu resim size yardımcı olacaktır.
httpv://www.youtube.com/watch?v=w7pcAHf4ZeM
Sorularınız için bana Technopat Forum‘da ulaşabilirsiniz.