Skocz do zawarto┼Ťci
_cyna_PL

Lampka rowerowa - Atmega8

Pomocna odpowied┼║

Witam ­čÖé

Na pewno ka┼╝dy z was je┼║dzi b─ůd┼║ je┼║dzi┼é rowerem ;/

O podstawowym wyposa┼╝eniu roweru ka┼╝dy wie a ja wspomn─Ö o tylnym ┼Ťwietle, poniewa┼╝ zacz─ů┼éem zabaw─Ö z procesorami postanowi┼éem zrobi─ç tylna lampk─Ö rowerowa z 7 opcjami [co┼Ť takiego jak ze sklepu za 4 z┼é].

Wiec przejd┼║my do rzeczy:

- program na atmega8 [procesor i programator mam]

- programik napisa┼éem ale nie wiem czy b─Ödzie dzia┼éa┼é wiec podaje go tutaj ­čśő [nie zwracajcie uwagi na komentarze do komend to dla u┼éatwienia mi nauki]:

 ' program sterujacy funkcjami czterech diod [test] 
' przejscie do podprogramu



$regfile = "m8def.dat"                                      ' dzialanie na atemega8
$crystal = 8000000                                          '8 MHz na wewn─Ötrznym oscylatorze


Config Portd = Output                                       'ca┼éy port d jako wyj┼Ťcie
Config Portb = Input                                        'caly port b jako wejscie

Portb = &B00000000                                          'wszystko stan = 0
Portd = &B00000000                                          'wszystko stan =0



Do                                                          'petla nieskonczona

If Pinb.0 = 1 Then                                          ' przycisk S1
Gosub Prog_1

Elseif Pinb.1 = 1 Then                                      ' przycisk S2
Gosub Prog_2

Elseif Pinb.2 = 1 Then                                      ' przycisk S3
Gosub Prog_3

Elseif Pinb.3 = 1 Then                                      ' przycisk S4
Gosub Prog_4

Elseif Pinb.4 = 1 Then                                      ' przycisk S5
Gosub Prog_5

Elseif Pinb.5 = 1 Then                                      ' przycisk S6
Gosub Prog_6

Elseif Pinb.6 = 1 Then                                      ' przycisk S7
Gosub Prog_7


End If                                                      'koniec bloku warunkowego

Loop

Prog_1: 
Set Portd.0
Set Portd.3

Wait 2                                                      'czekaj 2 s                                                   '
Return                                                      'wykonuje powrot do programu glownego

Prog_2: 
Set Portd.1
Set Portd.2

Wait 2                                                      'czekaj 2 s                                              '
Return                                                      'wykonuje powrot do programu glownego

Prog_3: 
Set Portd.0
Set Portd.2

Wait 2                                                      'czekaj 2 s
Return                                                      'wykonuje powrot do programu glownego

Prog_4: 
Set Portd.1
Set Portd.3

Wait 2                                                      'czekaj 2 s                                               '
Return                                                      'wykonuje powrot do programu glownego

Prog_5: 
Set Portd.0
Set Portd.1

Wait 2                                                      'czekaj 2 s
Return                                                      'wykonuje powrot do programu glownego

Prog_6: 
Set Portd.2
Set Portd.3

Wait 2                                                      'czekaj 2 s                                                    '
Return                                                      'wykonuje powrot do programu glownego

Prog_7: 

Set Portd.0
Set Portd.1
Set Portd.2
Set Portd.3
Wait 2                                                      'czekaj 2 s

Reset Portd.0
Reset Portd.1
Reset Portd.2
Reset Portd.3
Waitms 500                                                  'czekaj 0.5 s

Set Portd.0
Set Portd.1
Set Portd.2
Set Portd.3
Waitms 1500                                                 'czekaj 1.5 s                                                '
Return                                                      'wykonuje powrot do programu glownego


End

Oczywi┼Ťcie ┼╝aden program nie bedzie bez schematu :

wiec prosz─Ö o sprawdzenie zar├│wno programu jak i schematu;p

A jeszcze jedno co do j─Özyka bascom. Jaka komenda przenosi do podprogramu i z niego nie wychodzi a┼╝ do odpowiedniego wydarzenia??

ps: mam nadzieje ze temat nie poleci do kosza ­čśů

w razie czego pyta─ç to wyt┼éumacz─Ö bo nie wiem czy ........... ­čśâ

Komentarz dodany przez: treker:

Co to ma wsp├│lnego z robotyk─ů?

Przenosze.

Udost─Öpnij ten post


Link to post
Share on other sites

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.

Udost─Öpnij ten post


Link to post
Share on other sites

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.

Udost─Öpnij ten post


Link to post
Share on other sites
Co to ma wsp├│lnego z robotyk─ů?

