Yeni Başlayanlar için Arduino ile 10 Basit Uygulama Yapımı

logo      Günlük hayatımıza iyice yerleşen elektronik ve kodlama terimleri artık her yerde karşımıza çıkmaya başladı. Çocuklar için başlatılan kodlama eğitimleri, robot okulları, yarışmalar vs. derken iyice bizden biri olmaya başladı kod satırları. Bulunduğunuz yerde bu tarz eğitimler, eğitime ayıracak vakit veya kurslar için ayıracak bütçeniz yoksa işe buradaki 10 proje ile başlayabilirsiniz. Çocuklarınızla beraber eğlenerek yapabileceğiniz, yeni başlayan biriyseniz kendinizi geliştireceğiniz uygulamalar mantığı anlayıp donanımı öğrenmeniz için yardımcı olacaktır. İlerleyen aşamalarda kendinize göre düzenlemeler yaparak, kodları birleştirerek yeni yazılımlarla kendi sisteminizi oluşturabilirsiniz. Özellikle birlikte farklı şekilde kullanılarak değişik uygulamalar yapılabilecek örnekleri paylaşmaya çalıştık. İyi çalışmalar..

1-Buzzer ile melodi

int buzzer=11;// Buzzer bağlantı pini
void setup()
{
pinMode(buzzer,OUTPUT);//
}
void loop()
{
unsigned char i,j;//
while(1)
{
for(i=0;i<80;i++)//ses frekansı-1
{
digitalWrite(buzzer,HIGH);//ses başla
delay(1);//delay 1ms
digitalWrite(buzzer,LOW);//sessiz
delay(1);//delay 1ms
}
for(i=0;i<500;i++)//ses frekansı-2
{
digitalWrite(buzzer,HIGH);//ses başla
delay(2);//delay 2ms
digitalWrite(buzzer,LOW);//sessiz
delay(2);//delay 2ms
}
}
}

2-DTH-11 ile sıcaklık ve nem göstergesi

#include <DHT11.h>
int pin=4;
DHT11 dht11(pin); 
void setup()
{
   Serial.begin(9600);
  while (!Serial) {
      ; // Bağlantı sağlanana kadar bekle (Arduinoleonardo)
    }
}

void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();    
  }
  delay(DHT11_RETRY_DELAY); //delay tekrar okuma 
}


3-IR ile led kontrolü

#include <IRremote.h>
// define IR module
IRrecv irrecv(11);  //ır pin 11 e bağlı
decode_results results;
// uzaktan kumanda üzerinden gelen değerler
long grid[] = {
0x4AB5, //0
0x6897, //1
0x9867, //2
0xB04F, //3
0x30CF, //4
0x18E7, //5
0x7A85, //6
0x10EF, //7
0x38C7, //8
0x5AA5, //9
0x629D, //yukarı
0x02FD, //OK
0xA857, //aşağı
0xC23D, //sağ
0x22DD, //sol
0x42BD, //*
0x52AD //#
};
char cmd[] = {
'0','1','2','3','4','5','6','7','8','9','U','K','D','R','L','*','#'};
void setup()
{
  
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(9, OUTPUT);
 
Serial.begin(9600);
irrecv.enableIRIn(); // başla
//module.setupDisplay(true, 5);
}
void loop() {
if (irrecv.decode(&results)) {
long x = results.value;
x = x & 0xFFFF;
if(x!=0xFFFF) {
Serial.println(x, HEX);
Serial.println(mapping(x));
//executeCommand(cmd[0]);
}
if(x==0x6897){
digitalWrite(13, HIGH);
}
if(x==0x52AD){
digitalWrite(13,LOW);
}
if(x==0x30CF){
digitalWrite(13,LOW);
}
if(x==0x9867){
digitalWrite(12, HIGH);
}
if(x==0x52AD){
digitalWrite(12,LOW);
}
if(x==0x18E7){
digitalWrite(12,LOW);
}
if(x==0xB04F){
digitalWrite(9,HIGH);
}
if(x==0x52AD){
digitalWrite(9,LOW);
}
if(x==0x7A85){
digitalWrite(9,LOW);
}


if(13,HIGH&&x==0xC23D){

digitalWrite(13,LOW);
digitalWrite(12,HIGH);

}

if(12,HIGH&&x==0x22DD){
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
}

irrecv.resume(); // tekrar
}
}
char mapping(long x) {
for(int i=0; i<17; i++) {
if(grid[i] == x) {
return (cmd[i]);
}
}
return '-';
}
<br>

