AlanB Październik 31, 2024 Autor tematu Udostępnij Październik 31, 2024 @Santiago oj akcja się rozwija i to konkretnie kawał dobrej roboty Pan wykonuje i dziękuję za takie zaangażowanie i chęć pomocy w tym małym projekcie . Niestety mój pierwowzór nalewaka musiałem wykonać jeszcze raz , bo źle wykonałem otwór pod kieliszek i zamiast trafiać do środka to lało troszkę po ściance kieliszka. Nie poddaję się i już mam drugiego pacjenta na stole , ale z operacją musi poczekać do poniedziałku , wtedy będę miał dostęp do frezarki stołowej i będę mógł bardziej precyzyjniej wykonać otwory pod kieliszki jak i również pod wyświetlacz lcd. Tak sie zastanawiam jakby ten ekran zabezpieczyć przed przypadkowym wylaniem z kieliszka , a myślałem aby go zamontować przed kieliszkami ...
Santiago Listopad 2, 2024 Udostępnij Listopad 2, 2024 Tutaj nie ma 'Pan'. Po prostu powiedz 'dzięki'. I nie ma za co dziękować, to lubię takie proste wyzwania (bo na więcej mnie nie stać). Na razie to mię zatrzymałeś w nauce języka C, oraz w powtórnym przejściu kursu Forbota Arduino poziom 1 :). Ale Nalewak musi powstać ! Chociaż ostatnio przesuwając laptopa , popchnołem jedną rzecz z kabelkami , a ona dalej popchneła moją kawę , która pięknie ozdobiła ścianę malowaną dwa miesiące temu... No kobieta nie była szczęśliwa , dzisiaj to pomaluję . Odpal swój wirtualny Nalewak na 3000 delajów
Santiago Listopad 3, 2024 Udostępnij Listopad 3, 2024 Teraz liczy także wszystkie nalane. Jednak musisz podać jakie masz kieliszki, ja dałem 0.04. To służy do podawania ile litrów się przelało.
Santiago Listopad 3, 2024 Udostępnij Listopad 3, 2024 #include <Servo.h> // biblioteka dla silnika serwo #include <LiquidCrystal.h> // biblioteka wyswietlacza LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // jak podlaczony jest wyswietlacz Servo serwomechanizm; bool tPelny[7]; // warunek czy kieliszek zostal napelniony int tOsoby[7]; // tablica dla kazdej osoby od 0 do 6 - takie sa tablice w c, ilosc na osobe const int tPozycja[7] {0, 10, 44, 78, 112, 146, 180}; // pozycja dla serwa long sumaZimprezy = 0; // ile w sumie na imprezie bylo nalanych void setup() { pinMode(13, OUTPUT); // przekaznik pinMode(A0, INPUT_PULLUP); pinMode(A1, INPUT_PULLUP); pinMode(A2, INPUT_PULLUP); pinMode(A3, INPUT_PULLUP); pinMode(A4, INPUT_PULLUP); pinMode(A5, INPUT_PULLUP); serwomechanizm.attach(12); serwomechanizm.write(0); lcd.begin(12,2); lcd.print(" Napijemy sie ?"); delay(3000); lcd.setCursor(0,1); lcd.print("Postaw kielich !"); delay(3000); } void loop() { fCzujniki(); // funkcja ktora sprawdza stan czujnikow lcd.clear(); lcd.setCursor(0,0); lcd.print(" ZDROWIE !"); lcd.setCursor(0,1); lcd.print("Suma - "); lcd.setCursor(7,1); lcd.print(sumaZimprezy); lcd.setCursor(10,1); lcd.print(sumaZimprezy*0.04); // podanie w litrach o ile kieliszki sa 0.4 lcd.setCursor(15,1); lcd.print("l"); } void fCzujniki() { if (digitalRead(A0) == LOW) {delay(100); if (digitalRead(A0) == 0) { fUstawNalej(1);} } else {tPelny[1] = false;} if (digitalRead(A1) == LOW) {delay(100); if (digitalRead(A1) == 0) { fUstawNalej(2);} } else {tPelny[2] = false;} if (digitalRead(A2) == LOW) {delay(100); if (digitalRead(A2) == 0) { fUstawNalej(3);} } else {tPelny[3] = false;} if (digitalRead(A3) == LOW) {delay(100); if (digitalRead(A3) == 0) { fUstawNalej(4);} } else {tPelny[4] = false;} if (digitalRead(A4) == LOW) {delay(100); if (digitalRead(A4) == 0) { fUstawNalej(5);} } else {tPelny[5] = false;} if (digitalRead(A5) == LOW) {delay(100); if (digitalRead(A5) == 0) { fUstawNalej(6);} } else {tPelny[6] = false;} // sprawdzanie dwa razy aby wyeliminowac drgania stykow delay(1000); serwomechanizm.write(tPozycja[0]); // wracaj do pozycji poczatkowej } void fUstawNalej(int poz) // sprawdz czy kieliszek pusty, jesli tak to nalewaj, zaznacz jako pelny { if (tPelny[poz] == false) {++ tOsoby[poz]; ++ sumaZimprezy; fWyswietlacz(poz); delay(110); serwomechanizm.write(tPozycja[poz]);delay(2000); digitalWrite(13, HIGH); delay(3000); digitalWrite(13, LOW); tPelny[poz] = true; } } void fWyswietlacz(int poz) { // char numer; numer = tOsoby[poz]; lcd.clear(); lcd.setCursor(0,0); lcd.print("Nalewam do -"); lcd.setCursor(14,0); lcd.print(poz); lcd.setCursor(0,1); lcd.print("To nalanie -"); lcd.setCursor(14,1); lcd.print(tOsoby[poz]); } Pamiętaj, aby przelicznik na litry dobrać do wydajności pąpki i raczej napewno zmienić te 0.04. Oczywiście , możesz to usunąć. Ostatnio też poprawiłem poważny błąd, podczas wysłania polecenia do serwa , zaraz po tym było nalewaj - ale zauważyłem , iż serwo do skrajnej pozycji potrzebuje więcej niż 1 sek.... kolejny delaj :), który zatrzymał nalewanie w ruchu :). Dzisiaj niestety to koniec, ale mam świetny (według mnie), plan na zabezpieczenie, które to nie potrzebuje żadnych dodatkowych przycisków. Pamiętaj także - jeżeli Nalewak nalewa (jest w delaju) to jak ktoś podniesie pełny kieliszek wypije i położy na to samo miejsce,a Nalewak gdzieś dalej w delaju to ten kieliszek zawsze będzie traktowany jako pełny. W takim wypadku należy wyprosić gościa , albo podnieść kieliszek kiedy Nalewak nie będzie w delaju :)
AlanB Listopad 3, 2024 Autor tematu Udostępnij Listopad 3, 2024 @Santiago dziękuję bardzo tak się składa, że kieliszki mam akurat 0.4 wiec nie muszę nic zmieniać Jutro już będę dalej działał z obudową , jakieś może sugestie , podpowiedzi jak zabezpieczyć lcd przed zalaniem ? myślałem nad jakąś szybką z plexi tylko czy to zda egzamin? ...
AlanB Listopad 3, 2024 Autor tematu Udostępnij Listopad 3, 2024 @Santiago A gdybym tak jeszcze chciał dodać podświetlenie pod kieliszki ( czerwone gdy nalewa, zielone gdy naleje ) do danego kieliszka to muszę stworzyć coś na zasadzie jak z serwem ? czyli const int ..... bo jak dodam do funkcji "void fUstawNalej" typowe digitalWrite(8,HIGH); to za kazdym razem obojętnie na jakiej pozycji to zawsze zapali diodę przypisaną do pinu a jak zrobić aby do każdej pozycji przypisać poszczególne diody ?
jand Listopad 4, 2024 Udostępnij Listopad 4, 2024 16 godzin temu, Santiago napisał: W takim wypadku należy wyprosić gościa , albo podnieść kieliszek kiedy Nalewak nie będzie w delaju Sugeruję, byście jednak rozważyli propozycję @ethanaka z 4 października i zastosowali maszynę stanów. Umiejętność stosowania tej techniki przyda się nie tylko przy nalewaniu kieliszków . Inaczej wciąż będziecie bohatersko walczyć z problemami, które stwarza stosowanie delay'ów. Im częściej będziecie musieli obsługiwać asynchroniczne zdarzenia zewnętrzne (takie jak usunięcie kieliszka), tym problemów będzie więcej. 1
Santiago Listopad 4, 2024 Udostępnij Listopad 4, 2024 @AlanB Wyświetlacz na górze. Martwią mnie te diody, najlepiej programowalne. Nie mam takich , jak kupię to można iść dalej. Jeżeli normalne trój kolorowe to należy zwiększyć ilość wyjść. Muszę poważnie podejść do Nalewaka i wydzielić czas na to. @jand Tutaj podobają mi się delaje, ale wersja 2 Nalewaka będzie lepsza. W razie czego to wyprę się tego dziecka argumentując: 1 Niczego nie zrobiłem z głową. 2Niczego nie zrobiłem co by miało ręce i nogi. 3 Niczego nie zrobiłem w tak krótkim czasie jak dziewięć miesięcy.
AlanB Listopad 5, 2024 Autor tematu Udostępnij Listopad 5, 2024 Pytanie odnośnie zasilania teraz mam zasilanie sieciowe 12V , a moje pytanie czy np akumulatorek litowo-polimerowy 1800 MAH da radę uciągnąć ten zestaw dłużej niż 10godzin? Aby nalewak stał się bezprzewodowy? 1
Santiago Listopad 9, 2024 Udostępnij Listopad 9, 2024 To jest raczej urządzenie stacjonarne i zasilanie inne niż z sieci raczej nie jest praktyczne. Na tym poziomie raczej nie warto zbyt mocno kombinować. Czy bateria wytrzyma 10h czy 4 to zależy co podłączysz, ale nie ma optymizmu i to z wielu powodów. 1 zapomnisz naładować i podczas kolejnej imprezy przestanie działać po 10 minutach... 2 masz drugą w zapasie , ale zapomniałeś ją naładować i mamy punkt 1 (pomijając fakt że szukania czegoś podczas imprezy to nie przyjemność). 3 koło ratunkowe - ładujesz Nalewak przez kabel i teraz bateria szczęśliwie się ładuje i wszystko działa - wracamy do punktu 0 - kabel.. Dwa dni temu znalazłem temat Nalewaka z 2020 roku na Forbocie - ale ten człowiek po prostu stworzył sam wszystko i tylko się pochwalił tym co ma. Jego wiedza jest dużo większa nisz nasza, ale warto wyciągnąć wnioski. Jutro dopiszę zabezpieczenie przed osobami niepowołanymi , ale nie wiem czy komplikować to czy nie, teoretycznie wydumałem takie coś , że wyślę uproszczone zabezpieczenie i bez patrzenia na kod spróbujesz odpalić Nalewak z takim efektem aby dioda sygnalizująca nalewanie zapalała się. Dzieci myślą w nieco inny sposób więc kod jest nie intuicyjny dla nich (ani dla dorosłych(chyba)). No i Na Zdrowie !
orb777 Listopad 10, 2024 Udostępnij Listopad 10, 2024 (edytowany) 10 godzin temu, Santiago napisał: 1 zapomnisz naładować i podczas kolejnej imprezy przestanie działać po 10 minutach... Można dodać wskaźnik naładowania/mały woltomierz wyzwalany przyciskiem. W aku od elektronarzędzi sprawdza się to. Arduino ma też adc, które z dzielnikiem napięcia może działać jak prosty woltomierz, ale trochę więcej zachodu przy tym. Edytowano Listopad 10, 2024 przez orb777
Santiago Listopad 10, 2024 Udostępnij Listopad 10, 2024 @orb777 Dzięki za info o tym cudeńku ! Muszę to kupić (parę sztuk - przy tej cenie...). Co do ADC to oczywiście można, ale moim zdaniem najlepiej skończyć projekt, wyciągnąć wnioski i jak przyjdzie chęć na coś lepszego , zbudować to. Niemal zawsze pierwszy projekt motywuje do stworzenia owej rzeczy po raz drugi. Wiemy , że to jest zawodne, to jest zbędne, to powinno być bardziej rozbudowane, tutaj brakuje przepływomierza, tutaj są problemy z serwo.... No czas na pisanie :). Miłego dnia dla Wszystkich
AlanB Listopad 10, 2024 Autor tematu Udostępnij Listopad 10, 2024 @Santiago w sumie to racja a znając moja pamięć to na pewno zapomnę naładować baterię🫣. Teraz aktualnie walczą z tymi mikro przełącznikami krańcowym , kupiłem rozmiarowo pasujące do projektu natomiast problem jest w tych blaszkach a mianowicie albo moje kieliszki są takie lekkie albo te mikro przełączniki mają taką mocna sprężynę bo jak stawiam kieliszek to blaszka potrafi mi podnosić kieliszek ku górze... Szukałem już czy może nie ma jakiegoś czujnika na szkło, na przeźroczyste przedmioty, ale są same duże laboratoryjne ...
Santiago Listopad 10, 2024 Udostępnij Listopad 10, 2024 Wiedziałem , że tak będzie z tymi przełącznikami - przecież nawet jak naciskasz palcem to stawiają solidny opór. Ja natomiast walczyłem przez 3 godziny z zabezpieczeniem i tak działa , że nie można tego odbezpieczyć... Wcześniej wpadłem na pomysł aby postawić na mikroprzełącznikach jakiś krążki metalowe o odpowiedniej wadze, tak aby postawienie kieliszka włączało je. Jest to i tak prowizorka. Trzeba postawić na laser. Pod każdym miejscem na kieliszek dioda , na ramieniu Nalewaka czujnik. Jeżeli jest silne źródło światła to znaczy że nic tam nie stoi jeżeli jest dużo słabsze to znaczy jest kieliszek... Wadą tego podejścia jest że ramie co parę sekund musiałoby sprawdzać to wszystko... Chyba , że czujnik zbliżeniowy i tylko jak wykryje ruch to sprawdza.
orb777 Listopad 10, 2024 Udostępnij Listopad 10, 2024 2 godziny temu, Santiago napisał: Trzeba postawić na laser. Z rozwiązań optycznych, próbowałeś może TCRT5000? Z ciekawości sprawdziłem i nawet mogłoby to działać (w małych pieniądzach), tyle, że kieliszek musiałby mieć nieprzezroczystą naklejkę od spodu, najlepiej białą (byle nie czarną). To tylko pomysł i nie bez wad - np. obudowa czujnika musi puszczać podczerwień, a sam detektor może być "zmylony" np. przez promienie słoneczne. Jednak ogólnie działa, potencjometrem da się wyregulować odległość wykrywania, nawet poniżej 1 cm.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »