Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - Hasan ERTÜRK

Sayfa: 1 ... 31 32 [33] 34 35 ... 45
481
Arduino Genel / 13. Analog okuma, Joystick ve Seri Monitör
« : 15 Temmuz 2015, 07:05:10 »
Bu uygulamamızda joystick pozisyonunu seri monitör ekranından okuyacağız.
Kodlarımız:
Kod: [Seç]
int xEkseni=0; // xekseni integer tipinde değişken tanımlandı
int yEkseni=0; // yekseni integer tipinde değişken tanımlandı
void setup() {
Serial.begin(9600);
}//setup
void loop() {
xEkseni=analogRead(A0); // A0 portu x eksenindeki değişimi algılayacak
yEkseni=analogRead(A1); // A1 portu y eksenindeki değişimi algılayacak
Serial.print("X Eksenin konumu : ");
Serial.print(xEkseni);
Serial.print("\t");
Serial.print("Y Eksenin konumu : ");
Serial.print(yEkseni);
Serial.print("\n");
}//loop






482
Arduino Genel / 18. Arduino lcd shield kullanımı
« : 15 Temmuz 2015, 02:07:15 »
Öncelikle kullanacağımız lcd shieldin datasheedini internetten bulmamız gerekiyor.
Bizim kullanacağımız lcd shieldin üzerinde DFROBOT LCD yazıyor. Bu kelime grubunu googlede aratarak datasheedini
buluyoruz.

Kodlarımızı arduinomuza atıyoruz:
Kod: [Seç]
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT; 
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT; 

 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT; 
 if (adc_key_in < 195)  return btnUP;
 if (adc_key_in < 380)  return btnDOWN;
 if (adc_key_in < 555)  return btnLEFT;
 if (adc_key_in < 790)  return btnSELECT;   
*/


 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}

Example use of Enhanced LiquidCrystal_I2C library(Not updated)
This library inherits LiquidCrystal and adds another method: button - to read button pushed on a keypad. This works on the Old version of the board V1.0
Library Forum

/*
DFRobot LCD Shield for Arduino
Key Grab v0.2
Written by Glendon Klassen
gjklassen@gmail.com
http://www.sourceforge.net/users/ecefixer
http://ecefixer.tumblr.com

Displays the currently pressed key on the LCD screen.

Key Codes (in left-to-right order):

None   - 0
Select - 1
Left   - 2
Up     - 3
Down   - 4
Right  - 5

*/

#include <LiquidCrystal.h>
#include <DFR_Key.h>

//Pin assignments for DFRobot LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//---------------------------------------------

DFR_Key keypad;

int localKey = 0;
String keyString = "";
                 
void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Key Grab v0.2");
  delay(2500);
 
  /*
  OPTIONAL
  keypad.setRate(x);
  Sets the sample rate at once every x milliseconds.
  Default: 10ms
  */
  keypad.setRate(10);

}

void loop()
{
  /*
  keypad.getKey();
  Grabs the current key.
  Returns a non-zero integer corresponding to the pressed key,
  OR
  Returns 0 for no keys pressed,
  OR
  Returns -1 (sample wait) when no key is available to be sampled.
  */
  localKey = keypad.getKey();
 
  if (localKey != SAMPLE_WAIT)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Current Key:");
    lcd.setCursor(0, 1);
    lcd.print(localKey);
  }
}

Eklenti modülünü arduinomuza taktıktan sonra kodları derleyip arduinomuza attığımızda aşağıdaki  gibi bir yazının lcdmizde görüntülendiğini görmemiz gerekiyor.


Şimdi de bu kodları editleyerek lcd de istediğimiz yazının görüntülenmesini sağlayalım.

Kodlarımız:
Kod: [Seç]
//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT; 
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT; 

 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT; 
 if (adc_key_in < 195)  return btnUP;
 if (adc_key_in < 380)  return btnDOWN;
 if (adc_key_in < 555)  return btnLEFT;
 if (adc_key_in < 790)  return btnSELECT;   
*/


 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("temrinlerim.org"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons
 lcd.print("eproje61.com"); // print a simple message


}

Şimdiki görüntümüz:

483
Arduino Genel / 17. Potansiyometre ve seri monitör
« : 14 Temmuz 2015, 21:36:55 »
Bu uygulamada potansiyometrede okunan analog değeri seri monitörde görüntüleyeceğiz.
A0 analog girişine potansiyometre ile 0Volt ile 5Volt arasında bir gerilim uyguluyoruz. A0 girişinde 0 Volt varken seri monitör ekranı 0 değerini, 5 Volt varken ise 1023 değerini görüntülemektedir. Ara değerlerde ise 0 ile 1023 arasında bir değer okunmaktadır.
Arduino kodlarımız:
Arduino dosyası ekte mevcuttur.
Kod: [Seç]
int potansiyometre1 = A0;
int okunanDeger1 = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
// potansiyometreden analog değer okunması:
okunanDeger1 = analogRead(potansiyometre1); // A0 pinindeki analog değeri oku
Serial.print("Potansiyometre 1 :");
Serial.print(okunanDeger1);
Serial.print("\n"); // seri monitörde alt satıra geç.
delay(500);}

