Ders 3: Mikrodenetleyiciler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Ders 3: Mikrodenetleyiciler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Kasım 2018 Çarşamba

2018/2019 1. DÖNEM MİKRODENETLEYİCİLER PERFORMANS ÇALIŞMASI

Bir robot veya proje yarışmasından bir tema seçerek tasarımı gerçekleştiriniz.
En fazla 2 kişilik gruplar olabilir. Grup arkadaşınızı kendiniz seçebilirsiniz.

Proje yarışması ve konusunun belirlemesi(23 Kasım 2018): 10puan
Konu hakkında araştırmaların yapılması(30 Kasım 2018): 15 puan
Proje hakkında fikirlerin üretilmesi(30 Kasım 2018): 15 puan
Projenin gerçekleştirilmesi(21 Aralık 2018): 30 puan
Projenin test edilmesi ve raporlaştırılması(28 Aralık 2018): 15 puan
Projenin sunumu(28 Aralık 2018): 15 puan

Raporları WORD belgesi olarak hazırlayınız.

Konular:

Fatih Asan: First Robotics Competition                           
Abdulsamet Kaya:
Ömer Faruk Yılmaz: First Robotics Competition 
Aleyna Beştepe:
Hasan Aygün:
Nazlı Karataş:
Burçin Kulaksız:
Özlem Karanfil:
Emirhan Bal:
Kadir Mert Uzunoğlu:
Gönül Hazal Eti:
Veysel Gürler:
Sebahattin Atay:

24 Eylül 2018 Pazartesi

Mikrodenetleyiciler

1. Arduino UNO R3 SMD
2. Kırmızı LED, Sarı LED, Yeşil LED 10 ar adet
3. Direnç 10 ar adet : 100, 330, 1K, 10K
4. Potansiyometre 5K (1 adet)
5. LDR (1 adet)
6. İki bacaklı böcek buton (4 adet)
7. Keypad LCD shield


Breadboad
Ölçü aleti
Jumper kablo D-D, D-E, E-E
Havya, Havya altlığı, Lehim Süngeri
Yankeski, Kargaburnu, Saatçi tornavida takımı



15 Ocak 2018 Pazartesi

UZAKTAN KUMANDA İLE LED KONTROL

Programın kütüphanesini indirmek için tıklayınız.





/*  Kızıl ötesi kumanda ile cihaz kontrolü
 *  LCD ekranda röle durumları gösterilir.
 *  Tuş takımındaki 1,2,3,4 tuşları ile sırayla röle1,röle2, röle3, röle 4 kontrol edilir.
 *  Tuş takımındaki 5 nolu tuş tüm röleleri aktif yapar.
 *  Tuş takımındaki 0 nolu tuş tüm röleleri pasif yapar.
 *  
 *  Bağlantılar
 *  LCD: RS=D8, EN=D9, DS4=D4, DS5=D5, DS6=D6, DS7=D7
 *  IR alıcı pini: Arduino D2 pini
 *  
 *  4 lü röle modülü bağlantısı
 *  röle_1 girişi: Arduino D13 pini
 *  röle_2 girişi: Arduino D12 pini
 *  röle_3 girişi: Arduino D11 pini
 *  röle_4 girişi: Arduino D3 pini
*/


#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

#include <IRremote.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

#define CH1 0xFFA25D
#define CH 0xFF629D
#define CH2 0xFFE21D
#define PREV 0xFF22DD
#define NEXT 0xFF02FD
#define PLAYPAUSE 0xFFC23D
#define VOL1 0xFFE01F
#define VOL2 0xFFA857
#define EQ 0xFF906F
#define BUTON0 0xFF6897
#define BUTON100 0xFF9867
#define BUTON200 0xFFB04F
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF10EF
#define BUTON5 0xFF38C7
#define BUTON6 0xFF5AA5
#define BUTON7 0xFF42BD
#define BUTON8 0xFF4AB5
#define BUTON9 0xFF52AD

int role1 = 13;
int role2 = 12;
int role3 = 11;
int role4 = 3;

