Arduino
OKUDUĞUNUZ KONU
Arduino Sallama Çay Makinesi
1

Arduino Sallama Çay Makinesi

Yazar : Murat Duran8 Temmuz 2018

Sallama çay makinesi projemiz seçtiğiniz çay türüne göre özel bekletme süresinde çayınızı bardağınıza daldırarak demlemesini sağlar , süre bittiğinde poşet çayınızı bardaktan kaldırarak azı bir tat vermemesini sağlar.Güzel bir siyah çay demlemesi için ortalama 1.5 dk bardakta durması gerekir.Bu süreyi sizin yerinize cihaz otomatik yapar.

Projemiz hayatımızı kolaylaştırmak için değil daha çok renk katmak için üretildi.Projede kullanılan malzemeler birçok makerın kutusunda bulunan malzemelerden oluşmaktadır.Projeyi sizde yapmak isterseniz aşağıda linkte vermiş olduğum 3d baskı parçalarını çıkartarak projeyi yapabilirsiniz.Yada marketimizden doğrudan satın alabilirsiniz.

Projeyi Satın Al

Bu projeyi kurulu çalışır halde yada isterseniz demonte halde satın alabilirsiniz.Proje ile birlikle yapım aşaması resimleri bağlantı şemaları ve kodları açık kaynak olarak gönderilir. “Satın Almak İçin Yukarıda Butona Basınız”

Malzemeler

Projenin devre şeması aşağıdaki gibidir.Bazı arkadaşlar şema okumayı tam olarak bilmiyorlar sanırım , yorumlarda genelde abi resimlerdeki bağlantılarla şemadaki aynı değil gibi diyorlar.Bunun için buradan genel bir açıklama yapma gereği duyuyorum.Şemada örneğin kırmızı kablolar 5v pinine giriyor ve ben bu pini hepsini birbirine bağlamışım ama normal arduino da 2 adet 5v var ve ben kafama göre bazılarını oraya jumper kablo ile bağlamışım bu sorun teşkil etmez sonuçta arduino içerisinde 5v ların hepsi birbirine bağlı.Aynı şey GND pini içinde geçerlidir.

Projenin 3 adet kod dosyası vardır , dosyayı indirdikten sonra caymakinesi.ino dosyasını arduino programından open komunu ile açın aksi halde kodda hata alırsınız.

Projenin tüm kodlarını buradan indirin , aşağıdakiler örnek kodlarıdır.

// Proje Hocam - Cay Makinesi
#include <LiquidCrystal_I2C.h>
#include <Servo.h> 
#include <Wire.h> 

LiquidCrystal_I2C lcd(0x3f, 16, 2);
Servo servoMotor; 

int screenLED = 6;
int servoPin = 7;
int startButton = 8;
int buzzer = 9;
int teaPot = A0;  

boolean diagnosticBit = LOW;

int timer = 0;
int oldTimer = 0;
boolean inProcess = LOW;
int servoHighPosition = 120;
int servoMidPosition = 100;
int servoLowPosition = 70;
int servoSpeed = 35;
long idleTime = 0;

void setup() {
  pinMode(screenLED, OUTPUT);
  pinMode(servoPin, OUTPUT);
  pinMode(startButton, INPUT_PULLUP);
  pinMode(buzzer, OUTPUT);
  
  Serial.begin(9600);
  
  servoMotor.attach(servoPin);
  servoMotor.write(servoHighPosition);
    
  if (!diagnosticBit){
    tone(buzzer, 1000, 200);
  }
  
  Serial.println("Sistem Tamam");
  lcd.begin();  
  lcd.backlight();
  lcd.print("Cay Makinesi");
  lcd.setCursor(0, 1);
  lcd.print("Proje Hocam");
  fadeLightOn(screenLED);
  clearScreen();
  if (!diagnosticBit){
    tone(buzzer, 1000, 200);
  }
  updateIdleTime();
}

void loop() {
  if (idleTime < millis()){
    fadeLightOff(screenLED);
    idleTime = 2147483647;
  }
  
  if (diagnosticBit && millis()%1000 == 0){
    Serial.println(idleTime);
    Serial.println(millis());
    Serial.println("");
  }
  
  if (millis() % 30 == 0){
    oldTimer = timer;
    timer = rawToTime(analogRead(teaPot));
    
    if (oldTimer != timer){
      lcd.setCursor(0, 0);
      lcd.print(teaName(rawToTime(analogRead(teaPot))));
      
      
      lcd.setCursor(3, 1);
      lcd.print(timeString(0));
      
      lcd.setCursor(8, 1);
      lcd.print(timeString(timer));
      
      delay(300);
      updateIdleTime();
    }
  }
  
  if (!digitalRead(startButton)){
    inProcess = HIGH;
    Serial.println("Start Button is pressed");
    // Move servo to low position to dunk tea (0-179)
    servoMotor.write(servoLowPosition);
    updateIdleTime();
    delay(300);
  }
  
  if (inProcess == HIGH){
    Serial.println("inProcess is HIGH");
    for (int i = 0; i < timer; i++){
      lcd.setCursor(3, 1);
      lcd.print(timeString(i));
      delay(1000);
    }
   
    for (int i = servoLowPosition; i < servoHighPosition; i++){
      servoMotor.write(i);
      delay(servoSpeed);
    }
    for (int i = 0; i < 3; i ++){
      servoMotor.write(servoHighPosition);
      delay(200);
      if (!diagnosticBit){
        tone(buzzer, 1000, 100);
      }
      servoMotor.write(servoMidPosition);
      delay(servoLowPosition);
    }
    servoMotor.write(servoHighPosition);
    updateIdleTime();
    inProcess = LOW;
  }
}

SİZCE NASIL OLMUŞ?
Beğendim
52%
İlginç
26%
Eh İşte
8%
Anlamadım
4%
Kötü
4%
Berbat
6%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
1 YORUMLAR
  • Yasobay
    15 Ağustos 2018 at 23:01

    Ben direkt dosyayı indirdim fakat 2 dosya çıktı ayrıca aşağıdaki hatayı algılıyorum.Yardımcı olur musunuz.
    exit status 1
    Error compiling for board Arduino/Genuino Uno.

YORUM YAP