Arayüz görüntüsü:


Fritzing şeması:
Fritzing dosyası konu ekinde mevcuttur.


ISIS devre şeması:
ISIS dosyası konu ekinde mevcuttur.

484
Led ve Buton uygulamaları / 2. Buton uygulaması
« : 14 Temmuz 2015, 15:23:33 »
Bu uygulamada butona basıldığında ledi yakıp, buton bırakıldığında ledi söndüren devrenin nasıl yapıldığını öğreneceğiz.

Resim:


Videosu:
<iframe width="640" height="385" src="//www.youtube.com/embed/7RcZLYRnylQ?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Arduino kodları:
Kod: [Seç]
void setup() {
// Hangi dijital pinleri output olarak seçeceğimizi belirtiyoruz.
pinMode(11, OUTPUT);
pinMode(9,INPUT);
}
int butondegeri=0;
void loop() {
butondegeri = digitalRead(9);
digitalWrite(11, butondegeri);
}

Arduino dosyasına konu ekinden ulaşabilirsiniz.

Fritzing şeması:
Fritzing dosyasına konu ekinden de ulaşabilirsiniz.


ISIS devre şeması:
İsis devre şemasına ait dosyalarrı konu ekinden ulaşabilirsiniz.


ISIS simülasyonu:
<iframe width="640" height="385" src="//www.youtube.com/embed/DA-fAtezBRE?fs=1&start=" frameborder="0" allowfullscreen></iframe>


485
Led ve Buton uygulamaları / 9. Flaşör led uygulaması
« : 13 Temmuz 2015, 18:50:04 »
Bu uygulamada 2 adet led sıralı yakıp söndürülerek flip flop uygulaması yapılacaktır.

Videosu:
<iframe width="640" height="385" src="//www.youtube.com/embed/v9isN_0RYEY?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Malzemelerin deney borduna yerleştirilmesi:


Fritzing Devresi:

Fritzing dosyasını konu ekinden indirebilirsiniz.

ISIS Devre şeması:


ISIS devre şemasına ait dosyayı ve hex kodunu konu ekinden indirebilirsiniz.

ISIS Simülasyonu:
<iframe width="640" height="385" src="//www.youtube.com/embed/Bdl_oaI23sc?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Arduino kodlarımız:
Kod: [Seç]
/*
------------------------------------------------
Program No: 2.1
Program Adı: Led Yak Söndür
Kullanılan Geliştirme Kiti: Arduino Uno
Kullanılan Eklenti: -
Web Adres: www.ArduinoUygulamalari.com
*/
// Pin 13 ve Pin 9 pinlerine birer led bağlanmıştır.
int KirmiziLed = 11;
int SariLed = 10;
void setup() {
// Hangi dijital pinleri output olarak seçeceğimizi belirtiyoruz.
pinMode(KirmiziLed, OUTPUT);
pinMode(SariLed,OUTPUT);
}
//
// Loop Döngüsü ile sonsuz defa bu fonksiyon işlem yapacak
void loop() {
digitalWrite(KirmiziLed, HIGH); // LED Yak (HIGH seçeneği ile KirmiziLed(pin 13) 5 Volt yapmış oluyoruz )
digitalWrite(SariLed, LOW); // LED Sondur (LOW seçeneği ile SariLed(pin 9) 0 Volt yapmış oluyoruz )
delay(1000); // 1000 mikrosaniye bekle
digitalWrite(KirmiziLed, LOW); // LED Yak (HIGH seçeneği ile KirmiziLed(pin 13) 5 Volt yapmış oluyoruz )
digitalWrite(SariLed, HIGH); // LED Sondur (LOW seçeneği ile SariLed(pin 9) 0 Volt yapmış oluyoruz )
delay(1000); // 1000 mikrosaniye bekle
}







486
Arduino Genel / 16. Arduino ile toplama ve bölme işlemi
« : 13 Temmuz 2015, 17:41:09 »
Bu uygulamada toplama ve bölme işlemlerinin sonucunu seri portekranında görüntüleyeceğiz.



