ARDUİNO SALLAMA ÇAY MAKİNESİ

ARDUİNO SALLAMA ÇAY MAKİNESİ

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.

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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// 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;
  }
}

Yorumlar

Yorum Gönder

Popüler Yayınlar