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
« : 21 Temmuz 2015, 21:18:51 »
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.  C# kodları: 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ı: 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.trFritzing çizimi:Fritzing dosyasını konu ekinden indirebilirsiniz.
467
« : 20 Temmuz 2015, 00:00:44 »
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. Fritzing çizimi:Fritzing dosyaları ektedir. Arduino kodlarımız:/* 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
« : 19 Temmuz 2015, 23:21:42 »
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. Fritzing şeması:Fritzing dosyasını konu ekinden indirebilirsiniz. Arduino kodlarımız: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
« : 19 Temmuz 2015, 11:54:46 »
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. Fritzing çizimi:Fritzing dosyasını konu ekinden indirebilirsiniz. ISIS simülasyonu:ISIS çizimi:ISIS dosyasını ve hex dosyasını konu ekinden indirebilirsiniz. Arduino kodları:/* 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
« : 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. 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:// # 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
« : 15 Temmuz 2015, 12:15:43 »
Devrenin bitmiş hali: Kodlarımız: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
« : 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: #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
« : 15 Temmuz 2015, 07:05:10 »
Bu uygulamamızda joystick pozisyonunu seri monitör ekranından okuyacağız. Kodlarımız: 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
« : 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: //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: //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
« : 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. 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
« : 14 Temmuz 2015, 15:23:33 »
477
« : 13 Temmuz 2015, 18:50:04 »
478
« : 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ı: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
« : 13 Temmuz 2015, 17:32:24 »
Bu uygulamada Merhaba Dunya yazısı bilgisayarda Seri monitörde çıkacaktır.  Arduino Kodları: 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
« : 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. 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ı:/* 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
|