Arduino kodları:
Kod: [Seç]
int sayi1=10; // İlk değer vererek değişken tanımlaması
int sayi2, toplam, bolum; // Aynı veri tipinde birden çok değişken tanımlama
float fSayi1, fSayi2, fSonuc; //İlk değer vermeden değişken tanımlama
void setup()
{
Serial.begin(9600);
}
void loop() {
sayi2=20;
toplam = sayi1 + sayi2;
Serial.print("10+20= ");
Serial.println(toplam);
bolum = 6/4; // Tam Sayi ile Bölme işleminin yapılması
Serial.print("6/4= ");
Serial.println(bolum);
fSayi1 = 6.0;
fSayi2 = 4.0;
fSonuc = fSayi1/fSayi2; // Ondalıklı sayı ile bölme işleminin yapılması
Serial.print("6.0/4.0= ");
Serial.println(fSonuc);
while(1)
{}
}

487
Arduino Genel / 15. Seri Monitör Uygulaması
« : 13 Temmuz 2015, 17:32:24 »
Bu uygulamada Merhaba Dunya yazısı bilgisayarda Seri monitörde çıkacaktır.

Arduino Kodları:
Kod: [Seç]
void setup() {
Serial.begin(9600); //Seri iletişim başlatan komut
delay(5000); //500 milisaniye bekleme
}
void loop() {
Serial.println("Merhaba Dunya"); //Merhaba Dunya yazısı bilgisayarda Seri monitörde çıkacaktır.
delay(100); //100 milisaniye Bekleme
}

488
Projeler / 1. Arduino ile mesafe sensörü uygulaması
« : 05 Temmuz 2015, 19:35:08 »
Merhaba. Bu konumuzda HC-SR04 ultrasonic sensörünü tanıyıp cisim algılama ve de mesafe ölçümü yapacağız. Ses dalgaları sınıflandırılmasında 20 KHz-1 GHz arasındaki ses sinyalleri ultrasonic ses olarak tanımlanmıştır. Kullanacağımız sensörve bir çok ultrasonic sensör 40Khz frekansında ultrasonic ses üretmektedir.

<iframe width="640" height="385" src="//www.youtube.com/embed/BHe8u5Ib_1o?fs=1&start=" frameborder="0" allowfullscreen></iframe>



HC-SR04 Mesafe Sensörü


 Aslında HC-SR04 tüm haliyle bir transdüserdir. Transdüser ile sensör arasındaki fark ise sensör herhangi fiziksel bir değişimi algılayan bir eleman iken, transdüser bu değişimi algılayıp elektrik,ısı vs. bir çok enerji formuna dönüştürebilen bir elektronik devredir.

HC-SR04'te 2 adet araba farını andıran bir tanesi ses iletici diğeri de ses alıcı olan transdüser bulunmakta. Sol taraftan 40 KHz'de üretilen ses sinyal darbesi engele çarpıp sağ tarafa gelir ve biz bu gidiş-geliş arasındaki zamanı, cm'ye çevirerek uzaklığı ölçeceğiz.

T=0 zamanında darbe iletilir(ultrasonic ses sinyali), cisimden yansır, transdüser tarafından algılanır ve tekrar
gönderilir.Sonraki darbe ilk darbenin ultrasonik enerjisinin hepsi absorbe edildiğinde iletilmelidir.Bu yüzden sensöre bir pals gönderilir sensör okunur ve sensörün datasheetinde yazan süre kadar sensöre tekrar pals gönderilmez.Eğer bekleme yapmaksak sensör saçma değerler döndürür.Çünkü ilk yolladıgımız sinyal bir yerden yansıyarak sensöre geri dönmeye devam eder.

 Sensör üzerinde 4 adet pin mevcut.Bunlar;vcc,gnd,trig,echo pinleri.Sensör kendi içerisinde 40khz frekansında bir sinyal üretip  8 pals verici transdüsere gönderiyor.Bu ses dalgası 
havada, deniz seviyesinde ve 15 °C sıcaklıkta 340 m/s bir hızla yol alır.Bir cisme çarpar ve geri sensöre yansır.Cismin sensörden uzaklıgı ile doğru orantılı olarak echo pini bir süre lojik 1 seviyesinde kalır ve tekrar lojik 0 olur.Bizim bu mesafeyi ölçmekiçin tek yapmamız gereken echo pininin ne kadar lojik1 oldugunun süresini bulmaktır.Bu yapı yukarıdaki resimden daha iyi görülebilir.

 Echo pininin lojik 1de kalma süresini mikrodenetleyici timerı ile ölçelim. Klasik yol=hız*zaman dan ve sesin 340m/sn lik hızınıda 34000cm/1000000us (340000/1000000=1/29) olarak düzenlersek  formül x=t/29 olarak bulunur.Fakat burada önemli bir nokta sensörün bize döndürdüğü süre, ses sinyalinin gönderilmesi ile alınması arasındaki oluşan süre. Yani yol=zaman/29 ile aradaki mesafeyi iki ile çarpmış oluyoruz.Çünkü ses hem gitti hem geldi.Bu yüzden x=t/58 formulüyle aradaki mesafeyi ölçmüş olacağız . Bazı yerlerde 58 yerine 58.2 veya 59 yazanı da gördüm artık sizin kararınıza kalmış birşey.

