g00pher Grudzień 8, 2021 Udostępnij Grudzień 8, 2021 Witam, mam takie pytanie techniczne. Jak zrobić pauzę w wykonywaniu programu, żeby wymienić butelkę ???
farmaceuta Grudzień 9, 2021 Udostępnij Grudzień 9, 2021 Dnia 8.12.2021 o 10:36, g00pher napisał: Witam, mam takie pytanie techniczne. Jak zrobić pauzę w wykonywaniu programu, żeby wymienić butelkę ??? Pauza to nie problem...pytanie czym ma być wyzwalana?
Kasztan Grudzień 9, 2021 Autor tematu Udostępnij Grudzień 9, 2021 38 minut temu, farmaceuta napisał: Pauza to nie problem...pytanie czym ma być wyzwalana? Można by użyć przepływomierza : https://abc-rc.pl/product-pol-9893-Czujnik-przeplywu-cieczy-wody-0-3-6L-min-przeplywomierz-YF-S401-uniw.html?gclid=CjwKCAiA78aNBhAlEiwA7B76pxlZcpX-GsrBls40dFGf6ux90KbdVXHPinM8mNTIya9pDpATv9rzBhoCVtcQAvD_BwE Jeżeli nie leci ciecz przez pewien czas to pauza
g00pher Grudzień 9, 2021 Udostępnij Grudzień 9, 2021 1 godzinę temu, farmaceuta napisał: Pauza to nie problem...pytanie czym ma być wyzwalana? Najprościej jak się da, czyli na oko, przycisk i robi pauzę. Najlepiej tym samym co się załącza akcje.
farmaceuta Grudzień 9, 2021 Udostępnij Grudzień 9, 2021 1 godzinę temu, g00pher napisał: 2 godziny temu, Kasztan napisał: Jeżeli nie leci ciecz przez pewien czas Można i tak...na pewno pewniejsze niż przepływomierz chińskiego pochodzenia, choć ja z tych urządzeń nie korzystałem... 1 godzinę temu, g00pher napisał: Najprościej jak się da, czyli na oko, przycisk i robi pauzę. Najlepiej tym samym co się załącza akcje. No dobra...jak najbardziej wykonalne..np. dłuższe przytrzymanie guzika oznacza wymianę butli lub lepiej np dwa szybkie wciśnięcia, ale wtedy trzeba kod tak przerobić żeby poczekał na wybór trybu i nie załączał akcji...bo rozumiem że ten guzik po naciśnięciu poprostu uruchamia maszynę tak? (Nie patrzyłem uważnie na kod etc)
ethanak Grudzień 9, 2021 Udostępnij Grudzień 9, 2021 No i tu nasza ulubiona biblioteka Bounce2 Reakcja jest na puszczenie klawisza (nie wciśnięcie), a czas jak długo klawisz został przytrzymany odczytujesz odpowiednią metodą z biblioteki
farmaceuta Grudzień 9, 2021 Udostępnij Grudzień 9, 2021 Dnia 8.12.2021 o 10:36, g00pher napisał: Witam, mam takie pytanie techniczne. Jak zrobić pauzę w wykonywaniu programu, żeby wymienić butelkę ??? moze teraz bedzie to czego chcesz... #include <Servo.h> Servo myservo; #define kp 2 #define vp 3 #define czerwona 5 #define zielona 6 #define niebieska 4 #define start 7 #define Trig 8 #define Echo 9 #define serwo 10 #define bateria A0 #define potencjometr A2 int dystans; long duration; int a = 2; int b = 5; int pos = 0; int odczytanaWartosc = 0; int wartosc = 0; int czasOpoznienia = 300; byte akcja = 0; void setup() { Serial.begin(9600); Serial.println("napięcie"); myservo.attach(10); pinMode(kp, OUTPUT); pinMode(vp, OUTPUT); pinMode(czerwona, OUTPUT); pinMode(zielona, OUTPUT); pinMode(niebieska, OUTPUT); pinMode(start, INPUT_PULLUP); pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(bateria, INPUT_PULLUP); pinMode(potencjometr, INPUT_PULLUP); } void loop() { if (digitalRead(start) == LOW) { delay(1000); akcja = 1; if (digitalRead(start) == LOW) { delay(1000); akcja = 0; //tu wylacz pompy!! (dopisz) //ewentualnie zaswiec jakis led jako info o zablokowaniu } } int wartosc = analogRead(bateria); byte poziom = (wartosc / 204.8)*2.4; Serial.println(poziom); delay(50); if (poziom < 7) { myservo.write(0); digitalWrite(niebieska, LOW); digitalWrite(zielona, LOW); digitalWrite(czerwona, HIGH); } else { myservo.write(0); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); } if (akcja == 1){ myservo.write(14); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(28); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(45); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(62); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(80); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(99); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(120); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(140); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(158); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } myservo.write(174); digitalWrite(niebieska, LOW); digitalWrite(zielona, HIGH); digitalWrite(czerwona,LOW); delay(czasOpoznienia); dystans = calculateDistance(); if((dystans >=a) && (dystans <= b)) { lanie(); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } } } int calculateDistance() { digitalWrite(Trig, LOW); delayMicroseconds(2); digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); duration = pulseIn(Echo, HIGH); dystans = duration / 58; return dystans; } void lanie () { odczytanaWartosc = analogRead(potencjometr); odczytanaWartosc = map(odczytanaWartosc, 0, 1023, 5, 30); digitalWrite(niebieska, HIGH); digitalWrite(zielona, LOW); digitalWrite(czerwona,LOW); analogWrite(vp,200); digitalWrite(kp, 1); delay(100*odczytanaWartosc); analogWrite(vp,0); digitalWrite(kp, 0); digitalWrite(niebieska, HIGH); digitalWrite(zielona, LOW); digitalWrite(czerwona,LOW); delay(500); } krotkie wcisniecie maszyna startuje...przytrzymasz dluzej to praca zostanie przerwana z tym ze w drugim if musisz wylaczyc pompe,moze jakis led zapalic etc..jest opisane...opcja biblioteki o ktorej wspominal kolega @ethanak napewno lepsza jest bo nie blokuje no ale ja meczyl sie nie bede bo nie uzywam...
g00pher Grudzień 10, 2021 Udostępnij Grudzień 10, 2021 18 godzin temu, farmaceuta napisał: krotkie wcisniecie maszyna startuje...przytrzymasz dluzej to praca zostanie przerwana z tym ze w drugim if musisz wylaczyc pompe,moze jakis led zapalic etc..jest opisane... Dziękuję za fatygę ale coś jest nie tak, w monitorze portu nie widzi w ogóle wciskanej "pauzy" a po skończonej akcji już nie czeka na start tylko zaczyna wszystko do początku. Ale zaznaczam, że z programowaniem u mnie kiepsko a metodą prób i błędów kręcę się w kółko void loop() { if (digitalRead(start) == LOW) { delay(1000); akcja = 1; Serial.println("START"); if (digitalRead(start) == LOW) { delay(1000); akcja = 0; Serial.println("PAUZA"); digitalWrite(niebieska, LOW); digitalWrite(zielona, LOW); digitalWrite(czerwona, HIGH); //tu wylacz pompy!! (dopisz) //ewentualnie zaswiec jakis led jako info o zablokowaniu } } https://www.tinkercad.com/things/4AsPcigh4lc-nalewacz-v12-z-pauza
farmaceuta Grudzień 10, 2021 Udostępnij Grudzień 10, 2021 1 godzinę temu, g00pher napisał: a po skończonej akcji już nie czeka na start tylko zaczyna wszystko do początku. p() { f (digitalRead(start) == LOW) { ona, LOW); digitalWrite(czerwona, HIGH); //tu wylacz Ten kod nie jest istotny...nowy tel mam i coś tu nie gra..(nie mogę skasować tego?) Więc tak...zmienna akcja umieść na końcu warunku i dopisz do niej zero...wtedy przestanie się się powtarzać i będzie czekać na guzik...co do startu od nowa to nic nie poradzę bo tak kod jest zbudowany...poprostu musisz czekać aż całość się wykona...chociaż nie rozumiem teraz po co ta pauza wogole?? Skoro nalewasz tylko wtedy jak chcesz? Więc podczas postoju normalnie wymieniasz butelkę i nic złego się nie stanie...
SOYER Maj 12, 2022 Udostępnij Maj 12, 2022 Cześć, wklejam znakomity projekt kolegi z pracy, dobra robota. 2
farmaceuta Maj 12, 2022 Udostępnij Maj 12, 2022 Niezle... Widze @SOYER ze modelarstwo weszlo na nowy znakomity poziom kto wie...moze i ja kiedys do skrzydla zamontuje jakas malpke...(pol litra nie da rady, za mala powierzchnia nosna)
SOYER Maj 12, 2022 Udostępnij Maj 12, 2022 (edytowany) Modelarstwo nie ma tu nic do rzeczy(Bruder), to raczej zamiłowanie do pewnej zielonej marki, oraz maszyn i płynów z dużą mocą. Edytowano Maj 12, 2022 przez SOYER
BlackJack Maj 13, 2022 Udostępnij Maj 13, 2022 Normalnie szczyt lenistwa, żeby do kieliszka już się nie chciało samemu nalać. Ale jeszcze jest następny poziom, czyli kroplówka.
ethanak Maj 13, 2022 Udostępnij Maj 13, 2022 Ew. dla koneserów wynalazek niejakiego Gallowaya Galleghera - organy alkoholowe
Jaro600 Listopad 22, 2022 Udostępnij Listopad 22, 2022 Witam serdecznie, trochę odkurzę zapomniany temat ale tak mi się to urządzonko spodobało że musiałem napisać. Bardzo dobry projekcik brawo , może taki wykonam. Od razu nasunął mi się dodatkowy pomysł jak można by to udoskonalić. A mianowicie czy można by było dodać belki tensometryczne i serwo po wykryciu ciężaru od razu przemieszało by się pod wskazane miejsce aby nalać ? Urządzenie pracowałoby (byłoby w gotowości) od włączenia cały czas. Wydaje mi się to fajne rozwiązanie tylko czy wymagałoby dużej ingerencji w kod podany przez autora ? Dopiero raczkuje w arduino więc to ciężki kawałek chleba obecnie dla mnie ale mam nadzieję że ktoś pomoże. Jakiego komponentu użyć w tinkercad do próby podłączenie czegoś takiego ponieważ belki tensometrycznej nie zauważyłem tam. 1
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ę »