void setup()
{
  pinMode(role1, OUTPUT);
  pinMode(role2, OUTPUT);
  pinMode(role3, OUTPUT);
  pinMode(role4, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
  digitalWrite(role1,LOW);
  digitalWrite(role2,LOW);
  digitalWrite(role3,LOW);
  digitalWrite(role4,LOW);
  
  lcd.begin(16, 2); 
  lcd.setCursor(0,0);             
  lcd.print("A B C D");
  lcd.setCursor(0,1);             
  lcd.print("0 0 0 0");

}
void loop() {

  if (irrecv.decode(&results))
  {
    if (results.value == BUTON1)
    {
      digitalWrite(role1, !digitalRead(role1));
      if (digitalRead(role1) == HIGH)
      {
        Serial.println("Role_1 aktif");
        lcd.setCursor(0,1);             
        lcd.print("1");
      }
      else
      {
        Serial.println("Role_1 pasif");
        lcd.setCursor(0,1);             
        lcd.print("0");
      }
    }
    if (results.value == BUTON2)
    {
      digitalWrite(role2, !digitalRead(role2));
      if (digitalRead(role2) == HIGH)
      {
        Serial.println("Role_2 aktif");
        lcd.setCursor(2,1);             
        lcd.print("1");
      }
      else
      {
        Serial.println("Role_2 pasif");
        lcd.setCursor(2,1);             
        lcd.print("0");
      }
    }
    if (results.value == BUTON3)
    {
      digitalWrite(role3, !digitalRead(role3));
      if (digitalRead(role3) == HIGH)
      {
        Serial.println("Role_3 aktif");
        lcd.setCursor(4,1);             
        lcd.print("1");
      }
      else
      {
        Serial.println("Role_3 pasif");
        lcd.setCursor(4,1);             
        lcd.print("0");
      }
    }
    if (results.value == BUTON4)
    {
      digitalWrite(role4, !digitalRead(role4));
      if (digitalRead(role4) == HIGH)
      {
        Serial.println("Role_4 aktif");
        lcd.setCursor(6,1);             
        lcd.print("1");
      }
      else
      {
        Serial.println("Role_4 pasif");
        lcd.setCursor(6,1);             
        lcd.print("0");
      }
    }
    if (results.value == BUTON5)
    {
      digitalWrite(role1, HIGH);
      digitalWrite(role2, HIGH);
      digitalWrite(role3, HIGH);
      digitalWrite(role4, HIGH);
      Serial.println("Tum LED'ler yandi");
      lcd.setCursor(0,1);             
      lcd.print("1 1 1 1 ");
    }
    if (results.value == BUTON0)
    {
      digitalWrite(role1, LOW);
      digitalWrite(role2, LOW);
      digitalWrite(role3, LOW);
      digitalWrite(role4, LOW);
      Serial.println("Tum LED'ler sondu");
      lcd.setCursor(0,1);             
      lcd.print("0 0 0 0 ");
    }
    irrecv.resume();
  }
}

21 Aralık 2017 Perşembe

Blueutooth üzerinden LED yakma


Bu uygulama ile cep telefonu üzerinden 4 lÜ LED kontrolü yapılmıştır. Arduino Bluetooth Control Device programını Google Play Store dan indirip uygulamayı çalıştırınız. Programda Connect butonuna tıklayıp bluetooth araması yapıp HC-05 bluetooth adresini seçiniz.


Not: Programı yüklerken Bluetooth bağlantısını kesiniz.
  





/*  Bluetooth üzerinden röle kontrolü
 *  
 *  LED Bağlantıları: 2,3,4,5. pinler
 *  HC06 Bluetooth Bağlantısı: Vcc=5V ,GND=GND,Tx= Arduino Rx, Rx= Arduino Tx
 *  
*/

#define LED_PIN1  2
#define LED_PIN2  3
#define LED_PIN3  4
#define LED_PIN4  5
  
int inByte = 0;       
boolean status_unlock;
boolean status_bluetooth;

long interval = 1000;           
long previousMillis = 0;        
int minite,sec;

void setup()
{
  Serial.begin(9600);
  
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);
  pinMode(LED_PIN3, OUTPUT);
  pinMode(LED_PIN4, OUTPUT);

  
  digitalWrite(LED_PIN1, LOW);  
  digitalWrite(LED_PIN2, LOW);  
  digitalWrite(LED_PIN3, LOW);  
  digitalWrite(LED_PIN4, LOW);  
    
  
  status_bluetooth = true;
  status_unlock = false;
  sec = 0;
}