Devre şeması:




Arduino kodları:
Kod: [Seç]
/* Created by Raphango ~ 14/feb/2014
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
"Come to me, all you who are weary and burdened, and I will give you rest.
Take my yoke upon you and learn from me, for I am gentle and humble in heart,
and you will find rest for your souls.For my yoke is easy and my burden is light."
Matthew 11:28-30
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#########Breadboard circuit mounting:########
 * LCD VSS pin to ground
 * LCD VDD pin to +5V
 * 2K2Ohm resistor: ends to LCD VO pin and ground
 * LCD RS pin to digital pin 9
 * LCD R/W pin to ground
 * LCD Enable pin to digital pin 8
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD A pin to +5V
 * LCD K pin to ground
 * Buzzer + to 220Ohm Resistor leg and - to ground. The other resistor leg goes to pin 12.
 * HC-SCR GND to ground
 * HC-SCR Echo to pin 11
 * HC-SCR Trig to pin 10
 * HC-SCR Vcc to +5V
##############################################
*/

//Defining pins
#define trigPin 10
#define echoPin 11
#define buzPin 12
#define RS 9
#define Enable 8
#define D4 5
#define D5 4
#define D6 3
#define D7 2

//Including the LCD and sound library:
#include <LiquidCrystal.h>
#include "pitches.h"

// Initialize the LCD library
LiquidCrystal lcd(RS, Enable, D4, D5, D6, D7);

/////Definition of the LCD special characters///
uint8_t cc0[8] = {0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07};
uint8_t cc1[8] = {0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x1C};
uint8_t cc2[8] = {0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00};
uint8_t cc3[8] = {0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00};
uint8_t cc4[8] = {0x00,0x00,0x00,0x10,0x18,0x0C,0x04,0x06};
uint8_t cc5[8] = {0x06,0x04,0x0C,0x18,0x10,0x00,0x00,0x00};
uint8_t cc6[8] = {0x10,0x08,0x0C,0x06,0x02,0x03,0x03,0x03};
uint8_t cc7[8] = {0x03,0x03,0x03,0x02,0x06,0x0C,0x08,0x10};

////Sound notes setup
int melody0[] = {NOTE_B3, NOTE_B3,NOTE_B3, NOTE_G3, NOTE_B3,0, NOTE_D4, NOTE_D3};
int melody1[] = {NOTE_C6,NOTE_C6,NOTE_C6,NOTE_C6};
int melody2[] = {NOTE_C6,NOTE_C6,NOTE_C6};
int melody3[] = {NOTE_C6,NOTE_C6};
int melody4[] = {NOTE_C6};

//Add melodies here, and at the end of the "music" array.
int* music[6/*number of melodies + 1*/] = {melody0, melody1, melody2, melody3, melody4 /*,add here*/};

////Sound notes durations
int notesMelody0[] = {8,4,4,8,8,8,2,4};
int notesMelody1[] = {8,8,8,8};
int notesMelody2[] = {8,8,8};
int notesMelody3[] = {8,8};
int notesMelody4[] = {4};

//Add durations of the melodies here, and at the end of the "noteDurations" array.
int* noteDurations[6/*number of melodies + 1*/] = {notesMelody0, notesMelody1, notesMelody2 , notesMelody3 , notesMelody4  /*,add here*/};

////Sound sizes
int sizeMelody0 = sizeof(melody0)/sizeof(int);
int sizeMelody1 = sizeof(melody1)/sizeof(int);
int sizeMelody2 = sizeof(melody2)/sizeof(int);
int sizeMelody3 = sizeof(melody3)/sizeof(int);
int sizeMelody4 = sizeof(melody4)/sizeof(int);
//Add sizes here, and at the end of the "sizes" array.
int sizes[] = {sizeMelody0,sizeMelody1,sizeMelody2,sizeMelody3,sizeMelody4 /*,add here*/};

////Tone Function - Plays the tone
int playSong(int track, float durConst){
    for (int thisNote = 0; thisNote < sizes[track]; thisNote++) {
    int noteDuration = 1000/noteDurations[track][thisNote];
    tone(buzPin, music[track][thisNote],noteDuration);
    int pauseBetweenNotes = noteDuration * durConst;
    delay(pauseBetweenNotes);
    noTone(buzPin);
  }
}

//Declaring a variable that will count the millis so the blinking is independent of "delays"
unsigned long millisCounter = 0;
int displaying = 0;

