Przesunięty przez: treker 08 Sie 08 06:00 |
Program i schemat czy dobrze ? |
| Autor |
Wiadomość |
_cyna_PL


Pomógł: 1 raz Posty: 47 Otrzymał 1 piw(a) Skąd: Z nikąd
|
|
|
|
 |
pawel


Pomógł: 5 razy Posty: 146 Otrzymał 5 piw(a) Skąd: Rybnik
|
Wysłany: 08 Sie 08 08:41
|
|
|
| Program dobrze, schemat też. W BASCOMIe do programu wchodzisz poleceniem Gosub, a żeby wyjść z podprogramu pod pewnym warunku to umieszczasz polecenie Return w instrukcji warunkowej. |
|
_________________ www.robotyka.net.pl
www.peakoil.pl |
|
|
|
 |
Decado


Pomógł: 6 razy Posty: 161 Otrzymał 6 piw(a) Skąd: Bełk
|
Wysłany: 09 Sie 08 09:05
|
|
|
| A ja tu widze mały błąd. Bo popatrz naciśniesz S1 a potem S2 to będziesz miał zapalone segmenty z S1 i z S2. Dodaj w programie zerowanie wyjśc(na diody) przy naciśnięciu następnego przycisku a potem dopiero ustawienie jego podporgramu. |
|
_________________ "Niema ludzi niewinnych, są tylko źle przesłuchiwani" Feliks "Krwawy Feliks" Dzierżyński |
|
|
|
 |
_cyna_PL


