Tübitak projesi acil yardım!!!

Kodla Büyü

Buketkaya

Üye
Mesajlar
5
Tubitak projesi acil yardım
Arduıno ile sallama çay makinası yapımı
Merhaba arkadaşlar, projeyi benden önceki bilgisayar öğretmenimiz yazmış o olmadığı için ben uygulayacağım. Arduıno ile sallama çay makinası yapacam ,sallama çayı türüne göre belirli bir dakikada demleme işlemi yapcak,Arduıno uno üzerinde bağlantı şemasında birden fazla A0 giriş yeri var bunu nasıl çoğaltacam bilmiyorum , internet üzerinde kodlar da var ama yeterli değil bende kodlara çok hakim olmadığım için projeyi tamamlayamadım ,kodlarda da eksikliklere var ,kodlar aşağıdaki gibi yalnız kodlarda çalışmıyor hata veriyor , kodlar içinde yarımcı olursanız sevinirim.

#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;

}

}
 

Ekli dosyalar

  • caymakinesi_devre_974x768.jpg
    caymakinesi_devre_974x768.jpg
    89.6 KB · Görüntüleme: 77
hocam öncelikle projehocam.com sitesinden aldığınız bu kodlar eksik kendileri zaten belirtmişler toplamda 3 tane fonksiyon dosyası var diye.

bunun alternatifi olarak

https://devrearsivi.com/arduino-ile-cay-demleme-makinasi/

adresinde olan kodları ve devre şemasını kullanabilirsiniz.

liquidCrystal kütüphanesini kurmayı unutmayın devre şemasında arduino mini kullanılmış ama mantık aynı kodlar içerisinden görebilirsiniz hangi yere hangi kabloyu takacağınızı.

takıldığınız yerde hata kodunu buraya yazarak yardım alabilirsiniz.

şimdiden iyi çalışmalar.

kodlar aşağıdaki gibidir.

Kod:
/*
Proje www.devrearsivi.com tarafından yayınlanmıştır
 
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 6
* LCD D5 pin to digital pin 5
* LCD D6 pin to digital pin 4
* LCD D7 pin to digital pin 3
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VDD pin to 5V
* LCD LEDA pin to digital pin 9
* LCD LEDB pin to ground
* 10K contrast potentiometer:
* ends to 5V and ground
* wiper to LCD VO pin
 
* selection button to digital pin 2 and ground
* 10K selection potentiometer:
* ends to 5V and ground
* wiper to analog pin A0
* servo motor:
* power wire to 5V
* ground wire to ground
* signal wire to digital pin 7
* buzzer to digital pin 8 and ground
*/
 
#include <LiquidCrystal.h>
#include <Servo.h>
 
//state identifiers:
#define MENU 0
#define INPROCESS 1
#define DONE 2
 
const String welcomeMessage = ("Welcome!");
const String doneMessage = ("Done!");
 
const int buttonPin = 2;
const int servoPin = 7;
const int buzzerPin = 8;
const int backlightPin = 9;
const int potPin = A0; // selection potentiometer
const int servoHighPosition = 150;
const int servoLowPosition = 70;
const int servoSpeedDelay = 20; // decrease this value to increase the servo speed
 
unsigned long steepingTime;
unsigned long startTime;
long timeLeft;
 
volatile int state;
 
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
Servo servo;
 
//custom LCD characters:
byte leftArrow[8] = {0,0,4,12,28,12,4,0};
byte rightArrow[8] = {0,0,4,6,7,6,4,0};
byte clock[8] = {0,14,21,23,17,14,0,0};
byte sandTimer[8] = {31,17,10,4,10,31,31,0};
byte teaCup[8] = {10,5,0,31,25,9,15,0};
 