////////////////////////////////////
//////////////SETUP/////////////////
////////////////////////////////////
void setup(){
  // Set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Set up the LCD custom chars (8 maximum)
  lcd.createChar(0, cc0);
  lcd.createChar(1, cc1);
  lcd.createChar(2, cc2);
  lcd.createChar(3, cc3);
  lcd.createChar(4, cc4);
  lcd.createChar(5, cc5);
  lcd.createChar(6, cc6);
  lcd.createChar(7, cc7);
  //Initializes HC-SCR04 pins
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  //Plays intro song
  playSong(0,1.30);
}

////////////////////////////////////
//////////////LOOP//////////////////
////////////////////////////////////

void loop()
{
  unsigned long millisNow = millis();
  long duration;
  int mesafe;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  //Measures the mesafe
  duration = pulseIn(echoPin, HIGH);
  mesafe = (duration/2) / 29.1;

  if (mesafe >= 400 || mesafe <= 0){//Evaluate the mesafe value.
    lcd.setCursor(0, 0);
    lcd.print("Fora do alcance    ");
    lcd.setCursor(0, 1);
    lcd.print("                  ");
    }
  else {

    Serial.print(mesafe);
    Serial.println(" cm");
    lcd.setCursor(0, 0);
    lcd.print("Mesafe:");
    lcd.setCursor(2, 1);
    lcd.print(mesafe);
    lcd.print(" cm.  ");
   
    //mesafe animation
    if(mesafe <= 10)
    {
      if(millisNow-millisCounter>50 && displaying == 0){//This part is used for the blinking while at 10 cm less.
      //Each of these "lcd.setCursor" and "lcd.write" are responsible for the drawings.
      lcd.setCursor(10, 0);//This positionates the cursor on the desired slot
      lcd.write(byte(0));//This writes the prefab symbols
      lcd.write(byte(1));
      lcd.write(byte(4));
      lcd.write(" ");
      lcd.write(" ");
      lcd.write(" ");
      lcd.setCursor(10, 1);
      lcd.write(byte(2));
      lcd.write(byte(3));
      lcd.write(byte(5));
      lcd.write(" ");
      lcd.write(" ");
      lcd.write(" ");
      playSong(1,1.30);//This plays the "beep"
      millisCounter = millisNow;
      displaying = 1;
      } else {lcd.setCursor(10, 0);lcd.write("      ");lcd.setCursor(10, 1);lcd.write("      ");playSong(1,1.30);displaying=0;millisCounter = millisNow;}
    }
    else if(mesafe <= 30)
    {
    lcd.setCursor(10, 0);
    lcd.write(byte(0));
    lcd.write(byte(1));
    lcd.write(byte(4));
    lcd.write(byte(6));
    lcd.write(" ");
    lcd.write(" ");
    lcd.setCursor(10, 1);
    lcd.write(byte(2));
    lcd.write(byte(3));
    lcd.write(byte(5));
    lcd.write(byte(7));
    lcd.write(" ");
    lcd.write(" ");
    playSong(2,2.07);
    }
    else if(mesafe <= 70){
    lcd.setCursor(10, 0);
    lcd.write(byte(0));
    lcd.write(byte(1));
    lcd.write(byte(4));
    lcd.write(byte(6));
    lcd.write(byte(6));
    lcd.write(" ");
    lcd.setCursor(10, 1);
    lcd.write(byte(2));
    lcd.write(byte(3));
    lcd.write(byte(5));
    lcd.write(byte(7));
    lcd.write(byte(7));
    lcd.write(" ");
    playSong(3,3.60);
    }
    else if(mesafe <= 100){
    lcd.setCursor(10, 0);
    lcd.write(byte(0));
    lcd.write(byte(1));
    lcd.write(byte(4));
    lcd.write(byte(6));
    lcd.write(byte(6));
    lcd.write(byte(6));
    lcd.setCursor(10, 1);
    lcd.write(byte(2));
    lcd.write(byte(3));
    lcd.write(byte(5));
    lcd.write(byte(7));
    lcd.write(byte(7));
    lcd.write(byte(7));
    playSong(4,3.60);
    }
  }
}

Kodları derleyebilmek için ekteki sıkıştırılmış klasörün içinden çıkan Animated-Sonic-Ruler-master.zip isimli kütüphaneyi arduinoya ekleyiniz.

489
Arduino Genel / 9. Fritzing İle Devre Tasarımı
« : 05 Temmuz 2015, 12:59:24 »
Fritzing, Arduino ve diğer elektronik tabanlı projelerde prototipten üretime geçerken üretim maliyetlerini azaltmayı ve çıkabilecek fiziksel sorunları en aza indirgemeyi amaçlayan açık kaynak kodlu bir devre tasarım programıdır. İndirmek için şağıdaki resime tıklayınız.