Pomógł: 1 raz Posty: 47 Otrzymał 1 piw(a) Skąd: Z nikąd
|
Wysłany: 09 Sie 08 09:56
|
|
|
| Cytat: | | Co to ma wspólnego z robotyką? |
Z robotyka nic ale z programowaniem owszem.
| Cytat: | | W BASCOMIe do programu wchodzisz poleceniem Gosub, a żeby wyjść z podprogramu pod pewnym warunku to umieszczasz polecenie Return w instrukcji warunkowej. |
a mógłbyś podać przykład ;p [chodzi mi o takie coś ze jednym przyciskiem wchodzę do podprogramu a drugim wychodzę do głównego programu ;p [nie umiem niczego takiego znaleźć ;/]
| Cytat: | | Dodaj w programie zerowanie wyjśc(na diody) przy naciśnięciu następnego przycisku |
czy chodzi a cos takiego
| Kod: | Prog_1:
Set Portd.0
Reset Portd.1
Reset Portd.2
Set Portd.3
Return |
Komentarz dodany przez: treker:
| Cytat: | | Z robotyka nic ale z programowaniem owszem. |
To co robiło w dziale Robotyka - Programowanie |
|
|
|
|
 |
Decado


Pomógł: 6 razy Posty: 161 Otrzymał 6 piw(a) Skąd: Bełk
|
Wysłany: 09 Sie 08 01:31
|
|
|
nie do każdego dodaj
| Kod: | Portd.0 = 0
portd.1 = 0
portd.2 = 0
portd.3 = 0 |
Wtedy będzie dobrze działac |
|
_________________ "Niema ludzi niewinnych, są tylko źle przesłuchiwani" Feliks "Krwawy Feliks" Dzierżyński |
|
|
|
 |
pawel


Pomógł: 5 razy Posty: 146 Otrzymał 5 piw(a) Skąd: Rybnik
|
Wysłany: 09 Sie 08 02:39
|
|
|
Jeśli chodzi o to wychodzenie to chodzi o coś takiego:
| Kod: | podprogram:
Do
If pin0.b=0 Then Return
End If
Loop
|
|
|
_________________ www.robotyka.net.pl
www.peakoil.pl |
| Ostatnio zmieniony przez pawel 09 Sie 08 02:40, w całości zmieniany 2 razy |
|
|
|
 |
Decado


Pomógł: 6 razy Posty: 161 Otrzymał 6 piw(a) Skąd: Bełk
|
Wysłany: 09 Sie 08 05:09
|
|
|
pawel wprowadzasz w błąd. Taki podprogram będzie w rzeczywistości pętlą nieskończoną.
Cyna dobrze napisał podprogramy. |
|
_________________ "Niema ludzi niewinnych, są tylko źle przesłuchiwani" Feliks "Krwawy Feliks" Dzierżyński |
|
|
|
 |
_cyna_PL


Pomógł: 1 raz Posty: 47 Otrzymał 1 piw(a) Skąd: Z nikąd
|
Wysłany: 09 Sie 08 05:54
|
|
|
Właśnie tez tak myślałem ;/
Ale nie wiem jak zrobić aby wychodzić z podprogramu gdy zastanie nacisniety przycisk ;/
| Cytat: | | Kod: | Portd.0 = 0
portd.1 = 0
portd.2 = 0
portd.3 = 0 |
|
gdzie ?? bo nie rozumiem ;p przekopiuj większy kawałem programu ;p |
|
|
|
|
 |
Decado


Pomógł: 6 razy Posty: 161 Otrzymał 6 piw(a) Skąd: Bełk
|
Wysłany: 09 Sie 08 08:01
|
|
|
Pisze teraz tak prowizorycznie bo niemam czasu musze zakonczyc do jutra swój projekt z którym mam troszke pracy.
| Kod: | Prog_2:
Reset Portd.0
Reset Portd.1
Reset Portd.2
Reset Portd.3
Set Portd.1
Set Portd.2
Wait 2 'czekaj 2 s '
Return 'wykonuje powrot do programu glownego |
Gdyby procke chodził bardzo wolno(20Hz) było by widac migotanie ale powyżej 50 podobno już nie widac a więc nie powinno byc problemu.
Pozdrawiam |
|
_________________ "Niema ludzi niewinnych, są tylko źle przesłuchiwani" Feliks "Krwawy Feliks" Dzierżyński |
|
|
|
 |
pawel


Pomógł: 5 razy Posty: 146 Otrzymał 5 piw(a) Skąd: Rybnik
|
Wysłany: 09 Sie 08 08:12
|
|
|
Wydaje mi się że teki mój kod jest dobry ale jeszcze dodam tam kilka żeczy.
| Kod: | podprogram:
'instrukcje zawarte w podprogramie
Do
If pin0.b=0 Then Return
End If
Loop
Return |
|
|
_________________ www.robotyka.net.pl
www.peakoil.pl |
|
|
|
 |
_cyna_PL


Pomógł: 1 raz Posty: 47 Otrzymał 1 piw(a) Skąd: Z nikąd
|
Wysłany: 10 Sie 08 05:23
|
|
|
Oki już zrozumiałem błąd .
Ale jeszcze co do tych podprogramów :
| Kod: | Do
If Pinb.0 = 1 Then
Gosub Program1 ' przycisk 1
End If
Loop
Program1:
Do
If Pinb.1 = 1 Then
Return ' przycisk 2
End If
Portd.0 = 1
Portd.1 = 1
Loop |
Czy takie coś będzie działać ??
można użyć dwóch nieskończonych pętli ??
1 przycisk wchodzi do podprogramu 2 przycisk wychodzi z niego ??
pozdro ) |
|
| Ostatnio zmieniony przez _cyna_PL 10 Sie 08 05:25, w całości zmieniany 1 raz |
|
|
|
 |
mictronic

Pomógł: 4 razy Posty: 70 Otrzymał 1 piw(a) Skąd: Bydgoszcz
|
Wysłany: 10 Sie 08 09:51
|
|
|
Nie nie może być dwóch pętli : D
Niedokońca rozumiem jaki jest problem ale napisze cos : P
Jesli zrobisz tak:
| Kod: | Do
If Pinb.0 = 1 Then gosub program1
waitms 50
Loop
Program1:
If Pinb.1 = 1 Then Return
waitms 50
Portd.0 = 1
Portd.1 = 1
end sub |
Program poleci tam tylko wtedy gdy pinb.0 będzie w stanie wysokim,jeśli chcesz się tam zatrzymać gdy tylko raz przyciśniesz przycisk musisz policzyć kliknięcia...Coś takiego:
| Kod: | dim licznik as byte
Do
If Pinb.0 = 1 Then incr licznik
if licznik =1 then gosub program 1 'program skacze tam z każdym cyklem zegara do czasu gdy zmienna przyjmie inna wartość.
waitms 50
Loop
Program1:
If licznik=2 Then
Return
licznik=0 'zerujemy bo inaczej musiałbyś naciskać 253 razy...
end if
Portd.0 = 1 'główny program podprogramu : P
Portd.1 = 1
waitms 50
end sub |
To tyle, powinno działać ale różnie to jest...
Pozdrawiam Mictronic! |
|
|
|
|
 |
|
|