void loop()
{
  if (Serial.available() > 0) {   
       
    inByte = Serial.read();           

    if(inByte == 'A'){    
      Serial.print('A');         
      digitalWrite(LED_PIN1, HIGH);       
      status_unlock = false;
      inByte = 0;     
    }
    
    if(inByte == 'a'){    
      digitalWrite(LED_PIN1, LOW);        
      Serial.print('a');           
      status_unlock = true;
      sec = 0;
      inByte = 0;     
    }
    
    if(inByte == 'B'){    
      digitalWrite(LED_PIN2, HIGH);        
      Serial.print('B');         
      inByte = 0;     
    }
    
    if(inByte == 'b'){    
      digitalWrite(LED_PIN2, LOW);       
      Serial.print('b');        
      inByte = 0;     
    }
    
    if(inByte == 'C'){    
      digitalWrite(LED_PIN3, HIGH);       
      Serial.print('C');         
      inByte = 0;     
    }
    
    if(inByte == 'c'){    
      digitalWrite(LED_PIN3, LOW);        
      Serial.print('c');        
      inByte = 0;     
    }
    
    if(inByte == 'D'){    
      digitalWrite(LED_PIN4, HIGH);       
      Serial.print('D');        
      inByte = 0;     
    }
    
    if(inByte == 'd'){    
      digitalWrite(LED_PIN4, LOW);      
      Serial.print('d');         
      inByte = 0;     
    }
    if(inByte == 'S'){    
      
      Serial.print('S');       
      status_bluetooth = true;
      sec = 0;
          
    }    
  } 
}
  

20 Aralık 2017 Çarşamba

Yağmur Sensöründen alınan verileri seri port ekranında gösterme

Sensör üzerine su ile teması durumunda analog veya dijital çıkış verebilen bir sensördür.
Paket İçeriği
-          Yağmur sensörü
-          Karşılaştırıcı devre

-          Dişi – Dişi Jumper








// Yağmur Sensör Uygulaması - 2
// Sensörün A0 girişini Arduino nun A0 girişine bağlayınız
int sensorDegeri;    

void setup(){
  Serial.begin(9600);  
}
 
void loop(){
  sensorDegeri = analogRead(A0);
  Serial.print("Sensor Degeri= ");
  Serial.println(sensorDegeri);

  Serial.print("Yagmur Durumu= ");
  if( sensorDegeri < 400 ) Serial.println("Agir Yagisli");
  else if( sensorDegeri < 600 ) Serial.println("Hafif Yagisli");
  else Serial.println("Yagis Yok");
 
  Serial.println(" ");
  delay(1000);

}

LDR ile ölçülen ışık verisini LCD ekranda gösterme

#include <LiquidCrystal.h>            // lcd kütüphanesi eklendi
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  // LCD modül pinleri berlirtildi

const int ldrPin = A1;    // ldr pini A2 girişine bağlandı
int veri=0;               // veri değişkeni tam sayı olarak tanımlandı

void setup(){ 
  lcd.begin(16, 2); // LCD başlatıldı
}

void loop(){
  veri = analogRead(ldrPin);  // LM35 okunup değeri veri değişkenine aktarıldı
  lcd.setCursor(0,0);         // kursör konumu ayarlandı
  lcd.print("LDR Verisi:"); // lcd ekrana "LDR Verisi: " yazıldı
  lcd.print(veri);            // ışık verisi lcd ye yazıldı
 
  lcd.setCursor(0,1); // kursör konumu ayarlandı
  if(veri<200)        lcd.print("AYDINLIK"); 
  else if(veri<400)   lcd.print("YARI AYDINLIK"); 
  else if(veri<600)   lcd.print("ORTA");
  else if(veri<800)   lcd.print("KARANLIK");
  else                lcd.print("COK KARANLIK");
  delay(500);  // 500 ms gecikme verildi
  lcd.clear(); // lcd ekran temizlendi
}