Fritzing, açık kaynak kodlu bir devre tasarım programıdır. Projeleriniz üretime geçmeden önce prototip hazırlamakta kullanılabilir. Linux, Windows, Mac OS X işletim sistemlerinde çalışabilen program, Arduino ve diğer elektronik tabanlı projelerde prototipten üretime geçerken üretim maliyetlerini azaltmayı ve ortaya çıkabilecek fiziksel sorunları en aza indirmeyi amaçlamaktadır.

Programın arayüzü kullanmayı çok basit kılan bir tasarıma sahiptir. Diğer elektronik programlarda olduğu gibi sürükle-bırak mantığı ile malzemeleri proje alanına yerleştiriyorsunuz ve bir breadboard üzerinde kablo yardımıyla malzemeleri birbirine bağlıyorsunuz. Eğer hatalı bir bağlantı yaparsanız program sizi renklerle (görsel olarak) uyarıyor. Bunun yanısıra isterseniz “Breadboard-Schematic-PCB” menüsü ile 3 tür proje görüntüsü arasında geçiş yapabiliyorsunuz. Yani program size şema ve baskı devre çıkarmanız için de yardımcı oluyor. Tabi ki profesyonel bir şekilde çıkaramıyor ama, siz progrtamın devreyi düzenlemesinde biraz yardımcı olursanız program size hiç de hafife alınmayacak seçenekler sunabiliyor. Tüm bunlara ek olarak sonucu PDF’ye aktararak daha sonra herhangi bir yazıcıdan asetata, kağıda vs.. çıktı almanızı mümkün kılıyor.

Programın en büyük eksiği simülasyon özelliğine sahip olmaması, ancak sağladığı Arduino , shield ve modül kütüphanesi desteği programı bu alanda çalışma yapanlar için oldukça kullanışlı hale getiriyor. Simülasyon oluşturma yönünde de çalışmaların olduğu ve yakın zamanda yeni versiyonlarda bu özelliğin kullanıcılara sunulabileceği söyleniyor.

Fritzing Programını İndirme ve Yükleme
Fritzing sitesi üzerinden işletim sisteminize uygun yükleme dosyasını seçip bilgisayarımıza indirerek başlayalım. Programı bilgisayarımıza yüklemek için sayfadaki yönergeleri izleyiniz. Tüm özellikleri aktif halde doğru bir yükleme yaparsanız, büyük parça kütüphaneleri de program içerisine eklenmiş olarak kurulum tamamlanacaktır. Teller, butonlar, dirençler gibi temel bileşenlerin yanı sıra, Arduino kartları ve sensörler de bu kütüphaneye dahil olarak size sunulmaktadır.

490
Led ve Buton uygulamaları / 5. Led ateş efekti
« : 05 Temmuz 2015, 00:22:13 »
Arduino ile yapılabilecek enteresan projelerden biri de ledlere yanma efekti verdirmedir. Burada mevcud olan 10 lede random değerler verdirilerek yanma efekti oluşturulur.
<iframe width="640" height="385" src="//www.youtube.com/embed/_whfpuDTNX0?fs=1&start=" frameborder="0" allowfullscreen></iframe>     





Arduino kodu:
Kod: [Seç]
int ledPin1 = 4;
int ledPin2 = 5;
int ledPin3 = 6;
int ledPin4 = 7;
int ledPin5 = 8;
int ledPin6 = 9;
int ledPin7 = 10;
int ledPin8 = 11;
int ledPin9 = 12;
int ledPin10 = 13;
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
}
void loop()
{
analogWrite(ledPin1, random(120)+350);
analogWrite(ledPin2, random(120)+350);
analogWrite(ledPin3, random(120)+350);
analogWrite(ledPin4, random(120)+350);
analogWrite(ledPin5, random(120)+350);
analogWrite(ledPin6, random(120)+350);
analogWrite(ledPin7, random(120)+350);
analogWrite(ledPin8, random(120)+350);
analogWrite(ledPin9, random(120)+350);
analogWrite(ledPin10, random(120)+350);
delay(random(100));
}

491
Arduino Genel / 21. Processinge android modunun eklenmesi
« : 30 Haziran 2015, 01:21:16 »
Processing ile android programları yazabilmek için processinge android modunu eklemek gerekiyor.
Bunun için aşağıdaki işlem basamaklarını sırayla uygulayınız:
1. Konu ekindeki AndroidMode.zip dosyasının içinden çıkan AndroidMode isimli klasörü C:/ Kullanıcılar/Siz/Belgelerim/Processing/modes/ dizinine ekleyin.

2. Processing programını çalıştırın. programın açılışında android-sdk dizinin nerede olduğunu soracaktır. C:\Users\siz\AppData\Local\Android dizinini gösterdiğinizde android modunu eklemiş oluyoruz.


