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
Konular - Hasan ERTURK
1
« : Mart 23, 2019, 11:48:00 ÖÖ »
Arduino Boy Ölçer UygulamasıBu projemizde HC SR-04 mesafe sensörü kullanarak boy ölçer yapacağız. Boy bilgisi 16x2 lcd ekranda görüntülenecektir. AmaçBoy ölçer yapma becerisi kazanmak. Seviye:Orta seviye Şema 1: Boy ölçer fritzing devre şeması Arduino kodları#include <LiquidCrystal.h> // likid kristal kutuphanesi eklendi LiquidCrystal lcd(8,9,4,5,6,7); // likid kristal pinleri #define echoPin 2 // eko pini D2 #define trigPin 3 // tetik pini D3 #define buton 13 // buton pini D13 long sure, kalibre_mesafesi, cisim_ile_sensor_arasindaki_mesafe, boy;
void setup() { pinMode(echoPin, INPUT); pinMode(trigPin,OUTPUT); acilis_iletisi(); kalibre_et(); }
void loop() { olcumu_baslat(); if(digitalRead(buton) == 1) { olcum_yap(); sure_hesapla(); cisim_ile_sensor_arasindaki_mesafeyi_hesapla(); boy_hesapla(); } }
void acilis_iletisi() { lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print("BOY OLCER "); lcd.setCursor(0,1); lcd.print("4006 BiLiM FUARI"); delay(1500); }
void kalibre_et() { digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); sure = pulseIn(echoPin, HIGH); kalibre_mesafesi = sure / 29.1 / 2; lcd.clear(); lcd.setCursor(0,0); lcd.print("KALiBRASYON"); lcd.setCursor(0,1); lcd.print("YAPILDI"); delay(1000); }
void olcumu_baslat() { lcd.clear(); lcd.setCursor(0,0); lcd.print("BOYUNUZU OLCMEK"); lcd.setCursor(0,1); lcd.print("iCiN BUTON BASIN"); delay(200); }
void olcum_yap() { lcd.clear(); lcd.setCursor(0,0); lcd.print("BOYUNUZ"); lcd.setCursor(0,1); lcd.print("OLCULUYOR"); delay(1000); digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); }
void sure_hesapla() { sure = pulseIn(echoPin, HIGH); // Eko pini 5V gelmesinden itibaren süre ölç sure degiskenine kaydet }
void cisim_ile_sensor_arasindaki_mesafeyi_hesapla() { cisim_ile_sensor_arasindaki_mesafe = sure / 29.1 / 2; }
void boy_hesapla() { boy = kalibre_mesafesi - cisim_ile_sensor_arasindaki_mesafe; lcd.clear(); lcd.setCursor(0,0); lcd.print("BOYUNUZ "); lcd.print(boy); lcd.print(" cm "); lcd.setCursor(0,1); lcd.print("OLARAK OLCULDU "); delay(5000); } Malzeme listesiDownloadİhtiyaç duyulması halinde projeye ait dosyaları buraya tıklayıp indirebilirsiniz.
2
« : Mart 10, 2019, 09:24:11 ÖÖ »
İşlem Basamakları:1. RTC bağlantısı yukarıdaki resimde görüldüğü gibi yapılır. 2. RTC kütüphanesi eklenir. 3. Aşağıdaki kodlamada bulunan 25. satırdaki tarih ve saat bilgisi güncellenerek kodlar yüklenir. // Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h> #include "RTClib.h"
RTC_DS1307 rtc;
void setup () { Serial.begin(9600); #ifdef AVR Wire.begin(); #else Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due #endif rtc.begin();
// if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); Serial.println((__DATE__, __TIME__)); // following line sets the RTC to the date & time this sketch was compiled // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); rtc.adjust(DateTime(__DATE__, __TIME__)); //yes - I want it to adjust to compile time // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: rtc.adjust(DateTime(2019, 3, 10, 9, 54, 0)); // } }
void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future DateTime future (now.unixtime() + 7 * 86400L + 30); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(3000); }
3
« : Ocak 03, 2019, 10:01:57 ÖÖ »
Arduino idesinin göz yorucu temasından sıkılanlar için bir alternatif. Kurulum için işlem basamakları:1. github.com sitesinden ya da konu ekinden temayı indirin. 2. Arduinonun default (varsayılan) teması C:\Program Files (x86)\Arduino\lib yolunda theme isimli klasörde bulunur. Bu klasörün ismini değiştirin. örneğin theme_eski gibi. 3. İndirmiş olduğunuz zipli dosyayı masa üstüne çıkarın. DarkArduinoTheme-master isimli klasörün içindeki theme isimli klasörü C:\Program Files (x86)\Arduino\lib içerine bırakın. Tema değişimi tamamlandı. Güle güle kullanın.
4
« : Ekim 18, 2018, 09:44:50 ÖÖ »
Bu projemizde dijital 2 pinine bağlı butona basıldığında dijital 10. pine bağlı ledi yakan devreyi yapacağız. Buton bırakıldığında led sönecektir. Devre şeması: Fritzing devre şeması Kod blokları S4A kod blokları Malzeme listesi
5
« : Ekim 16, 2018, 06:28:57 ÖS »
Bu devreyi tamamladığınızda video 1'de görüldüğü gibi 2 adet ledin 0,5 saniye aralıklarla sırayla yanıp söndüğünü gözlemleyeceksiniz. Video 1: S4A Blink Devremizi fotoğraf 1 ve şema 1'de görüldüğü gibi kuruyoruz. Şema 1: Frtitzing devre şeması Fotoğraf 1: Devrenin tamamlanmış hali Program blogları resim 1'de görüldüğü gibi S4A programını kullanarak hazırlanır. Resim 1: S4A blokları Malzeme listesi
6
« : Ekim 16, 2018, 06:25:08 ÖS »
Herhangi bir programlama dili bilmeden tamamen görsel olarak Arduino programlayabilirsiniz. programlamaya başlamadan önce bir ön hazırlığımız olacak. Aşağıdaki açıklamaları takip ederek ön bilgilenmeyi tamamladıktan sonra kod yazmadan arduino programlamaya başlayabilirsiniz. Scracth Nedir?Scratch yazılım geliştirme platformu ve programlama dili çocukların bilgisayar programlamaya ilk adımları atmalarını sağlamak amacıyla geliştirilmiştir. S4A Nedir?S4A programı Scratch tabanlı bir programlama dilidir. İçerisinde Arduino’yu kontrol etmemizi sağlayan bazı programlama blokları bulunur. Bu program blokları sayesinde kod yazmadan tamamen görsel olarak Arduino’yu programlayabilirsiniz. Programınızı bloklar halinde yazıyor olmanız dışında S4A’nın Türkçe dil desteğinin olması programlamaya ayrı bir kolaylık getiriyor. Programın avantajlarından birisi ise yalnızca bilgisayardan veri gönderme değil aynı zamanda Arduino’dan gelen verileri de okuyabiliyorsunuz. Bu sayede daha zengin programlar yazabilirsiniz. Öncelikle buraya tıklayarak Arduino’nun yazılımını indirmelisiniz. Ardından aşağıdaki kodları bir defaya mahsus arduinoya yüklemeniz gerekiyor. typedef enum { input, servomotor, pwm, digital } pinType;
typedef struct pin { pinType type; //Type of pin int state; //State of an output //byte value; //Value of an input. Not used by now. TODO };
pin arduinoPins[14]; //Array of struct holding 0-13 pins information
unsigned long lastDataReceivedTime = millis();
void setup() { Serial.begin(38400); Serial.flush(); configurePins(); resetPins(); }
void loop() { static unsigned long timerCheckUpdate = millis();
if (millis()-timerCheckUpdate>=20) { sendUpdateServomotors(); sendSensorValues(); timerCheckUpdate=millis(); }
readSerialPort(); }
void configurePins() { arduinoPins[0].type=input; arduinoPins[1].type=input; arduinoPins[2].type=input; arduinoPins[3].type=input; arduinoPins[4].type=servomotor; arduinoPins[5].type=pwm; arduinoPins[6].type=pwm; arduinoPins[7].type=servomotor; arduinoPins[8].type=servomotor; arduinoPins[9].type=pwm; arduinoPins[10].type=digital; arduinoPins[11].type=digital; arduinoPins[12].type=digital; arduinoPins[13].type=digital; }
void resetPins() { for (byte index=0; index <=13; index++) { if (arduinoPins[index].type!=input) { pinMode(index, OUTPUT); if (arduinoPins[index].type==servomotor) { arduinoPins[index].state = 255; servo (index, 255); } else { arduinoPins[index].state=0; digitalWrite(index,LOW); } } } }
void sendSensorValues() { unsigned int sensorValues[6], readings[5]; byte sensorIndex;
for (sensorIndex = 0; sensorIndex < 6; sensorIndex++) //for analog sensors, calculate the median of 5 sensor readings in order to avoid variability and power surges { for (byte p = 0; p < 5; p++) readings[p] = analogRead(sensorIndex); insertionSort(readings, 5); //sort readings sensorValues[sensorIndex] = readings[2]; //select median reading }
//send analog sensor values for (sensorIndex = 0; sensorIndex < 6; sensorIndex++) ScratchBoardSensorReport(sensorIndex, sensorValues[sensorIndex]);
//send digital sensor values ScratchBoardSensorReport(6, digitalRead(2)?1023:0); ScratchBoardSensorReport(7, digitalRead(3)?1023:0); }
void insertionSort(unsigned int* array, unsigned int n) { for (int i = 1; i < n; i++) for (int j = i; (j > 0) && ( array[j] < array[j-1] ); j--) swap( array, j, j-1 ); }
void swap(unsigned int* array, unsigned int a, unsigned int b) { unsigned int temp = array[a]; array[a] = array[b]; array[b] = temp; }
void ScratchBoardSensorReport(byte sensor, int value) //PicoBoard protocol, 2 bytes per sensor { Serial.write( B10000000 | ((sensor & B1111)<<3) | ((value>>7) & B111)); Serial.write( value & B1111111); }
void readSerialPort() { byte pin; int newVal; static byte actuatorHighByte, actuatorLowByte; static byte readingSM = 0;
if (Serial.available()) { if (readingSM == 0) { actuatorHighByte = Serial.read(); if (actuatorHighByte >= 128) readingSM = 1; } else if (readingSM == 1) { actuatorLowByte = Serial.read(); if (actuatorLowByte < 128) readingSM = 2; else readingSM = 0; }
if (readingSM == 2) { lastDataReceivedTime = millis(); pin = ((actuatorHighByte >> 3) & 0x0F); newVal = ((actuatorHighByte & 0x07) << 7) | (actuatorLowByte & 0x7F);
if(arduinoPins[pin].state != newVal) { arduinoPins[pin].state = newVal; updateActuator(pin); } readingSM = 0; } } else checkScratchDisconnection(); }
void reset() //with xbee module, we need to simulate the setup execution that occurs when a usb connection is opened or closed without this module { resetPins(); // reset pins sendSensorValues(); // protocol handshaking lastDataReceivedTime = millis(); }
void updateActuator(byte pinNumber) { if (arduinoPins[pinNumber].type==digital) digitalWrite(pinNumber, arduinoPins[pinNumber].state); else if (arduinoPins[pinNumber].type==pwm) analogWrite(pinNumber, arduinoPins[pinNumber].state); }
void sendUpdateServomotors() { for (byte p = 0; p < 10; p++) if (arduinoPins[p].type == servomotor) servo(p, arduinoPins[p].state); }
void servo (byte pinNumber, byte angle) { if (angle != 255) pulse(pinNumber, (angle * 10) + 600); }
void pulse (byte pinNumber, unsigned int pulseWidth) { digitalWrite(pinNumber, HIGH); delayMicroseconds(pulseWidth); digitalWrite(pinNumber, LOW); }
void checkScratchDisconnection() //the reset is necessary when using an wireless arduino board (because we need to ensure that arduino isn't waiting the actuators state from Scratch) or when scratch isn't sending information (because is how serial port close is detected) { if (millis() - lastDataReceivedTime > 1000) reset(); //reset state if actuators reception timeout = one second }
Bu sayede S4A programı ile Arduino arasında ilk haberleşmeyi sağlayacaksınız. S4A programının Arduino’nuzu tanıması için S4AFirmware16 isimli programı Arduino’ya atmanız gerekiyor. Sonrasında bu işlemi tekrarlamanıza gerek yok. S4A’yı buraya tıklayarak indirebilirsiniz. S4A programının kurduktan sonra aşağıda ki görüntü ile karşılaşacaksınız. Sol tarafta ki program bloklarını kullanarak programınızı oluşturabilir ve Arduino’da çalışmasını sağlayabilirsiniz. S4A ile programlamaya hemen başlayın !
7
« : Ağustos 03, 2018, 10:04:59 ÖÖ »
Not: Bu pakette Orjinal Arduino Uno bulunmaktadır.Bluetooth kontrolllü robot araba setidir. Paket İçeriği: Orjinal Arduino Uno Smd R3 - Usb Kablo Dahil Değildir. HC-SR04 Ultrasonic Sensör HC-SR04 Tutucu 40Pin Dişi-Dişi Jumper Kablosu L:20cm L298 DC ve Step Motor Sürücü HC05 Bluetooth Modül 2WD Robot Araba Kiti Satın almak için buraya tıklayınız.
8
« : Ağustos 03, 2018, 10:02:42 ÖÖ »
Wifi kontrolllü robot araba setidir. Paket İçeriği: Arduino UNO R3 (USB Chip CH340) Klon USB Kablo HC-SR04 Ultrasonic Sensör HC-SR04 Tutucu 40Pin Dişi-Dişi Jumper Kablosu L:20cm L298 DC ve Step Motor Sürücü ESP8266 Seri Wifi Modül 2WD Robot Araba Kiti Satın almak için buraya tıklayınız.
9
« : Ağustos 03, 2018, 10:00:48 ÖÖ »
Bluetooth kontrolllü robot araba setidir. Paket İçeriği: Arduino UNO R3 (USB Chip CH340) Klon USB Kablo HC-SR04 Ultrasonic Sensör HC-SR04 Tutucu 40Pin Dişi-Dişi Jumper Kablosu L:20cm L298 DC ve Step Motor Sürücü HC05 Bluetooth Modül 2WD Robot Araba Kiti Satın almak için buraya tıklayınız.
10
« : Ağustos 03, 2018, 09:57:38 ÖÖ »
Maker olmak isteyenler için eğitim seti. - Arduino Hızlı Başlangıç Rehberi HEDİYE !!! Paket İçeriği: 1 x Arduino Uno R3 CH340 1 x USB Kablo 1 x Breadboard 1 x Erkek-Erkek jumper kablo 1 x Dişi-Erkek jumper kablo 1 x Tower Pro SG90 9g RC Mini Servo Motor 1 x HC-SR04 Ultrasonik Mesafe Sensörü 2 x Potansiyometre 10k 5 x Buton 4 pinli 2 x LDR / Işık Sensörü 2 x Buzzer 10 x Kırmızı Led 10 x Sarı Led 10 x Yeşil Led 1 x LM35 Sıcaklık Sensörü 1 x HC06 Bluetooth Modül Kartı 2 x 6V 250rpm Motor ve Tekerlek Seti 1 x L298n Motor Sürücü 1 x Sarhoş teker 1 x 9v pil 1 x 9v Pil Başlığı - Jaklı 20 x 330ohm Direnç 10 x 1kohm Direnç 10 x 10kohm Direnç 1 x LCD Display I2C - Lehimli 1 x 2wd Araba Şase ve Vida Takımı 1 x Malzeme Kutusu Satın almak için buraya tıklayınız.
11
« : Ağustos 03, 2018, 09:54:53 ÖÖ »
2WD Robot Araba Kiti'nde arkadan itişli robot araba yapmak için gerekli mekanik parçalar bulunmaktadır. Mekanik parçalar dışında sadece motor sürücü devresi ve bir kontrol kartı ile robot arabanızı kolaylıkla yapabilirsiniz. Araba gövdesinde bulunan vida delikleri ile gerekli ekipmanları monte edebilirsiniz. Paket İçeriği 1 x Renkli araba gövdesi 2 x Tekerlek 1 x 360 derece dönebilir ön tekerlek 1 x Pil yuvası - 4lü kalem pil için 2 x 90 derece Redüktörlü motor Montaj için gereken vidalar, somunlar, mesafe somunları ve anahtar Satın almak için buraya tıklayınız.
12
« : Ağustos 03, 2018, 09:49:19 ÖÖ »
İleri seviye robot araba setidir. Paket İçeriği: 1 x Arduino Uno R3 CH340 1 x USB Kablo 1 x Breadboard 1 x 40pin Erkek-Erkek jumper kablo 1 x 40pin Dişi-Erkek jumper kablo 1 x HC-SR04 Ultrasonik Mesafe Sensörü 1 x LCD Display I2C 3 x Potansiyometre 5 x Buton 4 pinli 10 x Kırmızı Led 10 x Sarı Led 10 x Yeşil Led 1 x Buzzer 1 x LM35 Sıcaklık Sensörü 1 x HC06 Bluetooth Modül Kartı 2 x DC Motor 6v 1 x L298n Motor Sürücü 1 x LDR / Işık Sensörü 20 x 220ohm Direnç 20 x 330ohm Direnç 20 x 1kohm Direnç 20 x 10kohm Direnç 1 x PIR Sensörü 1 x Yağmur Sensörü 1 x Toprak Nem Sensörü 1 x Ses Slgılama Sensörü 1 x Display 1 x Tower Pro SG90 9g RC Mini Servo Motor 1 x RC522 RFID NFC Kiti - RC522 RFID NFC Modülü, Kart ve Anahtarlık Kiti 1 x 9v Pil Başlığı 1 x Keypad 4x4 1 x Kızılötesi Uzaktan Kumanda Seti 1 x 2wd Araba Şase ve Vida Takımı 1 x 9v pil 1 x Joystick 1 x 5v 2 Kanal Röle Modülü 1 x Malzeme Kutusu Satın almak için buraya tıklayınız.
13
« : Temmuz 24, 2018, 07:57:43 ÖÖ »
DAGU 6WD IR KontrolBu projemizde arduino, SparkFun Monster Moto Shield ve Kızılötesi (Infared-IR) Alıcı Modülü kullanarak 2 motorun yön ve hız kontrolünü yapacağız. AmaçAmacımız kızılötesi alıcı verici modül ile 2 adet dc motorun yön ve hız kontrolünü yapabilme becerisini kazanmak. SeviyeOrta seviye Teknik özellikler ve Uzaktan Kumanda Aletinin KullanımıFotoğraf 1'de görülen uzaktan kumanda aletinin ileri, geri, sağ ve sol yön butonları ile motorlara yön verilir. 1 nolu butona basılmasıyla motorlar yavaş devirde (1. Vites), 2 nolu butona basılmasıyla orta hızda (2. Vites), 3 nolu butona basılmasıyla da maksimum devirde (3. Vites) hareket ederler. Motorların birinci vitesteki varsayılan default hızı devre üzerindeki potansiyometre ile ayarlanabilir. Projemizde DAGU 6WD Arazi Robotu Platformu kullanacağız. Siz daha farklı platformlar ya da motorlar kullanabilirsiniz. Kullandığımız platformda üçerli iki grup halinde 6 adet dc motor bulunmaktadır. Her bir gruptaki motorlar birbirine paralel bağlıdır  Fotoğraf 1 : Uzaktan Kumanda Vericisi  Şema 1: Arduino bağlantı şeması Malzeme listesiDagu 6WD arduino kodu#define BRAKEVCC 0 #define CW 1 #define CCW 2 #define BRAKEGND 3 #define CS_THRESHOLD 100
int inApin[2] = {7, 4}; // INA: Clockwise input int inBpin[2] = {8, 9}; // INB: Counter-clockwise input int pwmpin[2] = {5, 6}; // PWM input int cspin[2] = {2, 3}; // CS: Current sense ANALOG input int enpin[2] = {0, 1}; // EN: Status of switches output (Analog pin)
int statpin = 13; int IR_negatif_pin = 12; int IR_pozitif_pin = 11; #include <IRremote.h> int RECV_PIN = 10; IRrecv irrecv(RECV_PIN); decode_results results;
int hizPin = A2; // hiz potu A2 pinine baglanir int hizValue = 0; // hizValue isminde değişken tanımlandı int hiz=0; // hiz isminde değişken tanımlandı
void setup() { Serial.begin(9600); pinMode(statpin, OUTPUT); pinMode(IR_negatif_pin, OUTPUT); pinMode(IR_pozitif_pin, OUTPUT); digitalWrite(IR_negatif_pin, LOW); digitalWrite(IR_pozitif_pin, HIGH);
for (int i=0; i<2; i++) { pinMode(inApin[i], OUTPUT); pinMode(inBpin[i], OUTPUT); pinMode(pwmpin[i], OUTPUT); }
for (int i=0; i<2; i++) { digitalWrite(inApin[i], LOW); digitalWrite(inBpin[i], LOW); } irrecv.enableIRIn();
}
void loop() { if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH);
hizValue = analogRead(hizPin); hiz= map(hizValue, 0, 1023, 50, 255);
birinci_vites (); if(results.value == 0xFF9867) {ikinci_vites ();} if(results.value == 0xFFB04F) {ucuncu_vites ();}
}
void birinci_vites() {
if(results.value == 0xFF629D) {ileri_git ();} if(results.value == 0xFF02FD) {dur ();} if(results.value == 0xFFA857) {geri_git ();} if(results.value == 0xFFC23D) {sag_don ();} if(results.value == 0xFF22DD) {sol_don ();} if(results.value == 0xFF9867) {ileri_git2 ();} if(results.value == 0xFFB04F) {ileri_git3 ();} if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites ();
}
void motorOff(int motor) { // Initialize braked for (int i=0; i<2; i++) { digitalWrite(inApin[i], LOW); digitalWrite(inBpin[i], LOW); } analogWrite(pwmpin[motor], 0); }
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) { if (motor <= 1) { if (direct <=4) { // Set inA[motor] if (direct <=1) digitalWrite(inApin[motor], HIGH); else digitalWrite(inApin[motor], LOW);
// Set inB[motor] if ((direct==0)||(direct==2)) digitalWrite(inBpin[motor], HIGH); else digitalWrite(inBpin[motor], LOW);
analogWrite(pwmpin[motor], pwm); } } }
void translateIR() // takes action based on IR code received { switch(results.value) {
case 0xFF629D: Serial.println(" ILERI "); break;
case 0xFFA857: Serial.println(" GERI "); break;
case 0xFFC23D: Serial.println(" SAG "); break; case 0xFF22DD: Serial.println(" SOL "); break;
case 0xFF02FD: Serial.println(" DUR "); break;
case 0xFF6897: Serial.println(" 1 "); break;
case 0xFF9867: Serial.println(" 2 "); break;
case 0xFFB04F: Serial.println(" 3 "); break;
case 0xFF30CF: Serial.println(" 4 "); break;
case 0xFF18E7: Serial.println(" 5 "); break;
case 0xFF7A85: Serial.println(" 6 "); break;
case 0xFF10EF: Serial.println(" 7 "); break;
case 0xFF38C7: Serial.println(" 8 "); break;
case 0xFF5AA5: Serial.println(" 9 "); break;
case 0xFF42BD: Serial.println(" * "); break;
case 0xFF4AB5: Serial.println(" 0 "); break;
case 0xFF52AD: Serial.println(" # "); break;
default: Serial.println(" other button ");
} } //END translateIR
void ileri_git() { motorGo(0, CW, hiz); delay(300); motorGo(1, CCW, hiz); delay(300); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites (); }
void dur() { motorGo(0, CW, 0); motorGo(1, CW, 0); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites (); }
void geri_git() { motorGo(0, CCW, hiz); delay(300); motorGo(1, CW, hiz); delay(300); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites (); }
void sol_don() { motorGo(0, CCW, hiz); delay(300); motorGo(1, CCW, hiz); delay(300); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites (); }
void sag_don() { motorGo(0, CW, hiz); delay(300); motorGo(1, CW, hiz); delay(300); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); birinci_vites (); }
void ikinci_vites() {
if(results.value == 0xFF629D) {ileri_git2 ();} if(results.value == 0xFFA857) {geri_git2 ();} if(results.value == 0xFF02FD) {dur2 ();} if(results.value == 0xFFC23D) {sag_don2 ();} if(results.value == 0xFF22DD) {sol_don2 ();} if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); if(results.value == 0xFF6897) {ileri_git ();} if(results.value == 0xFFB04F) {ileri_git3 ();} ikinci_vites ();
}
void ileri_git2() { motorGo(0, CW, 100); delay(500); motorGo(1, CCW, 100); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ikinci_vites (); }
void geri_git2() { motorGo(0, CCW, 100); delay(500); motorGo(1, CW, 100); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ikinci_vites (); }
void dur2() { motorGo(0, CW, 0); motorGo(1, CW, 0); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ikinci_vites (); }
void sol_don2() { motorGo(0, CCW, 100); delay(500); motorGo(1, CCW, 100); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ikinci_vites (); }
void sag_don2() { motorGo(0, CW, 100); delay(500); motorGo(1, CW, 100); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ikinci_vites (); }
void ucuncu_vites() {
if(results.value == 0xFF629D) {ileri_git3 ();} if(results.value == 0xFFA857) {geri_git3 ();} if(results.value == 0xFF02FD) {dur3 ();} if(results.value == 0xFFC23D) {sag_don3 ();} if(results.value == 0xFF22DD) {sol_don3 ();} if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); if(results.value == 0xFF6897) {ileri_git ();} if(results.value == 0xFF9867) {ileri_git2 ();} ucuncu_vites ();
}
void ileri_git3() { motorGo(0, CW, 255); delay(500); motorGo(1, CCW, 255); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ucuncu_vites (); }
void geri_git3() { motorGo(0, CCW, 255); delay(500); motorGo(1, CW, 255); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ucuncu_vites (); }
void dur3() { motorGo(0, CW, 0); motorGo(1, CW, 0); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ucuncu_vites (); }
void sol_don3() { motorGo(0, CCW, 255); delay(500); motorGo(1, CCW, 255); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ucuncu_vites (); }
void sag_don3() { motorGo(0, CW, 255); delay(500); motorGo(1, CW, 255); delay(500); if (irrecv.decode(&results)) { translateIR(); irrecv.resume(); // Receive the next value }
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); ucuncu_vites (); } Downloadİhtiyaç duyulması halinde projeye ait dosyaları buraya tıklayıp indirebilirsiniz.
14
« : Haziran 27, 2018, 11:24:44 ÖÖ »
Senaryo Geçerli kartla bariyerin açılması ve arzu edilen bir süre sonra da kendiliğinden kapanması isteniyor. Kart kimliği geçersiz ise bariyer açılmayacak. Devre çalışırken de yapılan işlemler lcd ekran üzerinden takip edilecek. ISIS Devre şeması Şema 1: ISIS devre şeması ARES baskı devre şeması Şema 2: ARES baskı devre şeması FRITZIG devre şeması Şema 3: Fritzing devre şeması Malzeme listesiÇalışma Prensibi ve devrenin kullanılmasıDevreye enerji uygulandığında LCD ekranda hoş geldin ve kartı okutunuz mesajları görüntülenir. Doğru kartın okutulmasıyla beraber bariyer açılır ve durur, önceden belirlenmiş süre kadar bekler ve tekrar kapanır. Bariyerin açılması ve kapanması sırasında gelişen olaylar LCD ekrandan gözlenebilir. Bariyerin açılıp kapanması bir dc motor tarafından yapılmaktadır. DC motorun ileri yön hareketinde bariyer açılır, ters yön hareketinde ise kapanır. Bu işlem için ISIS devre şemasında görüldüğü gibi 4 transistörden meydana gelen bir motor sürücü devre kullanılmıştır. Arduinonun dijital 2. Ve 3.pinleri motor sürücüyü kontrol eden pinlerdir. Bu pinlere lojik 0 uygulandığında devredeki transistörlerin beyz polarmaları olmayacağından tüm transistörler yalıtımdadır ve motor enerji almaz. Sisteme önceden tanımlanmamış bir kart okutturulursa bariyer her hangi bir tepki vermez ve LCD ekranda geçersiz kart uyarısı görünür. Doğru kartın okutulmasıyla beraber D3 pini lojik 1 ve D2 pini lojik 0 seviyesine çekilir. Bu anda Q1 ve Q4 transistörleri D3 pini üzerinden beyz polarması alır ve iletime geçerler. Q1 ve Q4’ün iletime geçmesiyle beraber ISIS devre şeması baz alınarak belirtiyorum motorun sol ucu +, sağ ucu 2 olacak şekilde BAT1 kaynağı tarafından beslenir. Bariyerin açılmasıyla beraber D3 ve D2 pinleri tekrar lojik 0 seviyesine çekilir ve tüm transistörlerin yalıtıma geçmesi nedeniyle de motor durur. Programda belirtilen süre sonunda bu sefer D3 pini lojik 0, D2 pini lojik 1 seviyesine çekilir. Bu durumda Q2 ve Qş transistörleri beyz polarması sağlar. Q2 ve Q3’ün iletime geçmesiyle beraber motorun sol ucu negatif, sağ ucu pozitif olur ve motor bir öncekinin ters yönünde dönerek bariyerin kapanmasını sağlar. Bariyerin açılıp kapanması esnasında güvenlik amacıyla bir buzzer devreye girerek bariyerin hareket halinde olduğu hakkında sesli uyarı verir. Motorun durup bariyerin kapanmasıyla beraber bu sürece ait periyot başa alınır. Anlatılanlar periyodik olarak devam eder. Arduino kodu#include <SPI.h> // SPIkütüphanesi eklendi #include <RFID.h> // Rfid kütüphanesi eklendi #include <LiquidCrystal.h> // LCD ekran kütüphanesi eklendi LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD ekran bu pinleri kullanacak. Gerekli durumlarda değiştirilebilir. const byte motor_pin1 = 3; // Motor sürücü kontrol pini D3 const byte motor_pin2 = 2; // Motor sürücü kontrol pini D2 const byte buzzer = 13; // Buzzer pini RFID rfid(53,49); // Rfid modülünün bağlanacağı pinler belirlendi byte kart[5] = {117,85,177,101,244}; // rfid kart kimliği boolean izin = true; // izin isminde değişken oluşturuldu void setup() { Serial.begin(9600); // seri haberleşme başlatıldı SPI.begin(); // Rfid ile haberleşebilmek için SPI haberleşme protokolü başlatıldı rfid.init(); pinMode(motor_pin1, OUTPUT); // Motor sürücü girişlerinin bağlanacağı dijital pin çıkış olarak atandı pinMode(motor_pin2, OUTPUT); // Motor sürücü girişlerinin bağlanacağı dijital pin çıkış olarak atandı pinMode(buzzer, OUTPUT); // buzzer pini çıkış olarak atandı lcd.begin(16,4); // LCD ekranın karekter ve satır sayıları girildi } void loop() { hosgeldiniz_mesaji(); // Hoşgeldiniz fonksiyonunu çalıştır kart_oku(); // Kart oku isimli fonksiyonu çalıştır izin=true; // izin isimli değişkeni doğru yap
// Burada kart kimliği okunuyor if(rfid.isCard()) { if(rfid.readCardSerial()) { Serial.print("Kart bulundu ID: "); Serial.print(rfid.serNum[0]); Serial.print(","); Serial.print(rfid.serNum[1]); Serial.print(","); Serial.print(rfid.serNum[2]); Serial.print(","); Serial.print(rfid.serNum[3]); Serial.print(","); Serial.println(rfid.serNum[4]); } for(int i=0; i<5; i++) { if(rfid.serNum[i] != kart[i]) { izin = false; } } if(izin==true) { bariyeri_ac(); bariyer_acilinca_bekle(); bariyeri_kapat(); bariyer_kapaninca_bekle(); } else { gecersiz_kart(); // kart kimliği geçersizse geçersiz kart fonksiyonun yürüt } rfid.halt(); } } // kart kimliğini okuma işlemeri burada tamamlandı
void kart_oku() { Serial.println("Karti okutunuz."); lcd.clear(); lcd.setCursor(0,0); lcd.print("KARTI OKUTUNUZ"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(2000); // Kartı okuduktan sonra 2 saniye bekle }
void bariyeri_ac() // bariyeri açma kodları { digitalWrite(motor_pin1, HIGH); digitalWrite(motor_pin2, LOW); digitalWrite(buzzer, HIGH); Serial.println("Bariyer aciliyor."); lcd.clear(); lcd.setCursor(0,0); lcd.print("BARiYER ACiLiYOR"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(750); // Bariyer açılırken motorun enerjili kalacağı süre }
void bariyer_acilinca_bekle() // Bariyer açıldıktan sonra yapılacak işlemler { digitalWrite(motor_pin1, LOW); digitalWrite(motor_pin2, LOW); digitalWrite(buzzer, LOW); Serial.println("Bariyer acildi."); lcd.clear(); lcd.setCursor(0,0); lcd.print("BARiYER ACiLDI"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(5000); // Bariyer açıldıktan sonraki bekleme süresi }
void bariyeri_kapat() // bariyeri kapatma kodları { digitalWrite(motor_pin1, LOW); digitalWrite(motor_pin2, HIGH); digitalWrite(buzzer, HIGH); Serial.println("Bariyer kapaniyor."); lcd.clear(); lcd.setCursor(0,0); lcd.print("BARiYER KAPANiYO"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(750); // Bariyer kapanırken motorun enerjili kalacağı süre }
void bariyer_kapaninca_bekle() // Bariyer kapandıktan sonra yapılacak işlemler { digitalWrite(motor_pin1, LOW); digitalWrite(motor_pin2, LOW); digitalWrite(buzzer, LOW); Serial.println("Bariyer kapandi."); lcd.clear(); lcd.setCursor(0,0); lcd.print("BARiYER KAPANDi"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(1000); // Bariyer kapandıktan sonra bekleme süresi Serial.println("Karti okutunuz."); }
void gecersiz_kart() // kart kimliği geçersiz ise yapılacak işlemler { Serial.println("Gecersiz kart"); lcd.clear(); lcd.setCursor(0,0); lcd.print("GECERSiZ KART"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(2000); Serial.println("Karti okutunuz."); lcd.clear(); lcd.setCursor(0,0); lcd.print("KARTI OKUTUNUZ"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); }
void hosgeldiniz_mesaji() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Hosgeldiniz"); lcd.setCursor(0,1); lcd.print("Baturay BOZKAYA"); lcd.setCursor(0,2); lcd.print("Karadeniz Teknik"); lcd.setCursor(0,3); lcd.print("Universitesi"); delay(2000); } İhtiyaç duyulması halinde projeye ait dosyaları download bölümünden indirebilirsiniz.
15
« : Haziran 11, 2018, 08:18:49 ÖS »
Senaryo:Başlat butonuna basılıp bırakıldığı anda dur butonuna basılana dek çıkışın aktif olarak bir ledin aktif olması istenmektedir. Ladder diyagramın hazırlanması:Ladder diyagram şema 1'de görüldüğü gibi hazırlanır.  Şema 1: Ladder diyagramın hazırlanması Devrenin montajı:Şema 2 ve şema 3'e bağlı kalınarak devrenin montajı tamamlanır.  Şema 2: Fritzing devre şeması  Şema 3: ISIS devre şeması
|