Skocz do zawartości

czarny8322

Użytkownicy
  • Zawartość

    38
  • Rejestracja

  • Ostatnio

Wszystko napisane przez czarny8322

  1. MEEEGA!!! a ja tutaj kombinowałem z asystentem google dla języka polskiego itp... a tutaj coś tak fajnego
  2. Cześć W ramach zabicia czasu zbudowałem tracker do gry Fortnite, który chciałbym Wam przedstawić. Urządzenie łączy się z siecią WIFI za pomocą modułu ESP - Wemos D1. Za za wyświetlacz robi - dotykowy LCD TFT 2.4" ze sterownikiem ILI9341. Zasilanie to bateria lipol wraz z modułem ładowania. Podsumowując jest to taki składak z gotowych modułów Obudowa została wydrukowana na drukarce 3D a oprogramowanie napisałem w Arduino. Całość ściąga aktualne dane z sieci za pomocą API i wyświetla je na ekranie. Uprzedzając pytania - nick gracza jest przypadkowy:)
  3. Witam, Może ktoś widział, ktoś wie:) Szukam jakiegoś chatbota, którego mógłbym wykorzystać do "interakcji" z robotem. Nie chodzi mi tutaj o wydawanie poleceń, chociaż to też wchodzi w zakres ale o odpowiedzi na pytania i ewentualne uczenie się na podstawie przebytej rozmowy. Szukam API które ma w ofercie język polski. Czy komuś obiło się coś o uszy? Testowałem CLEVERBOT'a ale to się raczej nie nadaje.
  4. OOO Miło zobaczyć Nixie na forbocie Też bawię się w budowę i już popełniłem parę zegarków... można zobaczyć na https://www.nixietime.pl/ Obecnie jestem na etapie robienia bardziej kompaktowej wersji, oraz uniwersalnego sterownika do różnych lamp. Swoje zegary opierałem o tranzystory MMBTA... Ty użyłeś widzę Transoptor'ow oraz jednego układu 74141.... pytanie... jak Ci to działa?:) czy nie ma problemu duszków? Szukam jakiegoś dobrego sterowania do tych lampek które nie będzie wymagało "miliona" elementów.
  5. Buduję przetwornicę podwyższającą napięcie z 12V do 180V i do generowania przebiegu chcę użyć esp12. Identyczną przetwornicę udało mi się złożyć na arduino nano używając timer'a1 - tam pwm, timery są bardzo dobrze opisane, a na ESP12 szukam i nie wiele znalazłem. Próbowałem oczywiście z funkcją analogWriteFreq() ale bez rezultatów. Nie mam też oscyloskopu aby to dokładnie zbadać. A środowisko to Arduino IDE, ale może być C... bez znaczenia dla mnie.
  6. Witam, Od jakiegoś czasu szukam informacji na temat zmiany częstotliwości PWM w ESP12. Posiadam płytkę Wemos D1 mini i chciałbym uzyskać 30 - 60 kHz na wyjściu. Czy ktoś z Was próbował może?
  7. Cześć, Dziękuje za przydatne linki z pierwszej odpowiedzi:) Bardzo pomocne. Ostatecznie zrobiłem to samemu, już nie na ekspanderach tylko dodałem drugie arduino, z którego wykorzystałem zwykłe piny do obsługi "klawiatury", dodatkowym atutem jak się okazało później...była obsługa modułu mp3... który w tym przypadku komunikował się z arduino za pomocą TX/RX i nie dało się tego obsłużyć na Arduino który odpowiedzialny był za lampy, ponieważ kiedy wysyłana była komenda do modułu mp3, loop blokował się na ułamek sekundy, co skutkowało gaszeniem lamp. Odpowiadając na Twoje pytania: Dlaczego tak zmieniłeś projekt, że musisz zaprzęgać ekspandery? -- ponieważ obsługa 4lamp zabiera mi 15pinów z arduino. Co do płytki... rozmiary pomiędzy cyframi są takie ponieważ takie miały być:) to jest zamierzone działanie. Temat jest do zamknięcia:) jeszcze raz dzięki:)
  8. Co do wyświetlacza, będą to lampy NIXIE. Po podłączeniu odpowiednich kabli i wyświetleniu numeru na wyświetlaczu zagra jakieś mp3. Niestety nadal mam problem z obsługą klawiatury ponieważ troszkę skomplikowałem sobie projekt. Do obsługi klawiatury mam do dyspozycji dwa expandery pcf8574. pierwszy - 0x20 - mam 4ry wolne piny drugi 0x21 - mam 8 wolnych pinów łącznie mam 12 wolnych pinów za pomocą których potrzebuje zbudować klawiaturę, która da mi 27 kombinacji podłączeń kabli, czyli 3mnożniki razy 9 cyfr. Zamysł był taki aby wykorzystać fajną bibliotekę do obsługi klawiatury i pcf8574: https://github.com/joeyoung/arduino_keypads/tree/master/Keypad_I2C tutaj przykład użycia dwóch pcf8574: https://github.com/joeyoung/arduino_keypads/tree/master/Keypad_I2C/examples/HelloKeypadTwo_I2C Chciałem stworzyć 3 klawiatury 1x9 używając 3pinów z pierwszego expandera(jako mnożniki) i reszty pinów jako "cyfry". Problem w tym że nie mogę zdefiniować pinu 1 z pierwszego expandera jako "row/mnożnik" i reszty 9ciu pinów z obu expanderów jako "col/cyfry". Powyższa biblioteka nie daje mi możliwości "współpracy" dwóch expanderów do stworzenia jednego matrixu. Problem rozwiązałby się gdybym mógł zdefiniować piny expandera, czyli np pokazując na poniższym przykładzie zamiast pinu 11, użyłbym czegoś takiego jak: expander.digitalRead(4): zamiast pinu 11: byte rowPins[ROWS] = { 11} , chciałbym wskazać np pin 4 na expanderze: byte rowPins[ROWS] = expander.digitalRead(4) Tutaj wklejam przykład na pinach arduino. Chciałbym zrobić identyczne 3klawiatury używając wolnych pinów z expandera. const byte ROWS = 1; const byte COLS = 9; char keys[ROWS][COLS] = { {'1','2','3','4','5','6','7','8','9'}, }; byte rowPins[ROWS] = { 11}; byte colPins[COLS] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); const byte ROWS1 = 1; const byte COLS1 = 9; char keys1[ROWS1][COLS1] = { {'a','b','c','d','e','f','g','h','i'}, }; byte rowPins1[ROWS1] = { 12}; byte colPins1[COLS1] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Keypad kpd1 = Keypad( makeKeymap(keys1), rowPins1, colPins1, ROWS1, COLS1 ); const byte ROWS2 = 1; const byte COLS2 = 9; char keys2[ROWS2][COLS2] = { {'j','k','l','m','n','o','u','p','r'}, }; byte rowPins2[ROWS2] = { 13}; byte colPins2[COLS2] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Keypad kpd2 = Keypad( makeKeymap(keys2), rowPins2, colPins2, ROWS2, COLS2 ); Jak ktoś ma jakiś pomysł albo rozwiązanie, będe całował po stopach:D
  9. Dzięki:) załapałem. Materiały przeczytałem, dzięki za to. Co do pytania o zasadność, ma być to prosta zagadka logiczna dla kogoś... typu mam podaną liczbe 8019 i za pomocą odpowiedniego połączenia przewodów z otworami, muszę uzyskać tą liczbe na ekranie...czyli: wkładam kabel(mnożnik): x100 do 76 x10 do 32 x1 do 99 w wyniku sumy mam 8019. A więc, zbuduję schemat jak poniżej i pobawie się softem. Dzięki jeszcze raz. Wiec schemat będzie wyglądał mniej więcej tak jak ponizej:
  10. Cześć, Wydaje mi się że problem jest bardziej złożony niż zwykły matrix, ponieważ muszę rozrużnić, do której masy(mnożnika) dany przycisk został zwarty. Jeśli się mylę, to proszę mnie naprostować Ogólnie chciałbym zrobić coś na wzór kalkulatora, jak na poniższym obrazku. Będą tam otwory z przypisanymi numerami i mnożniki na kablach. Po włożeniu kabli w otwory ma się wyświetlić wynik działania.
  11. Witam, Czy ktoś z Was wie jak w Arduino mogę jednoznacznie stwierdzić czy dany pin A połączył się z pinem B? Problem polega na tym, że przykładowo: - mam 3(lub więcej) cyfry: 12, 15, 17 - dwa mnożniki: x1, x10, x100 - jest wyświetlacz który pokazuje wynik działania, - są kable za pomocą których mogę połączyć dany mnożnik z daną liczbą (czyli pin z pinem) załóżmy że dany pin Arduino jest reprezentowany przez daną cyfrę lub mnożnik. Pytanie jak mogę sprawdzić czy dany pin reprezentowany np przez mnożnik x10 został połączony z pinem reprezentującym cyfrę 12, w wyniku czego będę mógł wyświetlić wynik 120 na wyświetlaczu? dodam tylko, że chce żeby można było jednocześnie połączyć kilka mnożników z cyframi... np. x1 i cyfrę 12 oraz x10 i cyfrę 15 Jak wyglądałby przykładowy kod.
  12. Ledy obsługuje max7219, komunikuje się po SPI z arduino.
  13. Cześć. Chciałem się podzielić Wami tym co ostatnio "spłodziłem" w wolnym czasie. Jest to platforma do zdobywania doświadczenia w robotyce amatorskiej;) Szkielet - materiał to spienione PCV - tanie i łatwo dostępne. Bardzo łatwo się obrabia. Napęd - gąsienice od czołgu zabawki oraz silniczki DC podłączone do gotowego modułu z mostkiem H. Głowa - dwa mini serwa, za oczy robią matrixy LED. Całość obsługiwana jest poprzez Arduino nano. Na głowie jest kamerka podłączona do Raspberry pi. Całość jest sterowana zdalnie przez sieć. Obraz z kamerki jest stremowany. Wszystko jest zasilane dwoma li-polami 800mAh. Docelowo chciałem zaimplementować rozpoznawanie twarzy oraz podążanie za wykrytą twarzą oraz proste komendy głosowe. Niestety obecna wersja Raspberry mi na to nie pozwala... potrzebna jest większa moc obliczeniowa(nie chce robić tego przez API).
  14. Cześć Czy ktoś z Was próbował odpalić OpenVC na RaspberryPi B+ ? Wiem, że się da ale pytam bardziej o płynność działania.
  15. Witam, Zlece zaprojektowanie układu (płytki pcb) z gotowego schematu. Raczej dla doświadczonych elektroników bo trzeba dobrać i przetestować podzespoły o takich samych parametrach tyle zeby były dostępne w Polsce. proszę o kontakt na PW
  16. Witam:) Dzisiaj wystawiłem troche juz nie uzywanego sprzętu/części. Może komuś z Was się przyda. Wszystko było kupowane z myślą budowy robota wiec mysle że ktos moze byc zainteresowany. Posiadam na sprzedaż koła, ośki, silniki HL149, części z helikoptera lama V4(serwa,silniki,odbiornik), niedokonczony zasilacz 0-30v, 8A 1. Zasilacz 1. Silniki HL149 3. Koła 4. Części helikoptera Pozdrawiam
  17. w sumie dystanse gdzieś jakies mam, wiertło sie znajdzie, ale nie mam czym tego nagwintowac, poza tym... aby wywiercic dziurę w takim małm dystansie potrzebne mi małe imadło którego nie mam... w sumie jest to rozwiązanie ale kupienie części/narzędzi do jego wykonania przerosnie kwore gotowych sprzęgieł wiadomo... narzędzi nigdy za wiele ale chciałem do wykonac małym kosztem:) Sprawa wygląda tak ze mam silniki, mam koła a nie jestem w stanie tego połączyc:) Kolego KD93... 10zł to nie wiele... ale potrzebuje takie 4 na 4 koła, poza tym nie widze nic takiego w cenie 10zł... mogłbys dac mi konkretnego linka? Jezeli nic innego nie wykąbinuje to spróbuje sposobu z dystansem.
  18. Witam, Problem moze banalny a jednak uciązliwy. Posiadam silniki HL149, mają one oske o grubości ok 4mm którą chciałbym połączyc na stałe z wałem 4-5mm(na ktory przychodzą koła). Próbowałem na rurki termokurczkiwe, szukałem w necie łaczników wału, nawierconych tulejek i nic konkretnego nie znalazłem. Są przeguby modelarskie, kardany ale to droga sprawa. Mam koła które muszę przymocowac do tych silników. średnica otworu w tych kołach jest o 0.5mm wieksza od srednicy wału silnika, ponadto wał silnika jest za krótki, stąd własnie potrzeba przedłuzenia go. Macie jakis pomysł jak moge połączyc wał tego silnika z pretem/wałem o grubosci 4mm?
  19. Poprawiłem zmienne, program się skompilował jednak w terminalu zamiast odległości atmega wysyła mi jedynie liczby 128 a to kod: #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define F_CPU 8000000UL #define SetBit(reg, bit) ((reg) |= (0x01 << (bit))) // Ustawienie danego bitu w rejestrze #define ClrBit(reg, bit) ((reg) &= ~(0x01 << (bit))) // Wyzerowanie danego bitu w rejestrze int licznik, odl0, flaga; #define RS_BAUD 9600 #define RS_UBRR F_CPU / 16 / RS_BAUD - 1 void start(uint16_t ubrr) { // Ustawienie prędkości transmisji UBRRH = (uint8_t)(ubrr >> 8); UBRRL = (uint8_t)ubrr; // Włączenie nadajnika i odbiornika UCSRB = (1 << RXEN) | (1 << TXEN); // Ustawienie formatu ramki: // 8 bitów danych, 1 bit stopu, brak parzystości UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); } void nadaj(uint8_t data) { // Oczekiwanie na zakończenie nadawania while (!(UCSRA & (1 << UDRE))); // Wysłanie danych UDR = data; } uint8_t uart_ischar() { // Czy w buforze są dane? return (UCSRA & (1 << RXC)); } uint8_t uart_getc() { // Czy w buforze są dane? while(!uart_ischar()); // Dane z bufora return UDR; } //F-cja inicjująca przerwania zawnętrzne i timer2 void InitInterrupt(void) { //PRZERWANIA ZEWNĘTRZNE DDRD = 0xFF; //PD2 - wejscie (Echo) MCUCR = (1<<ISC01) | (1<<ISC00); //Przerwanie zostanie wywołane zboczem narastająym //na wejściach INT0, INT1, INT2 //TIMER2 TCNT2 = 0x00; //Zerowanie rejestru TCNT2 (Rejestr jednostki zegara) TCCR2 = (1<<WGM21)|(1<<CS20); //Ustawia timer2 w tryb CTC bez preskalera //Czestotliwość 16Mhz/1=16MHz OCR2 = 0x01; //Górna wartość licznika wynosi 16 //Przerwania będą następować co 1us // //sei(); SREG = 0x80; } double l_pomiar(void) { SetBit(MCUCR, INT0); SetBit(PORTD, 3); _delay_us(20); ClrBit(PORTD, 3); _delay_ms(8); ClrBit(MCUCR, INT0); return odl0; } int main(void) { DDRD=0xFF; while(1) { start(RS_UBRR); InitInterrupt(); l_pomiar(); nadaj(odl0); } } SIGNAL(TIMER2_COMP_vect) { licznik++; } //F-cja przerwania zewnętrznego INT0 SIGNAL(INT0_vect) { if(flaga==0) { TIMSK = (1<<OCIE2); //włącza Timer2 w trybie dopasowania (START) ClrBit(MCUCR, INT0); MCUCR = 0x00; //Przerwanie zostanie wywołane zboczem opadającym MCUCR = (1<<ISC01); //na wejściu INT0 SetBit(MCUCR, INT0); flaga=1; } else if(flaga==1) { TIMSK &=~(1<<OCIE2); //zatrzymuje Timer2 (STOP) ClrBit(MCUCR, INT0); MCUCR = 0x00; //Przerwanie zostanie wywołane zboczem rosnącym MCUCR = (1<<ISC01)|(1<<ISC00); //na wejściu INT0 SetBit(MCUCR, INT0); odl0=licznik; //Zapisuje wartość licznika do zmiennej "odl" odl0/=20; //oraz skaluje go licznik=0; //Zerowanie licznika flaga=0; } }
  20. Podpowie mi ktoś co takiego robie żle? #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define F_CPU 8000000UL #define SetBit(reg, bit) ((reg) |= (0x01 << (bit))) // Ustawienie danego bitu w rejestrze #define ClrBit(reg, bit) ((reg) &= ~(0x01 << (bit))) // Wyzerowanie danego bitu w rejestrze //F-cja inicjująca przerwania zawnętrzne i timer2 void InitInterrupt(void) { //PRZERWANIA ZEWNĘTRZNE DDRD = 0x04; //PD2 - wejscie (Echo) MCUCR = (1<<ISC01) | (1<<ISC00); //Przerwanie zostanie wywołane zboczem narastająym //na wejściach INT0, INT1, INT2 //TIMER2 TCNT2 = 0x00; //Zerowanie rejestru TCNT2 (Rejestr jednostki zegara) TCCR2 = (1<<WGM21)|(1<<CS20); //Ustawia timer2 w tryb CTC bez preskalera //Czestotliwość 16Mhz/1=16MHz OCR2 = 0x08; //Górna wartość licznika wynosi 16 //Przerwania będą następować co 1us // sei(); //SREG = 0x80; } double l_pomiar(void) { SetBit(MCUCR, INT0); SetBit(PORTD, 3); _delay_us(15); ClrBit(PORTD, 3); _delay_ms(8); ClrBit(MCUCR, INT0); return odl0; } int main(void) { int licznik, odl0, flaga; while(1) { InitInterrupt(); l_pomiar(); } } SIGNAL(TIMER2_COMP_vect) { licznik++; } //F-cja przerwania zewnętrznego INT0 SIGNAL(INT0_vect) { if(flaga==0) { TIMSK = (1<<OCIE2); //włącza Timer2 w trybie dopasowania (START) ClrBit(MCUCR, INT0); MCUCR = 0x00; //Przerwanie zostanie wywołane zboczem opadającym MCUCR = (1<<ISC01); //na wejściu INT0 SetBit(MCUCR, INT0); flaga=1; } else if(flaga==1) { TIMSK &=~(1<<OCIE2); //zatrzymuje Timer2 (STOP) ClrBit(MCUCR, INT0); MCUCR = 0x00; //Przerwanie zostanie wywołane zboczem rosnącym MCUCR = (1<<ISC01)|(1<<ISC00); //na wejściu INT0 SetBit(MCUCR, INT0); odl0=licznik; //Zapisuje wartość licznika do zmiennej "odl" odl0/=20; //oraz skaluje go licznik=0; //Zerowanie licznika flaga=0; } nie mogę tego skompilować
  21. Dziękuje Ci dobry człowieku, jak tylko wrócę z pracy, zajmę się tym:)
  22. Używam atmega16 i chciałbym obsłużyć jeden czujnik podpięty do int0 i niestety jako "świerzak" nie mogę sobie jeszcze poradzić W kodzie od kolegi wyżej zamieściłem komentarze odnośnie których proszę o jakieś sugestie: //F-cja inicjująca przerwania zawnętrzne i timer2 void InitInterrupt(void) { //PRZERWANIA ZEWNĘTRZNE DDRD = 0x04; //PD2 - wejscie (Echo) MCUCR = (1<<ISC01) | (1<<ISC00); //Przerwanie zostanie wywołane zboczem narastająym //na wejściach INT0, INT1, INT2 //TIMER2 TCNT2 = 0x00; //Zerowanie rejestru TCNT2 (Rejestr jednostki zegara) TCCR2 = (1<<WGM01)|(1<<CS21); //Ustawia timer2 w tryb CTC bez preskalera //Czestotliwość 16Mhz/1=16MHz //////Tu mam pierwszy problem, ponieważ program będzie chodził z wewnętrznym oscylatorem 8Mhz wiec ustawiłem bit w rejestrze TCCR2 na (1<<CS21) wg noty"clkT2S / 8 (preskaler)" --czy zrobiłem prawidłowo?////// OCR2 = 0x10; //Górna wartość licznika wynosi 16 //Przerwania będą następować co 1us // /////Tutaj w OCR2 też chyba powinienem zmienić wartość skoro wprowadziłem zmiany w rejestrze TCCR2 z którym to jak się domyślam OCR2 ma być porównywany, jednak nie wiem jak to wyliczyć, czy powinienem zmienić wartość "0x10"??///// SREG = 0x80; ////po chłopsku jednym zdaniem proszę o wytłumaczenie mi do czego służy SREG i dlaczego przypisana jest mu akurat taka wartość 0x80? w nocie nie mogę się połapać//// } //F-cja przerwania od Timera2 ISR(TIMER2_COMP_vect) { licznik++; ////domyślam się że muszę na początku zadeklarować zmienna licznik? /// } //F-cja przerwania zewnętrznego INT0 ISR(INT0_vect) { if(flaga==0) ////flaga -- także muszę zadeklarować tą zmienna?/// { TIMSK = (1<<OCIE2); //włącza Timer2 w trybie dopasowania (START) ClrBit(MCUCR, INT0); ////jeśli możesz to napisz mi kolego sokolsok, skąd wziąłes te funkcje: ClrBit i SetBit --- stworzyłęś je sam czy są dostępne w jakiejś bibliotece? //// EICRA = 0x00; //Przerwanie zostanie wywołane zboczem opadającym //////EICRA ---- korzystam z atmegi 16 i tutaj też wyskakuje mi błąd ale domyślam się że poprostu u mnie ten rejestr się jakoś inaczej nazywa, czy wiecie jak?//// EICRA = (1<<ISC01); //na wejściu INT0 SetBit(MCUCR, INT0); flaga=1; } else if(flaga==1) { TIMSK &=~(1<<OCIE2); //zatrzymuje Timer2 (STOP) ClrBit(MCUCR, INT0); EICRA = 0x00; //Przerwanie zostanie wywołane zboczem rosnącym EICRA = (1<<ISC01)|(1<<ISC00); //na wejściu INT0 SetBit(MCUCR, INT0); odl0=licznik; //Zapisuje wartość licznika do zmiennej "odl" odl0/=20; //oraz skaluje go licznik=0; //Zerowanie licznika flaga=0; } } double l_pomiar(void) { SetBit(MCUCR, INT0); SetBit(PORTD, 3); _delay_us(15); ClrBit(PORTD, 3); _delay_ms(8); ClrBit(MCUCR, INT0); return odl0; } int main(void) { while(1) { //TODO:: Please write your application code } } Proszę o ogólne wytłumaczenie działania czujnika? Czy dobrze myślę że atmega liczy czas w jakim fala została wysłana przez czujnik, odbita od przeszkody a następnie powróciła?
  23. Witam, Potrzebuję pomocy w obsłudze czujnika ultradźwiękowego HC-SR04. Potrzebuję programu w języku C, przykładu lub cokolwiek, abym mógł dalej z tym wystartować. Bede wdzięczny za jakąkolwiek pomoc. Szukałem na necie ale znalazłem przykłady jedynie dla arduino. __________ Komentarz dodany przez: Treker _allegro
  24. Fajnie to wygląda ale czy zdałoby to egzamin? Chodzi mi o to, czy wychylone wahadło powodowałoby poruszanie kuli czy zmieniłoby na chwile środek ciężkości, kula przesunełaby się kawałek i staneła w miejscu? Chodzi mi oto, żeby zmienić środek ciężkości poprzez owe wahadło, musi ono mieć jakis punkt zaczepienia którego wewnątrz kuli brakuje(tak mi się bynajmniej wydaje)
  25. Wydaje mi się poprostu że kółka omniwheels będą się slizgać wewnątrz kuli
×
×
  • Utwórz nowe...