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 ... 30 31 [32] 33 34 ... 45
466
Bilgisayar arayüzünü konu ekinden indirebilirsiniz. Arayüzdeki butonlara tıklayarak çıkıştaki ledleri ya da röleleri kontrol edebilirsiniz. Devre mevcut hali ile led çıkışlı tasarlanmıştır. Arduinonuz için bir shild tasarlayarak röle çıkışlı hale getirebilirsiniz.



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



C# kodları:
Kod: [Seç]
using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ON_OFF // Uygulamamızın Adı
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
           
        }

       /*
       Aşağıdaki kod dizisinde yaptığımız resimlere tıklandığında serial üzerinden ilgili buton resmi için ilgili arduino                pinini tetikleyecek bir String değer göndermek. Aynı zamanda görsellik için her resme tıkladığımızda resimin                    değişip off yada on resminin açılması. Bunuda picture.Box ların görünürlüğünü kontrol eden "visible" özelliği ile            yaptık.Aşağıdaki "pictureBox1_Click" kısmında Serialden String "1" verisi göndererek 1 nolu ledin yanması                      sağlanacaktır.
       */

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            pictureBox1.Visible = false;
            pictureBox2.Visible = true;
            serialPort1.Write("1");
           
        }

        /*
            Aşağıdaki "pictureBox2" ise ilk butonun ON resmidir.  "pictureBox2_Click" ile arduinodaki ilk lede string            "2" gönderilerek ledin kapanması sağlanır. Yine bu tıklama işlemi ile resim değişerek ilk resim OFF ortaya çıkarak             ON resmi kaybolur.
        */

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            pictureBox1.Visible = true;
            pictureBox2.Visible = false;
            serialPort1.Write("2");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < System.IO.Ports.SerialPort.GetPortNames().Length; i++)
            {
                comboBox1.Items.Add(System.IO.Ports.SerialPort.GetPortNames()[i]);
            }
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            pictureBox3.Visible = false;
            pictureBox4.Visible = true;
            serialPort1.Write("3");
        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {
            pictureBox3.Visible = true;
            pictureBox4.Visible = false;
            serialPort1.Write("4");
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {
            pictureBox5.Visible = true;
            pictureBox6.Visible = false;
            serialPort1.Write("6");
        }

        private void pictureBox5_Click(object sender, EventArgs e)
        {
           
            pictureBox5.Visible = false;
            pictureBox6.Visible = true;
            serialPort1.Write("5");
        }

        private void pictureBox7_Click(object sender, EventArgs e)
        {
            pictureBox7.Visible = false;
            pictureBox8.Visible = true;
            serialPort1.Write("7");
        }

        private void pictureBox8_Click(object sender, EventArgs e)
        {
            pictureBox7.Visible = true;
            pictureBox8.Visible = false;
            serialPort1.Write("8");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = comboBox1.Text;
            label6.Text = "Arduino'ya Bağlandı (" + comboBox1.Text + ")";
            serialPort1.Open();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            label6.Text = "COM Port Seç !";
            serialPort1.Close();
        }
       
    }
}

Arduino kodları:
Kod: [Seç]
int gelen;
int Led1=4;
int Led2=5;
int Led3=6;
int Led4=7;

void setup() {

Serial.begin(9600);
pinMode(Led1,OUTPUT);
pinMode(Led2,OUTPUT);
pinMode(Led3,OUTPUT);
pinMode(Led4,OUTPUT);
}
void loop()
{
  if(Serial.available() >0)  // Serial haberleşmenin aktif olup olmadığının kontrolü
    {
      gelen = Serial.read(); // Serialden gelen veri "gelen" değişkenine yazılır
      if(gelen == '1')            // Gelen verilerin kontrolü yapılarak ilgili ledler yakılır.
      {
        digitalWrite(Led1,HIGH);
      }
      if(gelen == '2')
      {
        digitalWrite(Led1,LOW);
      }
      if(gelen == '3')
      {
        digitalWrite(Led2,HIGH);
      }
      if(gelen == '4')
      {
        digitalWrite(Led2,LOW);
      }
      if(gelen == '5')
      {
        digitalWrite(Led3,HIGH);
      }
      if(gelen == '6')
      {
        digitalWrite(Led3,LOW);
      }
      if(gelen == '7')
      {
        digitalWrite(Led4,HIGH);
      }
      if(gelen == '8')
      {
        digitalWrite(Led4,LOW);
      }
    }
}