492
Arduino Genel / 8. Android SDK Kurulumu
« : 29 Haziran 2015, 13:09:31 »
Arduino ve Android uygulama geliştirmeye başlamak için aşağıdaki 2 uygulamayı bilgisayarımıza kurmamız gerekiyor.

1. Java SE Development Kit(JDK)

İlk olarak, eğer daha önce yüklemediyseniz, Java SE Development Kit(JDK)’i yüklemeniz gerekmektedir. Aşağıdaki linklerden, gerekli yazılımın bilgisayarınıza uygun sürümünü seçerek indirip yükleyebilirsiniz. Android uygulamalar, Java kullanılarak yazıldığı için bu yüklemeyi yapmanız gerekmektedir.

Windows ve diğerleri için:  JDK


2. Eclipse ve Android SDK

Önceden Android’in resmi sitesinde (http://developer.android.com/) Android SDK’nın yanında geliştirme ortamı olarak Eclipse yer alırdı. Ama artık, Android Studio yer alıyor. Aşağıdaki linklerden Eclipse ve Android SDK’yı bulunduran dosyayı indirebilirsiniz.

Windows için: http://developer.android.com/sdk/installing/index.html?pkg=tools

493
Bu dersimizde foto direncin üzerine düşen ışığın şiddetine göre 10 adet ledi yakıp söndüreceğiz. Farklı ışık şiddeti değerlerinde arduino çıkışlarındaki ledlerden sadece biri ışık vermektedir. Kullandığınız ldrnin direnç değişimine göre ldrye seri bağlı olan direncin değerini deneme yanılma ile kendiniz belirleyiniz. Ben 220 kiloohm kullandım. 123d.circuits.io simülasyonında 1k direnç değerinde simüle yapılabildi.

LDRnin üzerine düşen ışığın şiddetine göre arduinonun 1 nolu analog girişine uygulanan gerilim 0 Volt ile 5 Volt arasında değişmektedir. Arduino programı bu gerilim değişikliklerini değerlendirerek hangi dijital çıkışın aktif olacağına karar vermekte ve o çıkıştaki ledin yanmasını sağlamaktadır. Bu mantıkla her ışık şiddetine karşılık gelen bir dijital veri elde etmiş oluyoruz. Bu dijital veriyi de birçok arduino projesinde kullanabiliriz.

Arduino kodları:
Kod: [Seç]
/* ========================================================
    Project : Photo resistor (Light dependent resistor) and LEDs
     Author : ScottC
    Created : 23rd May 2011
Description : Use a photo resistor to create an LED animation.
============================================================
*/

//Define the analog pin the photo resistor is connected to (A0)
int photoRPin = 0;   

void setup() {
    //initialise the LED Pins as OUTPUTS
    for (int i=4; i<14; i++){
      pinMode (i, OUTPUT);
    }
}

void loop(){
    //Turn off all the LEDs before continuing
    for (int i=4; i<14; i++){
      digitalWrite(i, LOW);
    }
   
 /* Read the light level:
     Adjust the analog reading values ranging from 120 to 600
     to span a range of 4 to 13. The analog reading of 120
     is when there is maximum resistance, and the value of 600
     is when there is minimum resistance. These analog readings
     may vary from photo resistor to photo resistor, and therefor
     you may need to adjust these values to suit your particular
     LDR. */
    int photoRead = map(analogRead(photoRPin), 120, 600, 4, 13);
   
    /* Make sure the value of photoRead does not go beyond the values
      of 4 and 13 */
    int ledPin = constrain(photoRead, 4, 13);
   
    /* Turn the LED on for a fraction of a second */
    digitalWrite(ledPin, HIGH);
    delay(10);
    digitalWrite(ledPin, LOW);
}
Devre şeması:


Deney borduna montajı:



123d.circuits.io simülasyonu:
<iframe width="640" height="385" src="//www.youtube.com/embed/tyyFxX_4kyU?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Reel videosu:
<iframe width="640" height="385" src="//www.youtube.com/embed/e3nKqidq548?fs=1&start=" frameborder="0" allowfullscreen></iframe>

ISIS simülasyonu:
<iframe width="640" height="385" src="//www.youtube.com/embed/3NWbE1SbeHg?fs=1&start=" frameborder="0" allowfullscreen></iframe>

494
Bu dersimizde arduino ethernet shild kullanarak 2 adet röleyi internet tarayıcınız üzerinden açıp kapatma uygulaması yapacağız. Uygulamayı yapabilmek için öncelikle arduino programınıza weduino kütüphanesinin ekli olması gereklidir. Webduino kütüphanesi ekli değilse öncelikle webduino kütüphanesini ekleyiniz.

Arduino kodlarımız:
Kod: [Seç]
#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

#define RELAY1 8
#define RELAY2 9
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
boolean ROLE1Durum = false;
boolean ROLE2Durum = false;

static uint8_t ip[] = { 192, 168, 2, 55 };
#define ONEK ""
WebServer webserver(ONEK, 80);

/* Ana sayfa isteği geldiğinde çağırılacak fonksiyon */
void anaSayfa(WebServer &server, WebServer::ConnectionType baglantiTipi, char *, bool)
{

  server.httpSuccess();

  if (baglantiTipi != WebServer::HEAD)
  {
    LEDdurumlariniGoster(server);
  }
}

void ROLE1AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY1,HIGH);
    LEDdurumlariniGoster(server);
  }
}