4-LCD ile kayan yazı

#include <LiquidCrystal.h>

const int numRows=2;

const int numCols=16;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup(){

  lcd.begin(numCols,numRows);
}

void loop(){  

  slideThis("www.elektrobot.net",200,1,0,000);

  slideThis("27,11,2018",200,1,1,000);

  slideThis("Takipte Kalın",200,1,0,000);

  slideThis("Basit Projeler",200,1,1,000);

  slideThis("LCD KAYAN YAZI",200,1,0,000);

}

int geciktir(int delayVal){

  delay(delayVal);

  return 1;

}

void slideThis(String s, int delayValue, int directionTowards, int whichRow, int duration){

  switch(directionTowards){

    case 0 :

      for(int ctr=s.length(); ctr>0; ctr--){

        lcd.setCursor(0,whichRow);

        lcd.print(s.substring(ctr));

        delay(delayValue);

        lcd.clear();

      }

      for(int i =0; i  <  16 ; i++){

      lcd.setCursor(i,whichRow);

      lcd.print(s);

      geciktir(delayValue);

      lcd.clear();

      }

    break;

    case 1 :

      for(int i = 16 ; i>0 ; i--){

        lcd.setCursor(i,whichRow);

        lcd.print(s);

        geciktir(delayValue);

        lcd.clear();

      }

      for(int ctr=0; ctr<s.length(); ctr++){

        lcd.setCursor(0,whichRow);

        lcd.print(s.substring(ctr));

        delay(delayValue);

        lcd.clear();

      }

    break;

  }

}

5-Knocking sensör ile led

int Led=13;
int Shock=3;
int val;

void setup()
{
pinMode(Led,OUTPUT);
pinMode(Shock,INPUT);//
}
void loop()
{val=digitalRead(Shock);
if(val==HIGH)
{
digitalWrite(Led,LOW);
}
else
{
digitalWrite(Led,HIGH);
}
}

6-LCD shield 

#include <LiquidCrystal.h>

// kullanılan pinler

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// buton değer tanımlamaları

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

// buton oku
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      
 
 if (adc_key_in > 1000) return btnNONE;

 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;  

 


 return btnNONE;  
}

void setup()
{
 lcd.begin(16, 2);              // kütüphane başla
 lcd.setCursor(0,0);
 lcd.print("www.elektrobot.net"); // mesajı yaz
}
 
void loop()
{
 lcd.setCursor(9,1);           
 lcd.print(millis()/1000);      


 lcd.setCursor(0,1);            
 lcd_key = read_LCD_buttons();  

 switch (lcd_key)               
 {
   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;
     }
 }

}

7-Led parlıklığı ayarlama

int led = 9;           //ledin bağlandığı pin
int brightness = 0;    // ilk parlaklık değeri sıfır yaptık
int fadeAmount = 5;    // parlaklık adımları değeri. her seferinde 5 birim artar azalır demek.
//ilk kurulum değerleri. Resetten sonra bir kez yapılır.
void setup()  {
// pin 9 u çıkış yaptık
pinMode(led, OUTPUT);
}
// sonsuz döngü
void loop()  {
// pin 9 parlaklığını ayarla
analogWrite(led, brightness);// parlaklığı değiştir
brightness = brightness + fadeAmount;
// parlaklık değerleri sona gelince mantığı değiştir
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// gözümüzün değişikliği algılaması için 30 milisaniye bekle
delay(30);
}

8-RGB led ile farklı renkler