Kodlama ve arayüz tasarımı: Robot projeleri mvaslan.blogspot.com.tr

Fritzing çizimi:
Fritzing dosyasını konu ekinden indirebilirsiniz.


467
1982-1986 yılları arasında ABD'de yayınlanan ve dünyanın birçok ülkesinde popüler olan bir televizyon dizisi olan Kara Şimşek, Türkiye'de de TRT tarafından yayınlanmıştır. Bu dizideki Knight Rider ışık efektini arduino kullanarak yapacağız.
<iframe width="640" height="385" src="//www.youtube.com/embed/ArMJQ8h96uM?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Fritzing çizimi:
Fritzing dosyaları ektedir.


Arduino kodlarımız:
Kod: [Seç]
/* Knight Rider 3
 * --------------
 *
 * This example concentrates on making the visuals fluid.
 *
 *
 * (cleft) 2005 K3, Malmo University
 * @author: David Cuartielles
 * @hardware: David Cuartielles, Aaron Hallborg
 */

int pinArray[] = { 3, 4, 5, 6, 7, 8, 9};
int count = 0;
int timer = 10;

void setup(){
  for (count=0;count<8;count++) {
    pinMode(pinArray[count], OUTPUT);
  }
}

void loop() {
  for (count=0;count<6;count++) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count + 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
  for (count=6;count>0;count--) {
   digitalWrite(pinArray[count], HIGH);
   delay(timer);
   digitalWrite(pinArray[count - 1], HIGH);
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(timer*2);
  }
}

468
Bu dersimizde bir ledi arduino ile yavaş yavaş yakıp yavaş yavaş söndüreceğiz. Kodlamadaki parametreleri değiştirerek ortaya çıkan animasyonu değiştirebilirsiniz.
<iframe width="640" height="385" src="//www.youtube.com/embed/jh_dPHIkH2U?fs=1&start=" frameborder="0" allowfullscreen></iframe>



Fritzing şeması:
Fritzing dosyasını konu ekinden indirebilirsiniz.


Arduino kodlarımız:
Kod: [Seç]
int i = 0;
const int LED = 11; //define the pin we use for LED
 
void setup() {
  pinMode(LED, OUTPUT); //set pin 11 as OUTPUT
}
 
void loop() {
    for (int i = 0; i < 255; i++){ //if i is less than 255 then increase i with 1
    analogWrite(LED, i); //write the i value to pin 11
    delay(6); //wait 5 ms then do the for loop again
  }
  for (int i = 255; i > 0; i--){ //descrease i with 1
    analogWrite(LED, i);
    delay(6);
  }
}

469
Bu dersimizde arduino ve 7 segment ortak katot display kullanarak 0-9 ileri sayıcı uygulaması yapacağız. Butona her basıldığında displayde görüntülen rakam 1 artacaktır.


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

Fritzing çizimi:
Fritzing dosyasını konu ekinden indirebilirsiniz.


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

ISIS çizimi:
ISIS dosyasını ve hex dosyasını konu ekinden indirebilirsiniz.





Arduino kodları:
Kod: [Seç]
/*
Arduino 7-Segment LED Display for Common Cathode Displays
Arduino Pins: 2,3,4,5,6,7,8
Display Pins: 7,6,4,2,1,9,10
Display Pins 3&8 should go to GND
Switch Input is at Pin 9
Source: http://www.electroschematics.com/9636/arduino-segment-display-counter/
*/
byte numbers[10] = {
                    B11111100, B01100000, B11011010, B11110010, B01100110,
                    B10110110, B10111110, B11100000, B11111110, B11100110
                    };
void setup() {
    for(int i = 2; i <= 8; i++) {
        pinMode(i, OUTPUT);
    }
    pinMode(9, INPUT);
}
 
int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;
 
void loop() {
    if(go_by_switch) {
        int switch_input_value = digitalRead(9);
        if(last_input_value == LOW && switch_input_value == HIGH) {
            counter = (counter + 1) % 10;
        }
        last_input_value = switch_input_value;
    } else {
        delay(500);
        counter = (counter + 1) % 10;
    }
    writeNumber(counter);
}
 
void writeNumber(int number) {
    if(number < 0 || number > 9) {
        return;
    }
    byte mask = numbers[number];
    byte currentPinMask = B10000000;
    for(int i = 2; i <= 8; i++) {
        if(mask & currentPinMask) digitalWrite(i,HIGH);
        else digitalWrite(i,LOW);
    currentPinMask = currentPinMask >> 1;
    }
}

470
Motor kontrol uygulamaları / 11. L298 İle Motor Kontrolü
« : 18 Temmuz 2015, 16:18:57 »
L298N Voltaj Regulatörlü Çift Motor Sürücü Kartı ve arduino ile 2 dc motoru birer saniye aralıklarla sıralı çalıştıracağız.
<iframe width="640" height="385" src="//www.youtube.com/embed/vlgRVPCk0aA?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Kodlarda editleme yaparak süreyi ve motor hızını ayarlayabilirsiniz.
24V'a kadar olan motorları sürmek için hazırlanmış olan bu motor sürücü kartı, iki kanallı olup, kanal başına 2A akım vermektedir. Kart üzerinde L298N motor sürücü entegresi kullanılmıştır. Sumo, mini sumo, çizgi izleyen robotlarda ve çok çeşitli motor kontrol uygulamalarında kullanılabilir.
 
DC motorlardan ayrı olarak step motor kontrolüne de imkan sağlamaktadır. Daha ayrıntılı bilgi için aşağıdaki örnek dokumanı inceleyebilirsiniz.

Özellikleri:
Birbirinden bağımsız olarak iki ayrı motoru kontrol edebilir.
Kanal başına 2A akım verebilmektedir.
Üzerinde dahili regülatörü vardır.
Yüksek sıcaklık ve kısa devre koruması vardır.
Motor dönüş yönüne göre yanan ledler vardır.
Kart üzerinde dahili soğutucu vardır.
Akım okuma (current sense) pinleri dışa verilmiş haldedir.
Kartın 4 yanında istenilen yüzeye sabitleyebileceğiniz 4 adet vida deliği bulunmaktadır.
Pin Bağlantıları :
ENA: Sol motor kanalını aktif etme pini
IN1: Sol motor 1. girişi
IN2: Sol motor 2. girişi
IN3: Sağ motor 1. girişi
IN4: Sağ motor 2. girişi
ENB: Sağ motor kanalını aktif etme pini
MotorA: Sol motor çıkışı
MotorB: Sağ motor çıkışı
VCC: Besleme voltaj girişi(4.8V-24V)
GND: Toprak bağlantısı
5V: 5V çıkışı
Ürün üzerinde ayrıca jumper takılmış pinler de yer almaktadır. Bu pinler opsiyonel kullanımlar ve farklı özellikleri aktif etmek için kullanılabilinmektedir.
CSA: A motor sürücü kanalının akım çıkışıdır. Buradan jumper çıkarılarak çekilen akım değeri analog voltaj olarak okunabilinmektedir.
CSB: B motor sürücü kanalının akım çıkışıdır. Buradan jumper çıkarılarak çekilen akım değeri analog voltaj olarak okunabilinmektedir.
V1: IN1 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
V2: IN2 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
V3: IN3 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
V4: IN4 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
5V-EN: 7805 hattını aktif ve pasif hale getiren jumperder. Takılı durumda kartın 5V çıkışı aktif olur ve buradan 5V çekilebilir. Çıkarıldığı durumda ise bu hat pasif konuma geçer.

Kodlarımız:
Kod: [Seç]
// # Editor     : Lauren from DFRobot
// # Date       : 17.02.2012
 
// # Product name: L298N motor driver module DF-MD v1.3
// # Product SKU : DRI0002
// # Version     : 1.0
 
// # Description:
// # The sketch for using the motor driver L298N
// # Run with the PWM mode
 
