[code]
#include <IRremote.h> //biblioteka diody podczerwieni
#include <Wire.h> // biblioteka wyświetlacza
#include <LiquidCrystal_I2C.h> // biblioteka I2C
#define irPin 11 // pin dla diody podczerwieni
int FantaIn=5; // wejsciowy pin przycisku fanta
int SpriteIn=6; // wejsciowy pin przycisku sprite
int ColaIn=7 ;// wejsciowy pin przycisku cola
int FantaOut=8 ;// wyjsciowy pin sterujący fanta
int SpriteOut=9; // wyjsciowy pin sterujący sprite
int ColaOut=10; // wyjsciowy pin sterujący cola
boolean FantaIr = false; //stan pinu IR
boolean SpriteIr = false; //stan pinu IR
boolean ColaIr = false; //stan pinu IR
IRrecv irrecv(irPin); // dane z pinu 11 diody podczerwieni
decode_results results; // sprawdzenie czy są dane
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //adres wyświetlacza
byte ZNAK0[8] =
{
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b11111
};
byte ZNAK1[8] =
{
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b11111,
0b11111
};
byte ZNAK2[8] =
{
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b11111,
0b11111,
0b11111
};
byte ZNAK3[8] =
{
0b10001,
0b10001,
0b10001,
0b10001,
0b11111,
0b11111,
0b11111,
0b11111
};
byte ZNAK4[8] =
{
0b10001,
0b10001,
0b10001,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte ZNAK5[8] =
{
0b10001,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11111
};
byte heart[8] =
{
0b00000,
0b11011,
0b10101,
0b10001,
0b01010,
0b00100,
0b00000,
0b00000
};
void setup()
{
Serial.begin(9600); // port szeregowy
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
irrecv.enableIRIn(); // wlaczenie pinu IR
pinMode(FantaIn, INPUT); // wejscie pinow
pinMode(SpriteIn, INPUT); // wejscie pinow
pinMode(ColaIn, INPUT); // wejscie pinow
pinMode(FantaOut, OUTPUT); // wyjscie pinow
pinMode(SpriteOut, OUTPUT); // wyjscie pinow
pinMode(ColaOut, OUTPUT); // wyjscie pinow
digitalWrite(SpriteOut, HIGH);
digitalWrite(FantaOut, HIGH);
digitalWrite(ColaOut, HIGH);
lcd.clear();
lcd.begin(16,2); // Inicjalizacja LCD 2x16
lcd.begin(16,2);
lcd.createChar(0, ZNAK0);
lcd.createChar(1, ZNAK1);
lcd.createChar(2, ZNAK2);
lcd.createChar(3, ZNAK3);
lcd.createChar(4, ZNAK4);
lcd.createChar(5, ZNAK5);
lcd.createChar(6, heart);
}
void loop()
{
boolean FantaIr = false; //stan pinu IR
boolean SpriteIr = false; //stan pinu IR
boolean ColaIr = false; //stan pinu IR
if (irrecv.decode(&results)) //warunek diody podczerwieni
{
switch (results.value)
{
case 0x1FE40BF: // kod przycisku fanta
FantaIr = ~FantaIr;
break;
case 0x1FE20DF: // kod przycisku sprite
SpriteIr = ~SpriteIr;
break;
case 0x1FE609F: // kod przycisku cola
ColaIr = ~ColaIr;
break;
}
irrecv.resume();
}
Serial.println(FantaIr);
int FantaButton = digitalRead(FantaIn); // sprawdzenie guzikow
int SpriteButton = digitalRead(SpriteIn);// sprawdzenie guzikow
int ColaButton = digitalRead(ColaIn);// sprawdzenie guzikow
if(FantaIr==false&&SpriteIr==false&&ColaIr==false&&FantaButton==0&&SpriteButton==0&&ColaButton==0)
{ lcd.setCursor(4,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Wybierz");
lcd.setCursor(6,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("Sok");
delay(2000);
lcd.clear();
lcd.setCursor(1,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("1.Pomaranczowy");
lcd.setCursor(1,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("2.Wieloowocowy");
delay(2000);
lcd.clear();
lcd.setCursor(1,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("3.Porzeczkowy");
delay(2000);
lcd.clear();
}
if (FantaIr == true || FantaButton == 1) // warunki sterowania
{
lcd.clear();
lcd.setCursor(1,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("-POMARANCZOWY-");
lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("Prosze czekac...");
delay(2000);
lcd.clear();
digitalWrite(FantaOut, LOW);
for(int i=0; i<6; i++)
{
lcd.setCursor (6,0);
lcd.print ((char)i);
delay (2000);
lcd.setCursor (0,1);
lcd.print(i*20);
lcd.setCursor (3,1);
lcd.print("%");
}
digitalWrite(FantaOut, HIGH);
delay(1000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("-> Odbierz sok");
lcd.setCursor (2,1);
lcd.print("SMACZNEGO! ");
lcd.setCursor (13,1);
lcd.print ((char)6);
delay(2000);
lcd.clear();
}
if (SpriteIr == true || SpriteButton == 1)
{
lcd.setCursor(1,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("-WIELOOWOCOWY-");
lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("Prosze czekac...");
delay(2000);
lcd.clear();
digitalWrite(SpriteOut, LOW);
for(int i=0; i<6; i++)
{
lcd.setCursor (6,0);
lcd.print ((char)i);
delay (5000);
lcd.setCursor (0,1);
lcd.print(i*20);
lcd.setCursor (3,1);
lcd.print("%");
}
digitalWrite(SpriteOut, HIGH);
delay(1000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("-> Odbierz sok");
lcd.setCursor (2,1);
lcd.print("SMACZNEGO! ");
lcd.setCursor (13,1);
lcd.print ((char)6);
delay(2000);
lcd.clear();
}
if (ColaIr == true || ColaButton == 1)
{
lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print(" -PORZECZKOWY-");
lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
lcd.print("Prosze czekac...");
delay(2000);
lcd.clear();
digitalWrite(ColaOut, LOW);
for(int i=0; i<6; i++)
{
lcd.setCursor (6,0);
lcd.print ((char)i);
delay (4000);
lcd.setCursor (0,1);
lcd.print(i*20);
lcd.setCursor (3,1);
lcd.print("%");
}
digitalWrite(ColaOut, HIGH);
delay(1000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print("-> Odbierz sok");
lcd.setCursor (2,1);
lcd.print("SMACZNEGO! ");
lcd.setCursor (13,1);
lcd.print ((char)6);
delay(2000);
lcd.clear();
}
}
[/code]
Według mnie miejsce na szklankę powinno być jedno…
No okej. Ale pomyśl – 3 pompki – trzeba byłoby kupić rozgałęźniki i trochę zabawy z tym jest.
Według mnie jest okej. Może autor będzie dalej rozwijał projekt :)
Dokładnie 3 trójniki bo szybkim rozrysowaniu, ale nie wiadomo jak to wpłynie na ciśnienie i cofanie się napoju do pompek. Nie wiem czy są zawory zwrotne i ciekawe gdzie by je kupić.
albo chyba najprościej by było 3 wężyki blisko obok siebie ustawić :)
Dokładnie :)
Nie bedzie rozwijał dalej, bo projekt jest ściągnięty z internetu i tylko lekko zupregrejdowany.
jestem na tak !!
bardzo ciekawy i wydaje się być całkiem prostym projektem (wydaje się ale pewnie tak nie było heh)
szkoda że tak mało zdjęć z powstawania :/ w sumie nie wiadomo jak to w środku wygląda itp. itd.
a tak poza tematem, fajny motyw byłby z informacją o braku danego napoju, lub możliwością sprawdzenia ile zostało bez wyciągania pojemnika z napojem
Bardzo fajny projekt :) Animacja napełniania bardzo fajnie pomyślana ;) Co do schematu to warto by było zabezpieczyć przekaźniki diodą i przełączać je przez tranzystory ;) niekiedy lubią łyknąć trochę prądu i mogłyby zawiesić arduino (te przekaźniki)
Wiem jak mogą się skończyć przygody z podłączeniem do arduino bezpośrednio przekaźnikiem jednak zastosowane przeze mnie przekaźniki są to gotowe moduły pod arduino, są zabezpieczone diodą i jest też tranzystor npn fabrycznie na płytce :) Pewnie gdyby nie były tak tanie w chinach sam bym robił moduły jednak przy takiej cenie jest to nieopłacalne.
Projekt bardzo ciekawy, taki dystrybutor w domu to fajna sprawa. Nurtuje mnie jednak sprawa soków, podejrzewam iż do środka wkładane są soki w kartonikach min.1l – taki sok po otwarciu należy przechowywać w chłodnym miejscu, a co gdy będzie gorąco – sok po kilku godzinach nie będzie nadawał się do picia. Może warto pomyśleć nad modułem Peltiera lub jakimś innym chłodzeniem. Druga rzeczą jest dozowanie soku, pasują tylko dedykowane szklanki – gdy ktoś podstawi mniejszą sok po prostu zostanie przelany, Może warto by było skrócić czas nalewania zmniejszając tym ilość soku, a wprowadzić możliwość wyboru ilości porcji, – duża szklanka lub mała. Niemniej uważam że projekt jest bardzo rozwojowy – 4*
Nad ogniwem peltiera myślałem, ale to raczej sprawa na wakacje, dodatkowo blok który będzie chłodził napój w momencie przepływu przez ten blok. Ale tak jak napisałem, czas na to będzie dopiero w wakacje. Projekt rozwojowy, tak jak zauważyłeś. Aktualnie czekam na przesyłkę z chin z pompkami do podciśnienia.
ile kosztowały pompki?
Ok 40zł z przesyłką. Całość wyniosła mnie ~60zł przy czym dużą część elementów miałem.
Pod jaką nazwą mogę znaleźć pompki?
Szkoda, że nie można używać napojów gazowanych, ponieważ po paru godzinach byłyby odgazowane i niesmaczne. Korzystając z okazji, zadam pytanie: Widział może ktoś z was elektrozawory do płynów, które można stosować do celów spożywczych? Ewentualnie przepis na zrobienie takiego… Przydałyby się właśnie do napojów gazowanych, dodatkowo można by używać tylko jedną pompkę.
Witam
Proszę o informacje gdzie mogę kupić takie pompki?
Czy ten cały “ekspres” ma jakiś dedykowany tryb czyszczenia przewodów i pompek? :)
Generalnie projekt został skonstruowany na potrzeby szkolnego konkursu, po każdym użytkowaniu był płukany wodą, kilkukrotnie również wrzątkiem :) W przyszłości planowana jest nowa obudowa z mdf, przebudowa systemu dozowania (pompki podciśnieniowe) oraz tryb serwisowy.
Super projekt! Wyjątkowo oryginalny pomysł – tego jeszcze nie widziałem :D