int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int brightness = 0;    // ilk parlaklık değeri sıfır yaptık
int fadeAmount = 5;    // parlaklık adımları değeri. her seferinde 5 birim artar azalır demek.
//ilk kurulum değerleri. Resetten sonra bir kez yapılır.

//Ortak anot led kullanıyorsanız alttaki satırı yorum satırından çıkartın
//#define COMMON_ANODE
 
void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  
}
 
void loop()
{
  setColor(255, 0, 0);  // red
  delay(1000);
  setColor(0, 255, 0);  // green
  delay(1000);
  setColor(0, 0, 255);  // blue
  delay(1000);
  setColor(255, 255, 0);  // yellow
  delay(1000);  
  setColor(80, 0, 80);  // purple
  delay(1000);
  setColor(0, 255, 255);  // aqua
  delay(1000);
  setColor(80, 80, 80);   // farklı renkler 
  delay(1000);
  setColor(255, 255, 255); // beyaz
  delay(1000);
  setColor(255, 0, 255); // güçlü mor
  delay(1000);
  
  
}
 
void setColor(int red, int green, int blue)
{
  #ifdef COMMON_ANODE
    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
  #endif
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);  
}

9-I2C ile LM35 sıcaklık okuma

#include <Wire.h> //i2c için yaptığımız bağlantı kütüphanesi

int lm35Pin = A0;  // LM35'in bağlı olduğu pin
float temp102derece; //derecenin float değeri olacaktır.
 
int tmp102adres = 0x48; // i2c ile 0x48 adresine yazılıyor
 
void setup(){
  Serial.begin(9600); //Seri monitör bağlantısı
  Wire.begin();       //i2c bağlantı ayarları
}
 
void loop(){
 
  float tmp102Sicaklik = tmp102SicaklikOlcum(); // yapılan ölçüm bir float'a aktarılır.
  Serial.print("TMP102 Sicaklik : ");
  Serial.print(tmp102Sicaklik);
  temp102derece = analogRead(lm35Pin);    //A0'dan okunan değerin bir float'a aktarılır.
  temp102derece = (temp102derece * 100.0 * 5.0)/1024.0;  //aktarılan değer referans alınan değerin örneklenmesi ile bölünür.
  Serial.print("      LM35 Sicaklik :" );
  Serial.println(temp102derece);
  delay(1000); 
 
}
 
float tmp102SicaklikOlcum(){
  Wire.requestFrom(tmp102adres,2); // adresten 2bit veri alma. 
 
  byte ilkDeger = Wire.read(); // i2c ile ilk okunan değer
  byte sonDeger = Wire.read(); // i2c ile son okunan değer
 
  //okunan 12bit'lik verinin ilk olarak 8bit sağa kaydırılıp son değerle toplanıyor. Ardından
  //oluşan değer 4bit sağa kaydırılarak sonuç elde ediliyor.8 bit kaydırma negatif degerler içindir.
  int toplamOkunanDeger = ((ilkDeger << 8) | sonDeger) >> 4; 
 
  float derece = toplamOkunanDeger*0.0625; // referans değer ile çarpılıyor ve ana fonksiyona döndürülüyor.
  return derece;
}

10-Ultrasonik sensör ile mesafe ölçümü

#define echoPin A4 // Echo Pin
#define trigPin A5 // Trigger Pin
#define LEDPin 13 //  LED

int maximumRange = 200; // maksimum uzaklık
int minimumRange = 0; // Minimum uzaklık
long duration, distance; 

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT); 
}

void loop() {

 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);
 
 //ses hızını baz alarak uzaklık bulma
 distance = duration/58.2;
 
 if (distance >= maximumRange || distance <= minimumRange){

 Serial.println("-1");
 digitalWrite(LEDPin, HIGH); // makimumun dışında ledi yak
 }
 else {

 Serial.println(distance);
 digitalWrite(LEDPin, LOW); // ölçüm alanı içinde ledi söndür
 }
 
 
 delay(50);
} 

Takipte kalın…

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir