Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
no jest dość ciekawa zabawka tylko jak czymś takim sterować pod linuxem bawił się ktoś w coś takiego kiedyś
jeśli macie jakieś chcematy do budowy i programy do obsługi to bardzo prosze
ps. szukałem na elektrodzie ale nie znalazłem nic konkretnego
Offline
Tylko zastanawiam sięo jakie urządzenia elektryczne ci chodzi - pralka :)?
Offline
hehe no bez przesady to wystarczy że będzie właczało/wyłaczało te użądzenia i to nie musi być układ wytrzymujący jakieś ogromne obciążenia (najwyżej będe mątował przekaźniki :P)
Offline
Jeżeli są programy do obsługi wyświetlaczy alfanumerycznych lcd, to muszą istnieć też do obsługi prostych urządzeń. Tyle tylko, że ja takich programów nie znam :(
Offline
tutaj masz fajny opis jak zrobić coś o co Ci chodzi
http://sad.selfip.net/index.php?id=5&article=2
ja akurat to rozbudowałem 1 demultiplekserem i 15 przerzutnikami typu D
mam przylepione do monitora i sobie miga na różne zdarzenia w kompia robiąć na 15 LED`ach rózne animacje ;)
"wyjście" na LPT masz na bitach 2-9 wiec masz 8 bitów to pełnej zabawy :)
dokładajac jak ja demultiplekser i takie tam to wiesz to juz możesz to rozbudowywać ze HO HO (tzn. tak całkiem powaznie to na 8 bitach i na takich w miare prosto to na 28 urządzeń się spokojnie zrobi włącz / wyłącz)
miłej zabawy :)
aaa to tylko umie "puścić logiczne 1" na kabelek
obowiazkowo co najwyzej otwieraj bym tarnzystor którym dalej ruszysz przekaźnik - bo jak przehcolujesz to zdjarasz LPTa ;)
Offline
he nie myślałemże to trudnijesze ten program wydaje się tylko zbty prosty podejżewam że to trzeba coś dopisac do niego
ja akurat to rozbudowałem 1 demultiplekserem i 15 przerzutnikami typu D
mam przylepione do monitora i sobie miga na różne zdarzenia w kompia robiąć na 15 LED`ach rózne animacje ;)
"wyjście" na LPT masz na bitach 2-9 wiec masz 8 bitów to pełnej zabawy :)
dokładajac jak ja demultiplekser i takie tam to wiesz to juz możesz to rozbudowywać ze HO HO (tzn. tak całkiem powaznie to na 8 bitach i na takich w miare prosto to na 28 urządzeń się spokojnie zrobi włącz / wyłącz)
to jest dla mnie czarna magia prosze prościej znaczy się do którego pinu lpt co podłączyć
Offline
he nie myślałemże to trudnijesze ten program wydaje się tylko zbty prosty podejżewam że to trzeba coś dopisac do niego
program ten jest bogaty aż natto :]
bo w nim jest też "czytanie" wciskanych przycisków ;)
dobra, to tak...
ja to mam tak u siebie orpogramowane
#include <stdio.h> #include <unistd.h> #include <asm/io.h> #include <string.h> // To jest adres portu równoległego w systemie #define BASEPORT 0x278 // 0x278 // 0x0378 <-- to niby lp1 // 0x03bc <-- to niby lp0 int main(argc, argv) int argc; char **argv; { int i,j,k,l,spanie; float t; // Przejmujemy kontrolę nad portem. Program musi być uruchomiony przez roota. //albo przynajmniej miec SUIDa ustawionego //chmod 4755 plik if (ioperm(BASEPORT, 3, 1)) { perror("ioperm"); exit(1); } if ( strcmp(argv[2], "rozmowa") == 0) { //nowa rozmowa na GG spanie = 32 * atoi(argv[1]); for (i=1; i<16; i++) { outb(16+i, BASEPORT); outb(0, BASEPORT); usleep(spanie); outb(i, BASEPORT); outb(0, BASEPORT); if (i==8) { outb(8, BASEPORT); } } for (i=15; i>0; i--) { outb(16+i, BASEPORT); outb(0, BASEPORT); usleep(spanie); outb(i, BASEPORT); outb(0, BASEPORT); if (i==8) { outb(8, BASEPORT); } } } if ( strcmp(argv[2], "wiadomosc") == 0 ) { //animacja dla nowej wiadomosci na GG //w ramach otwartej rozmowy na GG :] } if ( strcmp(argv[2], "poczta") == 0 ){ // animacja dla nowej poczty } if ( strcmp(argv[2], "zerowanie") == 0 ){ //zerowanie - wygaszenie wsystkich - LED`ow } if ( strcmp(argv[2], "all") == 0 ){ //zapalenie wszystkich LED`ow } usleep(spanie); outb(0, BASEPORT); // Zwolnij kontrolę nad portem. if (ioperm(BASEPORT, 3, 0)) { perror("ioperm"); exit(1); } exit(0); }
uruchamiam to tak
./programik czas akcja
akcje masz tam przez if prawdzane
a czas jest do tego aby programik animacje animowal w ludzkim czasie ;)
dobra, zostawiłem Ci tylko jedną animacje (bo reszta nie ma sensu troche żeby Ci zostawiać)
ale do rzeczy, całość działa na taiej zasadzie, na pinach 2 - 9 (popatrz na cyferki na wtyczce do LPT) masz to co Cię interesuje
pisząc w programiku sterującym
outb(i, BASEPORT);
na BASEPORT drukujesz i, w przypadku liczb jest to proste, drukując przykładowo 0 masz na wsytkich ośmiu bitach ustawiane zero - proste :P
drukując 1 na pinie 2 masz logiczną jedynkę wiec pojawia się napiecie ok. 5V którym możesz coś "pobudzić do działania" - np. tranzystor otworzyć ;)
drukując, dalej, np. 7 jedynki pojawiają sie na pinach 2,3,4 na reszcie (5 - 9) masz zera
wiesz jak sie liczbę na system dwójkowy zamienia??
to własnie tak masz drukowane liczby w ten sposób jak powyzej zacząłem rozpisywać... :)
takie pierdułki jak demultiplekser, przerzutniki, etc.... rozumiesz co jak gdzie po co i takie tego??
jak nie to chociarz może powyższe tłumaczneie załapiesz :)
Offline
Graffi kurczę, z nieba mi normalnie spadłeś!! Powiedz, czy powiadamianie przez lpt o nowej rozmowie na gg działa też, jak się siedzi w konsoli??
Offline
siedząc na konsoli rozumiesz korzystanie z EKG??
jak tak to spokojnie ze jest możłiwośc bo masz zdarzenie on przez które przkładowo na przychodzą wiadomosć mozesz coś wywołać... :)
powiedzmy uruchomic program x z parametrami przykładowo 100 i rozmowa i załatwione :)
aaaa co do Kadu (w którym to mam pokonfigurowane) to napisałem sobie swój moduł który służy tylko do powiadaniamia właśnie LED`ami podlutowanymi na do tego całego ustrojstwa
jak coś chcesz to sie odzywaj dalej
co będe umiał to pomoge :)
Offline
heh udalo sie mam tylko jeden dziwny problem zamiast na 2 pinie mam na 3 a na 2 jest caly czas napiecie
ps jak tym twoim programikiem się posługuje podaj przykład
./programik ten czas w czym sie podaje i tutaj cyfry nazwy ??
Offline
to ze masz na 2pinie cały czas jedynkę (logiczną) a wiec owe 5V to dziwne...
dalej to tak, programik kompilujesz (pewnie sie doczytałeś) tak
gcc -O2 nazwapliku.c
potem jak tu uruchamiasz to masz tak (w przypadku moim jak coś ma się zmeinaić, bo jak chcesz włącz / wyłącz to to moje trzeba odchudzić bo jest za bardzo bogate w pierdułki) że podajesz czas (w milisekundach chyba... chyba w tym procedura usleep usypia program na określony czas) i potem podajesz jedną z "animacji" które zaprogramowałeś, u mnie masz takie miejsca w kodzie programu
if ( strcmp(argv[2], "wiadomosc") == 0 ) { //animacja dla nowej wiadomosci na GG //w ramach otwartej rozmowy na GG :] }
wiec opisane tutaj (niepisane ale opisane u mnie) działanie będzie wykonane przez program gdy napiszę
./a.out 100 wiadomosc
i można tak się bawić prawie w nieskończoność :)
możesz podlutować (najprostrza zabawka) LED`y tak jak masz to opisane u Sed`a na stronce (podałem w mojej pierwszej wypowiedzi w tym wątku) i sobie mini pomigac w odpowiedzni (swój własny) sposób :)
Offline
Grafii. Po kolei.
1. Co muszę mieć wkompilowane w jądro, żeby działało.
2. Chcę używać tego razem z Kadu, bo to jest mój komunikator, a kadu jak wiesz nie murga klawiaturą jak się jest w konsoli.
3. Mógłbyś podesłać ten moduł do kadu (najlepiej ze źródełkami).
Jak będę miał jakieś pytania, to się jeszcze odezwę.
Offline
1. Co muszę mieć wkompilowane w jądro, żeby działało.
nie wiem, możłiwe ze coś od LPT, ale mi to zawse działało, tam podajesz adres urządzeina wiec licze na to że to zawsze działą ;)
2. Chcę używać tego razem z Kadu, bo to jest mój komunikator, a kadu jak wiesz nie murga klawiaturą jak się jest w konsoli.
mój moduł działa gdzie nie jestes ;)
ale on jest przystosowany do wersji SVN (rozwojowej) i jezeli korzystarz z jakiejść paczkowej (np. 0.4.3) to Ci kurde nie pójdzie, trzeba będzie go popoprawiać :|
3. Mógłbyś podesłać ten moduł do kadu (najlepiej ze źródełkami).
mógłbym :)
http://liza.umcs.lublin.pl/~wbronisz/kadu/led_lpt.tar.gz
to jest w źródełkach...
i jak wspomniałem działa obecnie z wersją SVN, od czasów KADU 0.4.3 troche sie pozmieniało bo pamiętam że troche go zmienialem :|
Offline
czy móglbym prosić kogoś o przerobienie tego programu tak żeby po wpisaniu np
./program 2 dawal napiecei na 2 pin a po ponownym wpisaniu tego samego je wyłaczał
dla 3 pinu 3 itd
ja w c jestem slaby i raczej nei dam sobie rady sam
Offline
#include <stdio.h> #include <unistd.h> #include <asm/io.h> #include <string.h> // To jest adres portu równoległego w systemie #define BASEPORT 0x278 // 0x278 // 0x0378 <-- to niby lp1 // 0x03bc <-- to niby lp0 int main(argc, argv) int argc; char **argv; { char *i; // Przejmujemy kontrolę nad portem. Program musi być uruchomiony przez roota. //albo przynajmniej miec SUIDa ustawionego //chmod 4755 plik if (ioperm(BASEPORT, 3, 1)) { perror("ioperm"); exit(1); } i = argv[1]; if ( strcmp(i,"0") == 0 ) { outb(0, BASEPORT); } if ( strcmp(i,"1") == 0 ) { outb(1, BASEPORT); } if ( strcmp(i,"2") == 0 ) { outb(2, BASEPORT); } if ( strcmp(i,"3") == 0 ) { outb(4, BASEPORT); } if ( strcmp(i,"4") == 0 ) { outb(8, BASEPORT); } if ( strcmp(i,"5") == 0 ) { outb(16, BASEPORT); } if ( strcmp(i,"6") == 0 ) { outb(32, BASEPORT); } if ( strcmp(i,"7") == 0 ) { outb(64, BASEPORT); } if ( strcmp(i,"8") == 0 ) { outb(128, BASEPORT); } outb(0, BASEPORT); // Zwolnij kontrolę nad portem. if (ioperm(BASEPORT, 3, 0)) { perror("ioperm"); exit(1); } exit(0); }
kompilujesz
gcc -O2 ster.c
albo jak masz domyślną wersje gcc inną niz 3xx to używasz kompilatora z 3.xx (u mnie gcc 4.zz coś sie burzyło wiec robiłem:)
gcc-3.4 -O2 ster.c
dalej tak, ponumerowaem Ci tak ze jak napisesz
./a.out 2
to na bicie drugim (a wiec na pinie 3 na porcie LPT) pojawi sie logiczne 1 -jak nie odpowiada to se pozmieniaj te cyferki w warunkach i będziesz miał inaczej niz jest to przeze mnie zrobione ;)
EDIT:
gasisz wszystko dając
./a.out 0
po prostu drukujesz na port 0 i masz zero ;)
hmm... należy to lepiej napisac, ale teraz nie mam czasu
nie wiedzialem czy Ci napisać tak jak ja wole czy tak jak Ty chciałeś
ale uznałem ze po mojemu jest lepiej :P
wiec jak sobie podlutujesz 8 kabli do kolejnych pinów (od 2 poczynajac)
to pisząc
./a.out 1
dostaniesz jedynkę ligiiczną na swoim kabelku nr 1 a wiec na pinie 2 (tak napisałem)
jeżeli wolisz po swojemu to przerób jak wspomnialem te warunki co są ;)
Offline
elektronik ze mnei marny powie mi ktoś jak podłaczyć te tranzystory ??
Offline
tak zapalają sie
Offline
wiesz co, sesja wzywa wiec nie wiem czy Ci dzis podrzuce schemat
poszukaj czegoś takiego na necie jak "klucz tranzystorowy"
jak chcesz to sucho poćwiczyć to polecam program "Circut maker" wersja student jest za free i pięknie na wine śmiga - używałem swego czasu do zaprojektowania swojego ukadu z LEDami ;)
jakby co to Ci w wolniejszej chwili poszukam i podrzuce tutaj schemat
ogólnie (jak się nie mylę) na baze trzeba podać maly prąd (pewnie tutaj ową jedynkę logiczna) a wówczas tranzystor sie otworzy i między emiterem a kolektorem popłynie prąd (tzn. zamknie się zbudowany tam obwód) ale to tylko moje głośne myślenie ;)
Offline
ktoś o zlotym serduszku podesłał mi m@ilem wiec korzystaj :)
http://liza.umcs.lublin.pl/~wbronisz/dug/klucz.pdf
Offline
to tak w tym momęcie mam 70 % układów zbudowanych
program nietknięty
ale nie mam zbyt dużo czasu w tym momęcie zdanie do następnej klasy bardziej mnie interesuje ale za jakiś tydzień zajme się tym bardziej
Offline
układ gotowy dobrze sie zpisuje już zadziwiłem kilku kumpli :D:D
Offline
fajnie że działa :)
ale ja poszukuje (tzn. znalazłem nawet troche ale chyba za bardzo sierotka z tego jestem) jak do tego typu sterowania wykorzystać game-port bo LPT mma już zajęty a w sumie podpiąłbym se jeszcze trochę "zabawek" :]
więc jakby ktoś miał taki w miarę opis co i jak z portem gier jeżeli o jakieś wykorzystanie go do sterowania czegoś to byłbym dżwięczny niezmiernie :)
Offline
odgrzebuje wątek bo
potrzeba mi programi który po zwarciu któregoś tam pinu z masą przez oporniczek 2k ohm-y wyda polecenie shutdown -h now :] ew halt jakieś pomysły ??
Offline