void ROLE1KapatKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY1,LOW);   
    LEDdurumlariniGoster(server);
  }
}

void ROLE2AcKomut(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
     digitalWrite(RELAY2,HIGH);   
     LEDdurumlariniGoster(server);
  }
}

void ROLE2KapatKomut(WebServer &server, WebServer::ConnectionType type, char * , bool)
{
  server.httpSuccess();

  if (type != WebServer::HEAD)
  {
    digitalWrite(RELAY2,LOW);
    LEDdurumlariniGoster(server);
  }
}

void LEDdurumlariniGoster(WebServer &server)
{
   /*
   P() makrosu ile string'leri RAM yerine program
   belleğine kaydedebiliyoruz. Server'a gönderirken de
   printP() fonksiyonunu kullanıyoruz
   */
    P(htmlHead) =
    "<html>"
    "<head>"
    "<title>Arduino Web Sunucusu</title>"
     "<link rel='stylesheet' type='text/css' href='http://temrinlerim.org/ethernet.css' />"
    "</head>"
    "<body>";
   
    server.printP(htmlHead);
    /*
    LED'lerin durumlarını yazdırıyoruz ve açma / kapama
    işlemleri için linkleri yazdırıyoruz
    */
    server.print("<h2>RELAY1:</h2>");
    if(digitalRead(RELAY1))
    {
server.print("AÇIK<BR /><BR />");
      server.println("<a href=\"ROLE1Kapat\"> KAPAT</a>");
    }
    else
    {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLE1Ac\"> AÇ</a>");
    }
    server.print("<h2>RELAY2:</h2>");
    if(digitalRead(RELAY2))
    {
server.print("AÇIK<BR /><BR />");
      server.println("<a href=\"ROLE2Kapat\"> KAPAT</a>");
    }
    else
    {
server.print("KAPALI<BR /><BR />");
      server.println("<a href=\"ROLE2Ac\"> AÇ</a>");
    }
}

void setup()
{
  // LED Pinlerini çıkış olarak ayarlıyoruz
  pinMode(RELAY1,OUTPUT);
  pinMode(RELAY2,OUTPUT);
  digitalWrite(RELAY1,LOW);
  digitalWrite(RELAY2,LOW);

  /* IP ve MAC adresi ile ethernet bağlantısını başlatıyoruz */
  Ethernet.begin(mac, ip);

  /* Web sunucuya gelen isteklere göre çağırılacak fonksiyonları listeye ekliyoruz */
 
  /* Varsayılan istek */
  webserver.setDefaultCommand(&anaSayfa);
  /* ana sayfa isteği geldiğinde */
  webserver.addCommand("index.html", &anaSayfa);
  /* Diğer istekler */
  webserver.addCommand("ROLE1Ac", &ROLE1AcKomut);
  webserver.addCommand("ROLE1Kapat", &ROLE1KapatKomut);
  webserver.addCommand("ROLE2Ac", &ROLE2AcKomut);
  webserver.addCommand("ROLE2Kapat", &ROLE2KapatKomut);

  /* Sunucuyu başlatıyoruz */
  webserver.begin();
}

void loop()
{
  char webserver_tampon[64];
  int boyut = 64;

  /* Sürekli olarak gelen istekleri işliyoruz */
  webserver.processConnection(webserver_tampon, &boyut);
}

ISIS Devre şeması:


ARES Baskı Devresi:


Tarayıcı arayüzü:


Devrenin bitmiş hali:




495
Arduino Genel / 7. Webduino kütüphanesinin eklenmesi
« : 25 Haziran 2015, 21:42:13 »
Arduino ile web sunucu işlemlerini yapabilmek için webduino kütüphanesini github.com sitesinden ya da konu ekinden indirip libraries klasörüne atılması gerekiyor. Bundan sonra kullandığınız tarayıcı arayüzleri ile internet üzerinden çalışan uygulamaları yapmaya başlayabilirsiniz.

Sayfa: 1 ... 31 32 [33] 34 35 ... 45