// # Connection:
// #        M1 pin  -> Digital pin 4
// #        E1 pin  -> Digital pin 5
// #        M2 pin  -> Digital pin 7
// #        E2 pin  -> Digital pin 6
// #        Motor Power Supply -> Centor blue screw connector(5.08mm 3p connector)
// #        Motor A  ->  Screw terminal close to E1 driver pin
// #        Motor B  ->  Screw terminal close to E2 driver pin
// #
// # Note: You should connect the GND pin from the DF-MD v1.3 to your MCU controller. They should share the GND pins.
// #
 
int E1 = 6;
int M1 = 7;
int E2 = 5;                         
int M2 = 4;                           
 
void setup()
{
    pinMode(M1, OUTPUT);   
    pinMode(M2, OUTPUT);
}
 
void loop()
{
  int value;
  for(value = 0 ; value <= 255; value+=128)
  {
    digitalWrite(M1,HIGH);   
    digitalWrite(M2,LOW);       
    analogWrite(E1, value);   //PWM Speed Control
    analogWrite(E2, value);   //PWM Speed Control
    delay(1000);
    digitalWrite(M1,LOW);   
    digitalWrite(M2,HIGH);       
    analogWrite(E1, value);   //PWM Speed Control
    analogWrite(E2, value);   //PWM Speed Control
    delay(1000);
  } 
}

Resimler:




Devre elemanları bağlantısına ait açıklama kodlar içerisinde Connection: başlığı altında mevcuttur.

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

Devrenin bitmiş hali:



Kodlarımız:
Kod: [Seç]
int pot=A5;
int motor=5;
int hiz;

void setup() {
 
}

void loop() {
  hiz= analogRead(pot);
  hiz= map(hiz, 0, 1023, 0, 225);
  analogWrite(motor, hiz);
  delay(10);
}

Devre elemanlarının deney borduna yerleşimi:
Fritzing dosyası konu ekinde mevcuttur.


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

472
Arduino Genel / 19. Ultrasonik Sensör
« : 15 Temmuz 2015, 07:43:06 »
Bu uygulamada ultrasonik mesafe sensörünün algıladığı mesafeyi cm cinsinden seri port ekranından görüntüleyeceğiz.





Kodlarımız:
Kod: [Seç]
#define trigPin 3 // Tetik Pini
#define echoPin 4 // Eko Bilgi Alma Pini
const int groundpin = 5; // Toprak Ucu
const int powerpin = 2; // +5V Ucu
void setup() // Tanımlamalar
{
pinMode(groundpin, OUTPUT); // Toprak Pini Çıkış Yapıldı
pinMode(powerpin, OUTPUT); // 5V Pini Çıkış Yapıldı
digitalWrite(groundpin, LOW); // Ground 0V'a çekildi
digitalWrite(powerpin, HIGH); // PowerPin 5V'a çekildi.
Serial.begin (9600); // İletişim hızı belirlendi
pinMode(trigPin, OUTPUT); // Tetik Pini Çıkış
pinMode(echoPin, INPUT); // Eko Bilgi Pini Giriş
}
void loop() {
long duration, distance; //Duration ve distance değişkenleri long değişkeni olarak tanımlanıyor.
digitalWrite(trigPin, LOW); // Düşüğe çek
delayMicroseconds(2); // 2 mikrosaniye bekle
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // 10 Mikrosaniye Yüksekte Bekle
digitalWrite(trigPin, LOW); // Tetik Pinini düşüğe (0V) çek
duration = pulseIn(echoPin, HIGH); // Eko Bilgi Pini 5V gelmesinden itibaren süre ölç duration bilgisine kaydet
distance = (duration/2) / 29.1; //Mesafe santimetre çevrimi için oranlama
if (distance >= 200 || distance <= 0){
Serial.println("Menzil Disi"); //Menzil Dışında
}
else {
Serial.print(distance); // Cm bilgisini ilet
Serial.println(" cm"); // Cm Yaz:
}
delay(500); //500 ms bekle
}

473
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






474
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:

475
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.

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


477
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
}







478
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)
{}
}

479
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
}

480
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.

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