Z robotyka nic ale z programowaniem owszem.

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 ­čśő [chodzi mi o takie co┼Ť ze jednym przyciskiem wchodz─Ö do podprogramu a drugim wychodz─Ö do g┼é├│wnego programu ­čśő [nie umiem niczego takiego znale┼║─ç ;/]

Dodaj w programie zerowanie wyj┼Ťc(na diody) przy naci┼Ťni─Öciu nast─Öpnego przycisku

czy chodzi a cos takiego

Prog_1: 
Set Portd.0
Reset Portd.1
Reset Portd.2
Set Portd.3 
Return

Komentarz dodany przez: treker:

Z robotyka nic ale z programowaniem owszem.

To co robi┼éo w dziale Robotyka - Programowanie ­čśő

Udost─Öpnij ten post


Link to post
Share on other sites
Zarejestruj si─Ö lub zaloguj, aby ukry─ç t─Ö reklam─Ö.

jlcpcb.jpg

jlcpcb.jpg

Szukasz producenta PCB?
Sprawd┼║ przetestowan─ů firm─Ö JLCPCB. Dlaczego warto?
┬á┬á ÔÇó Prototypy PCB za 2$ (gotowe w 24 godziny)
┬á┬á ÔÇó Kody zni┼╝kowe dla nowych klient├│w (po rejestracji)
┬á┬á ÔÇó Produkcja w profesjonalnej fabryce (zobacz film)
Sprawd┼║ te┼╝ ┬╗ Jak powstaje PCB? Wycieczka po fabryce

nie do ka┼╝dego dodaj

Portd.0 = 0
portd.1 = 0
portd.2 = 0
portd.3 = 0

Wtedy b─Ödzie dobrze dzia┼éac ­čśë

Udost─Öpnij ten post


Link to post
Share on other sites

Je┼Ťli chodzi o to wychodzenie to chodzi o co┼Ť takiego:

podprogram: 

Do

If pin0.b=0 Then Return
End If

Loop

Udost─Öpnij ten post


Link to post
Share on other sites

pawel wprowadzasz w b┼é─ůd. Taki podprogram b─Ödzie w rzeczywisto┼Ťci p─Ötl─ů niesko┼äczon─ů.

Cyna dobrze napisał podprogramy.

Udost─Öpnij ten post


Link to post
Share on other sites

W┼éa┼Ťnie tez tak my┼Ťla┼éem ;/

Ale nie wiem jak zrobi─ç aby wychodzi─ç z podprogramu gdy zastanie nacisniety przycisk ;/

Portd.0 = 0
portd.1 = 0
portd.2 = 0
portd.3 = 0

gdzie ?? bo nie rozumiem ­čśő przekopiuj wi─Ökszy kawa┼éem programu ­čśő

Udost─Öpnij ten post


Link to post
Share on other sites

Pisze teraz tak prowizorycznie bo niemam czasu musze zakonczyc do jutra sw├│j projekt z kt├│rym mam troszke pracy.

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

Udost─Öpnij ten post


Link to post
Share on other sites

Wydaje mi si─Ö ┼╝e teki m├│j kod jest dobry ale jeszcze dodam tam kilka ┼╝eczy.

podprogram: 

'instrukcje zawarte w podprogramie

Do

If pin0.b=0 Then Return
End If

Loop

Return

Udost─Öpnij ten post


Link to post
Share on other sites

Oki ju┼╝ zrozumia┼éem b┼é─ůd .

Ale jeszcze co do tych podprogram├│w :

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 ­čÖé)

Udost─Öpnij ten post


Link to post
Share on other sites

Nie nie mo┼╝e by─ç dw├│ch p─Ötli : D

Niedokońca rozumiem jaki jest problem ale napisze cos : P

Jesli zrobisz tak:

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:

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!

Udost─Öpnij ten post


Link to post
Share on other sites
Zarejestruj si─Ö lub zaloguj, aby ukry─ç t─Ö reklam─Ö.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i monta┼╝ PCB - wybierz sprawdzone PCBWay!
┬á┬á ÔÇó Darmowe p┼éytki dla studentów i projektów non-profit
┬á┬á ÔÇó Tylko 5$ za 10 prototypów PCB w 24 godziny
┬á┬á ÔÇó Us┼éuga projektowania PCB na zlecenie
┬á┬á ÔÇó Monta┼╝ PCB od 30$ + bezp┼éatna dostawa i szablony
┬á┬á ÔÇó Darmowe narz─Ödzie do podgl─ůdu plików Gerber
Zobacz r├│wnie┼╝ ┬╗ Film z fabryki PCBWay

Do┼é─ůcz do dyskusji, napisz odpowied┼║!

Je┼Ťli masz ju┼╝ konto to zaloguj si─Ö teraz, aby opublikowa─ç wiadomo┼Ť─ç jako Ty. Mo┼╝esz te┼╝ napisa─ç teraz i zarejestrowa─ç si─Ö p├│┼║niej.
Uwaga: wgrywanie zdj─Ö─ç i za┼é─ůcznik├│w dost─Öpne jest po zalogowaniu!

Go┼Ť─ç
Do┼é─ůcz do dyskusji! Kliknij i zacznij pisa─ç...

×   Wklejony jako tekst z formatowaniem.   Przywr├│─ç formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Tw├│j link b─Ödzie automatycznie osadzony.   Wy┼Ťwietla─ç jako link

×   Twoja poprzednia zawarto┼Ť─ç zosta┼éa przywr├│cona.   Wyczy┼Ť─ç edytor

×   Nie mo┼╝esz wklei─ç zdj─Ö─ç bezpo┼Ťrednio. Prze┼Ťlij lub wstaw obrazy z adresu URL.


×
×
  • Utw├│rz nowe...