void setup() {
 
pinMode(buttonPin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
pinMode(backlightPin, OUTPUT);
 
attachInterrupt(0, buttonISR, CHANGE);
servo.attach(servoPin);
 
digitalWrite(backlightPin, HIGH);
 
lcd.createChar(0, leftArrow);
lcd.createChar(1, rightArrow);
lcd.createChar(2, clock);
lcd.createChar(3, sandTimer);
lcd.createChar(4, teaCup);
 
state = MENU;
 
lcd.begin(16, 2);
lcd.print(welcomeMessage);
}
 
void loop() {
 
switch(state){
 
case MENU: moveServoTo(servoHighPosition);
lcd.clear();
 
lcd.setCursor(11,1);
lcd.print("start");
 
lcd.setCursor(8,1);
lcd.write(byte(0)); //display selection arrows
lcd.write(byte(1));
 
lcd.setCursor(1,0);
lcd.write(byte(2)); //display clock symbol
 
while(state == MENU){
 
steepingTime = 30000 * map(analogRead(potPin),0,1023,1,20);
lcd.setCursor(3,0);
lcd.print(millisToTime(steepingTime));
delay(200);
}
break;
 
case INPROCESS: moveServoTo(servoLowPosition);
startTime = millis();
 
lcd.clear();
 
lcd.setCursor(12,1);
lcd.print("stop");
 
lcd.setCursor(1,0);
lcd.write(byte(3)); //display sand timer symbol
 
while(state == INPROCESS){
 
timeLeft = steepingTime - (millis() - startTime);
 
if(timeLeft > 0){
 
lcd.setCursor(3,0);
lcd.print(millisToTime(timeLeft));
}
else state = DONE;
 
delay(500);
}
break;
 
case DONE: lcd.clear();
lcd.setCursor(1,0);
lcd.print(doneMessage + " ");
 
lcd.write(byte(4)); //display tea cup symbol
 
moveServoTo(servoHighPosition);
 
doneBeep();
 
lcd.setCursor(12,1);
lcd.print("menu");
 
while(state == DONE);
break;
}
}
void buttonISR(){
 
static unsigned long lastInterruptTime = 0; //used to debounce button input
unsigned long interruptTime = millis();
 
if(interruptTime - lastInterruptTime > 500){ //long debounce time to allow long presses
 
switch(state){
 
case MENU: state = INPROCESS;
 
break;
 
case INPROCESS: state = MENU;
 
break;
 
case DONE: state = MENU;
 
break;
}
}
lastInterruptTime = interruptTime;
}
void moveServoTo(int finalPosition){ //move the servo slowly to the desired position
 
int currentPosition = servo.read();
 
if(finalPosition > currentPosition){
 
for(int i = currentPosition; i <= finalPosition; i++){
 
servo.write(i);
delay(servoSpeedDelay);
}
}
else if(finalPosition < currentPosition){
 
for(int i = currentPosition; i >= finalPosition; i--){
 
servo.write(i);
delay(servoSpeedDelay);
}
}
}
 
String millisToTime(long milliseconds){
 
unsigned long minutes = (milliseconds/1000) / 60;
unsigned long seconds = (milliseconds/1000) % 60;
 
String minutesString = String(minutes);
String secondsString = String(seconds);
 
if(minutes < 10) minutesString = "0" + minutesString;
 
if(seconds < 10) secondsString = "0" + secondsString;
 
return minutesString + ":" + secondsString;
}
 
void doneBeep(){
 
tone(buzzerPin, 4000, 700);
}

cay_makinasi-768x494@2x-768x494.jpg
 
hocam siz üstünüze alınmayın sonuçta sizinle bir ilgisi yok!
çay demleme makinası diye bir proje mi olur, bana böyle bir makine kullanmak için teklif etseler üstüne para isterim, projeler insanlara kolaylık sağlamalı zorluk değil, yerinizde olsam projeyi değiştirir başka bir proje yapardım.
 
Önemli olan öğrencilerle beraber kodlamayla bir şeyler yapabilmek. Yaptığımız faydasız ve çok basit bile olsa öğrencilere bir ufuk açabilir. Yaptığımız hangi proje nerde faydalı veya faydasız bir şekilde kullanılmış ki.
 
hocam yukarda belirttiğim gibi projeyi ben seçmedim daha önce seçilmiş ve projeyi seçen öğretmen tayin ile gitmiş proje onaylandığı için ben yapmak zorunda kalıyorum.
 
Son düzenleme:
Önemli olan öğrencilerle beraber kodlamayla bir şeyler yapabilmek. Yaptığımız faydasız ve çok basit bile olsa öğrencilere bir ufuk açabilir. Yaptığımız hangi proje nerde faydalı veya faydasız bir şekilde kullanılmış ki.
keşke o kadar basit olsa, proje sergiye yüzlerce kişinin önüne çıkacak günlerce emek edersin adam gelir bu ne gereksiz olmuş der bir daha arduinoya dokunmak istemezsin.
 
Malesef tübitak 4006 fuarları amacından şaşırtılıp şov ve panayıra dönüyor. Öğrencilerin bilimsel düşünme, problem çözme, günlük hayattaki bir probleme yönelik çözüm getirebilme, tasarım yapabilme vb gibi alanlarda geliştirmesi amaçlanırken projeleri kendimiz yapıp süreci anlamsız hale getiriyoruz. Bu projeler de çoğu zaman öğrencilerin yapabilecekleri seviyelerden çok yukarıda oluyor. Oysa ki öğrencinin kendisinin sadece bir iki bileşenle yaptığı ve sunduğu bir proje bence çok daha anlamlı ve amaca yönelik. Bunun önemini de maalesef anlayabilen çok az.
 
kimse anlamak istemiyor ben proje basit demiyorum çay makinsı diye bir proje saçma diyorum.

ayrıca arkadaşlar kodlarını paylaşmış bir dünya kod var, ve gidip bir siteden kodları kopyala yapıştır yapıp kullanılacak.

1. çay demleme makinası için toplumda bir ihtiyaç olmadığı için muhtemelen herkes burun kıvıracak.
2. hem kodları zor ve fazla, muhtemelen bir siteden kopyala yapıştır yapılacak öğrenciye bir faydası olmayacak.

bunun yerine 7 segment display ve joystick ile ritmik sayma makinası yapılabilir örneğin, bir gösterge kaçar sayılacağını gösterir kollarla sayı arttırılıp azaltılır, diğer gösterge sayıları gösterir sayılarda diğer kol ile kontrol edilir, al sana daha basit daha etkili bir proje, ilkokul öğrencileri bunu ritmik saymayı öğrenmek için mis gibi kullanır. öğrencilerde 7 segment display i ve joystick i rahatlıkla kodlayabilirler.

kapiş?
 
gerçi zaten artık hepimiz geçim derdine düşeceğiz proje falan yapmak ta gereksiz bir hal alıyor, eğitimi tübitağı falan boşverin gitsin.
 
Geri
Üst