DHT11 İLE ALGILANAN SICAKLIK VE NEM DEĞERİNİ LCD EKRANDA GÖSTERME

Programı yüklemeden önce kütüphane dosyasını aşağıdaki linkten indirip Arduino programına ekleyiniz.

https://github.com/adafruit/DHT-sensor-library

Arduino ya kütüphane dosyalarının nasıl eklendiğini incelemek için videoyu izleyiniz.


/*  DHT11 İLE LCD GÖSTERGELİ SICAKLIK VE NEM ÖLÇÜMÜ
 *  Nem değeri 0. satırda gösterilir
 *  Sıcaklık değeri 1. satırda gösterilir.
 *  Bağlantılar
 *  LCD: RS=D8, EN=D9, DS4=D4, DS5=D5, DS6=D6, DS7=D7
 *  DHT11 = D2
*/


#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
#include <dht11.h> // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN 2 // DHT11PIN olarak Dijital 2'yi belirliyoruz.
dht11 DHT11;

void setup()
{
  Serial.begin(9600); // Seri iletişimi başlatıyoruz.
  //Serial.println("LCD EKRANDA NEM VE SICAKLIK OLCME");
  lcd.begin(16, 2);               // start the library
  //lcd.setCursor(0,0);             // set the LCD cursor   position 
  //lcd.print("MAVI DEVRELER");
  //delay(1000);
}

void loop()
{
  Serial.println("\n");

  int chk = DHT11.read(DHT11PIN);
  
  // Sensörden gelen verileri serial monitörde yazdırıyoruz.
  Serial.print("Nem (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Sicaklik (Celcius): ");
  Serial.println((float)DHT11.temperature, 2);
/*
  Serial.print("Sicaklik (Fahrenheit): ");
  Serial.println(DHT11.fahrenheit(), 2);

  Serial.print("Sicaklik (Kelvin): ");
  Serial.println(DHT11.kelvin(), 2);

  // Çiğ Oluşma Noktası, Dew Point
  Serial.print("Cig Olusma Noktasi: ");
  Serial.println(DHT11.dewPoint(), 2);
  */

  lcd.setCursor(0,0);         // kursör konumunu ayarla
  lcd.print("Nem: %");
  lcd.print((float)DHT11.humidity,0);
  //lcd.print((char)223);     // ekranda derece sembolünü gösterir
  //lcd.print("C");
  lcd.print("               ");

  lcd.setCursor(0,1);             // kürsör konumunu ayarla
  lcd.print("Sicaklik: ");
  lcd.print((float)DHT11.temperature,0);
  lcd.print((char)223);     // ekranda derece sembolünü gösterir
  lcd.print("C");
  lcd.print("               ");
  
   //lcd.print("            ");
  delay(1000);
  //lcd.clear();
  
}

LCD EKRANLI PIR SENSOR UYGULAMASI - Hareket olduğunda buzzer ve LED ile uyarı verilir

/*  LCD GÖSTERGELİ PIR SENSÖRLÜ HIRSIZ ALARM
 *  LCD ekranda HIRSIZ DURUMU GÖSTERİLİR
 *  Hareket olduğunda buzzer ve LED iled uyarı verilir
 *  Alarm süresi PIR sensör üzerindeki trimpot ile ayarlanabilir
 *  PIR sensör hareket oluğunda trimpot ile ayarlanan sürede lojik 1 üretir
 *   
 *  Bağlantılar:
 *  LCD: RS=D8, EN=D9, DS4=D4, DS5=D5, DS6=D6, DS7=D7
 *  
 *  BUZZER = D11
 *  LED = D13
 *  PIR SENSÖR PİNİ = D3
*/


#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

int ledPin = 13;                // choose the pin for the LED
int inputPin = 3;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
int pinSpeaker = 11;        //Set up a speaker on a PWM pin (digital 9, 10, or 11)

void setup() {
  lcd.begin(16, 2);
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  Serial.println(val);
  
  if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    playTone(300, 160);
    delay(150);

    
    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      lcd.clear();
      lcd.setCursor(0,0);             
      lcd.print("DIKKAT! HIRSIZ VAR.");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } 
  
  else {
      digitalWrite(ledPin, LOW); // turn LED OFF
      playTone(0, 0);
      delay(300);    
      
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      lcd.clear();
      lcd.setCursor(0,0);             
      lcd.print("HIRSIZ YOK");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}
// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
    
}

PIR SENSOR UYGULAMASI - Hareket olduğunda buzzer ve LED ile uyarı verilir

pır sensör ile ilgili görsel sonucupır sensör ile ilgili görsel sonucu


/*  
 *  Hareket olduğunda buzzer ve LED ile uyarı verilir
 *  Alarm süresi PIR sensör üzerindeki trimpot ile ayarlanabilir
 *   
 *  
 *  Bağlantılar:
 *  
 *  BUZZER = D11
 *  LED = D13
 *  PIR SENSÖR PİNİ = D3
*/



int ledPin = 13;                // choose the pin for the LED
int inputPin = 3;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
int pinSpeaker = 11;        //Set up a speaker on a PWM pin (digital 9, 10, or 11)

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  val = digitalRead(inputPin);  // read input value
  if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    playTone(300, 160);
    delay(150);

    
    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } 
  
  else {
      digitalWrite(ledPin, LOW); // turn LED OFF
      playTone(0, 0);
      delay(300);    
      if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}
// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}

LCD UYGULAMALARI - DS18B20 İLE SICAKLIK ÖLÇME

/*  DS18B20 İLE LCD GÖSTERGELİ SICAKLIK ÖLÇÜMÜ
 *  Sıcaklık değeri 0. satırda gösterilir.
 *  Bağlantılar
 *  LCD: RS=D8, EN=D9, DS4=D4, DS5=D5, DS6=D6, DS7=D7
 *  DS18B20 = D2
*/

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

void setup(void)
{
  lcd.begin(16, 2); 
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature");

  // Start up the library
  sensors.begin();
}

void loop(void)
{ 

  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); 
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0)); 
   
  lcd.setCursor(0,0);             
  lcd.print("Sicaklik:");
  lcd.setCursor(5,1);
  float sicaklik = sensors.getTempCByIndex(0);
  lcd.print(sicaklik,2);
  lcd.print((char)223);     
  lcd.print("C");
  lcd.print("               ");
  delay(500);
}


Kütüphane dosyasını indirip Arduino Programına yükleyiniz.

https://github.com/milesburton/Arduino-Temperature-Control-Library



DS18B20 ROBOTİSTAN ile ilgili görsel sonucu





lcd keypad ile ilgili görsel sonucu



LCD UYGULAMALARI - 1: Ekrana Yazı Yazma

#include <LiquidCrystal.h> 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
void setup(void)
{
  lcd.begin(16, 2); 
}
void loop(void)
{ 
   lcd.setCursor(0,0);             
   lcd.print("ROBOT TAKIMI");
   lcd.setCursor(0,1);             
   lcd.print("IOROBOT");
   delay(500);
}



LCD TUŞ TAKIMI MODÜLÜNÜN BAĞLANTILARI

lcd keypad ile ilgili görsel sonucu

5 Aralık 2017 Salı

GAZ SENSÖR PROJESİ

İlgili resim


/*
 * Bağlantılar
 * Gaz Sensörü:  A0 pinine 
 * LED : 10 nolu pin
 * Buzzer : 11 nolu pin
 */
int sensorPin=A0; 
int kledPin=12;  
int yledPin=11;  
int buzzerPin=10;
void setup() {

  Serial.begin(9600);
  pinMode(buzzerPin,OUTPUT);
}
void loop() {
  int veri = analogRead(sensorPin);
  Serial.println(veri);

  if(veri>300) // ölçülen veri değeri 300 den büyük mü
  {
    digitalWrite(kledPin,HIGH);   // kırmızı ledi yak (alarm var)
    digitalWrite(yledPin,LOW);    // yeşil ledi söndür
    digitalWrite(buzzerPin,HIGH); // buzzer çalıştı
  }
  else
  {
    digitalWrite(yledPin,HIGH);   // yeşil ledi yak (alarm yok)
    digitalWrite(kledPin,LOW);     //ledi söndür
    digitalWrite(buzzerPin,LOW);  // buzzer durdu
  }
  delay(500);        // 500ms bekle
}