Trochę mnie nie było, ale tak jak u kolegi.
AndreB1 napisał(a):
Ostatnio brak czasu.
miki53 napisał(a):
Z jednej strony to by było ciekawe doświadczenie takie wspólne pisanie kodu na forum
jak najbardziej, tylko trzeba ustalic jakś porządek, bu iść w jedną stronę, a nie każdy po swojemu. Dlatego proponuje, by zmiany wprowadzać w ostatniej wersji kodu.
miki53 napisał(a):
Z potencjometrami będzie gorzej myślę że trzeba będzie przerobić ten cały kod i wywalić
delay i zamienić je ne przerwania
W brew pozorom nie będzie to aż taki problem.
Złożyłem sobie płytkę testową i odpaliłem kod kolegi miki53. Kod w zasadzie działa, ale mam takie uwagi
*W linii 20 jest załączenie wewnętrznego podciągania wejścia PD0 do Vcc, a na płytce (jeśli dobrze widzę) jest zrobione pociągniecie za pomocą rezystorów. Ja u siebie mam także podciągniecie za pomocą rezystorów, "udające" dzielnik napięcia. I przy załączonym podciągnięciu z Atmegi program mi nie działa. Działa dopiero po usunięciu tej linii.
Należałoby ustalić, czy podciągniecie PD0 ma być wewnętrzne czy zewnętrzne (za pomocą rezystorów).
*Jeżeli dłużej przytrzymamy przycisk, to palą się wszystkie diody, bo są od nowa zapalane, mimo iż już się palą. Można by tak na szybko dodać gaszenie diod na końcu warunku if
*Przycisk nie działa za każdym razem. Jest to spowodowane delayem w części else. Po prostu delay musi odczekać swoje, by znowu było sprawdzanie wejścia. To są uroki delay'ów i ogólnie blokującego charakteru programu.
To co bym proponował teraz, to "opakowanie" w funkcje naszego efektu i umieszczenie deklaracji w pliku nagłówkowym.
I tak, jak na poczatku proponowałem zamiast używać zapisu np.: PORTC &= ~( 1 << PC1 ); użyjmy zapisu LED3_OFF. Do tego celu w pliku nagłówkowym (main.h) umieśćmy deklaracje #define LED3_OFF.... która zamieni nam w programie każde pojawienie się LED3_OFF, odpowiednia komendą PORTC&=.... . I tak dla każdej diody.
U mnie plik main.h wygląda następująco
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W programie trzeba dodać #include "main.h", by korzystac z pliku main.h. Teraz, jak ktoś będzie miał inny układ diod, to zmienia tylko w pliku main.h, a nie musi szukać po całym programie.
Po tej zmianie plik main.c będzie wyglądał następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
U mnie to działa.