Spisu treści:
- Krok 1: Zaprojektuj projekt
- Krok 2: Wybierz urządzenia i komponenty
- Krok 3: Mikrokontroler
- Krok 4: Napisz program na PC
- Krok 5: Zbuduj ciało
- Krok 6: Zbuduj obwód bezprzewodowy
- Krok 7: Integracja
- Krok 8: Kod programu mikrokontrolera
Wideo: Skała: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:33
Ten robot jest sterowany przez program Visual Basic (przez port szeregowy) i może poruszać się z trzema różnymi prędkościami za pomocą sygnału modulowanego szerokością impulsu (PWM) generowanego przez mikrokontroler PIC (16F877). Robot może pracować w dwóch trybach: „normalne sterowanie” i „śledzenie światła”. W normalnym trybie sterowania robot może przenosić przedmioty o wielkości od 3 do 18 cm z miejsca na miejsce w promieniu 150 m. mając na uwadze, że w trybie śledzenia światła podąża za światłem w ciemnym pomieszczeniu. Zastosowano wiele czujników, takich jak czujniki światła; czujnik pochylenia, wykrywanie prądu przeciągnięcia, wykrywanie poziomu baterii oraz niektóre wyłączniki krańcowe i czujniki dotykowe używane w dłoni. Może utrzymywać stałą prędkość, gdy wjeżdża na wzniesienie (pochylony) i automatycznie włącza światło, gdy robi się ciemno. Ponadto, aby zachować bezpieczeństwo układu scalonego, odłącza prąd, gdy się utknął, a dłoń zatrzymuje się, gdy coś trzyma. 4 silniki prądu stałego były sterowane przez mikrokontroler PIC 16F877 i 3 obwody sterownika silnika. Zajęło to około 4 miesięcy i kosztuje około 600 $
Krok 1: Zaprojektuj projekt
na wstępnym etapie został dostarczony projekt projektu. głównie definiowanie schematu blokowego; patrz rysunek.
Na tym etapie wymagany jest bardziej szczegółowy schemat obwodu, jednak aby to ułatwić, zidentyfikowano główne moduły: 1. Mikrokontroler 2. Czujniki 3. Silniki 4. Obwód bezprzewodowy 5. Program PC. Wykonano również projekt 3d, patrz rysunek.
Krok 2: Wybierz urządzenia i komponenty
Na tym etapie projektant powinien wybrać urządzenia i komponenty potrzebne do zbudowania robota.
Obejmuje to: obwód bezprzewodowy (moduły MAX232, LM331, nadajnik i odbiornik FM), silniki (4 silniki DC), obwód sterowników silników (mostek H), mikrokontroler PIC (16F877), akumulator, regulatory napięcia (MC7805), mikroprzełączniki, fotorezystory, czujnik przechyłu… itd. Ważne jest, aby zrozumieć możliwości obliczeniowe tych urządzeń i ich współpracę.
Krok 3: Mikrokontroler
Ten krok jest najważniejszy. na początku należy określić kody, które będą odbierane i przesyłane od PIC.
Rozpocznij podłączanie komponentów do odpowiednich pinów PIC i zaprogramuj mikrokontroler. Może to wymagać zbudowania małych obwodów wykorzystujących regulatory, rezystory, czujniki…itd.
Krok 4: Napisz program na PC
Program został napisany na Visual Basic.
Komunikacja została nawiązana przez RS-232. Wykorzystanie MSComm do wysłania danych do mikrokontrolera poprzez skonfigurowanie ustawień (numer portu, szybkość transmisji, liczba parzystości bitów danych, bity stopu). Użyłem danych 8-bitowych z jednym bitem stopu i parzystością przy szybkości transmisji 9600 bps.
Krok 5: Zbuduj ciało
Ważny jest dobry projekt nadwozia. Również wybór rozmieszczenia kół, patrz rysunek.
Robot został zbudowany po upewnieniu się, że programy działają poprawnie. Ten krok można również wykonać przed programowaniem.
Krok 6: Zbuduj obwód bezprzewodowy
Budowanie obwodu bezprzewodowego może być niezależne. Na początkowym etapie użyłem przewodu do połączenia komputera z robotem, a po sfinalizowaniu robota obwód bezprzewodowy został zintegrowany.
Krok 7: Integracja
To jest moment, w którym zintegrowaliśmy nasze komponenty i przetestowaliśmy robota.
Krok 8: Kod programu mikrokontrolera
;***************Ostateczna lista p=16f877 zawiera radix decydlocs "V"<<8 | "1"; Wersja No.config _CP_OFF&_PWRTE_OFF&_WDT_OFF&_XT_OSC;********** zmienna główna *************************** cblock 0x20;początek bank 0 obszar suwaka INPUT_VAR L1 L2 X PRĘDKOŚĆ11 PRĘDKOŚĆ12 PRĘDKOŚĆ21 PRĘDKOŚĆ22 MSTOP LDET LR1 LR2 endc;********** start programu głównego *************** start BSF STATUS, RP0 STATUS BCF, RP1 MOVLW 0X40 MOVWF ADCON1 MOVLW 0XFF;PORT A JEST I MOVWF TRISA MOVLW 0X00;PORT B JEST O MOVWF TRISB MOVLW 0XF0;PORT C JEST WE/WY MOVWF TRISCF ISC0/MOVL; TRISD MOVLW 0X07;PORT E IS I MOVWF TRISE BANKSEl OPTION_REG BCF OPTION_REG, T0CS BCF STATUS, RP1 BCF STATUS, RP0;************************* *****************;*********************************** ************ CZEKAJ BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 POŁĄCZEŃ PWM1OFF POŁĄCZENIE PWM2OFF BCF PORTD, 0 BCF PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 BTFSS LDET, 0 BCF PORTB, 7 MOVLW 0X00 MOVF MSTOP MOVF LDET BANKSEL INTCON BCF INTCON, GIE BANKSEL TXSTA BSF TXSTA, BRGH MOVLW 0X40 MOVWF SPBRG BCF TXSTA, SYNC BANKSEL RCSTA BSF RCSTA, SPEN BTFSC RCSTA, OERR GOTO CLROE BANKSEL PIE1 BSF PIE1, RCIE BANKSEL RCSTA BCF RCSTA, RX9 BSF RCSTA, CRENWAIT1 BANKSEL PORTB BSF PORTB, 3 BSF PORTB, 4 BANKSEL PIR1 BTFSS PIR1, RCIF GOTO WAITB PORT B, 4 BCF PORT, 0 WYWOŁANIE PWM1OFF WYWOŁANIE PWM2OFF WYWOŁANIE DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA;BANKSEL RCSTA;BTFSC RCSTA, OERR;GOTO ZATRZYMUJE WYWOŁANIE PWM1OFF WYWOŁANIE PWM2OFF WYWOŁANIE DARKLIGHT BTFSC LDET, 1 BTFSC BIRKS 0;*********************************************;**** *************************************** MOVWF INPUT_VAR MOVLW 0X00 MOVWF RCREG BCF STATUS, RP0 BCF STATUS, RP1 MOVF INPUT_VAR, 0;STOP SUBLW 0X53 BTFSC STATUS, Z GOTO STOPS MOVF INPUT_VAR, 0;ŚWIATŁO ON SUBLW 0X4E BTFSC STATUS, Z GOTO LON MOVF INPUT_VAR, 0; MOVF INPUT_VAR, BVTF OFF 0;PRZEJDŹ DO PRZODU WOLNO SUBLW 0X66 BTFSC STATUS, Z GOTO FSLOW MOVF INPUT_VAR, 0;PRZESUŃ W PRAWO WOLNO SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0;PRZESUŃ W LEWO WOLNO SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0 X6C BTFSC STATUS, Z GOTO LSLOW MOVF INPUT_VAR, 0;PRZEJDŹ DO TYŁU SLOW SUBLW 0X62 BTFSC STATUS, Z GOTO BSLOW MOVF INPUT_VAR, 0;PRZEJDŹ DO PRZODU ŚREDNIA SUBLW 0X46 BTFSC STATUS, Z GOTO FMED_VM STATUS, Z GOTO RMED MOVF INPUT_VAR, 0;PRZESUŃ W LEWO ŚREDNI SUBLW 0X4C BTFSC STATUS, Z GOTO LMED MOVF INPUT_VAR, 0;PRZEJDŹ DO TYŁU ŚREDNI SUBLW 0X42 BTFSC STATUS, Z GOTO BMEDWF WARD INPUT_VM Z GOTO FFAST MOVF INPUT_VAR, 0;PRZESUŃ W PRAWO SZYBKO SUBLW 0X57 BTFSC STATUS, Z GOTO RFAST MOVF INPUT_VAR, 0;PRZESUŃ W LEWO SZYBKO SUBLW 0X56 BTFSC STATUS, Z GOTO LFAST MOVF INPUT_VAR, 0 WARD G PRZESUŃ, 0 BFAST MOVF INPUT_VAR, 0;HAND CLOSE SUBLW 0X43 BTFSC STATUS, Z GOTO HCLOSE MOVF INPUT_VAR, 0;HAND OPEN SUBLW 0X4F BTFSC STATUS, Z GOTO HOPEN MOVF INPUT_VAR, 0;HAND UP BSC SUBLW_VAR, 0X;HAND DOWN SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0;LIGHT FOLOWE R SUBLW 0X54 STATUS BTFSC, Z PRZEJDŹ DO POSTĘPOWANIA;**************************************** ***;********************************************* PRZEJDŹ DO CLROEFSLOW; BANKSEL RCSTA;BCF RCSTA, OERR;BCF RCSTA, CREN;NOP;BSF RCSTA, CREN BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP;BCF LDET, 0;CALL BUTTLEVELS 1 BTFSC MSTOP, BTFSC MSTOP, LDET, 0;BSF PORTB, 7 NORMALSLOW MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 ZADZWOŃ PWM1ON ZADZWOŃ PWM2ON BCF PORT BKSFIR 1 BSCF, RCIF PRZEJDŹ DO RXDATA PRZEJDŹ DO REP3 PRZEJDŹ DO CLROE;********************************************* **LSLOW BCF STATUS, RP0 BCF STATUS, RP1;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0 0XCF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORT TB, 2 REP4 BANKSEL PIR1 BTFSC PIR1, RCIF PRZEJDŹ DO RXDATA PRZEJDŹ DO REP4 PRZEJDŹ DO CLROE;*********************************** **********RSLOW BCF STATUS, RP0 BCF STATUS, RP1; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO ZATRZYMUJE MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTWB, 7 MOVL 0XCF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 ZADZWOŃ ****************************** BLOKUJ STATUS BCF, RP0 STATUS BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL; BTFSC MSTOP 1 PORTB, 2 BANKSY REP5 PIR1 BTFSC PIR1, RCIF PRZEJDŹ DO RXDATA PRZEJDŹ DO REP5 PRZEJDŹ DO CLROE;*********************************** **********F MED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 NORWLWFX SPEEDXM MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY REP6 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS RC NOSPOTO 7TFIRD BANKSEL PTFIR1 GOTO REP6 PLUSEMED MOVLW 0XCF MOVWF SPEED11 MOVLW 0XCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XCC MOVWF SPEED22 ZADZWOŃ PWM1ON ZADZWOŃ PWM2ON BCF PORTD, 0 BSCF REP. BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALMED GOTO REP7 GOTO CLROE;*********************************** ************ RMED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORT B, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 P BTFSC PIR1, RCIF PRZEJDŹ DO RXDATA PRZEJDŹ DO REP8 PRZEJDŹ DO CLROE;**************************************** ****LMED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSFWWF PORTB, 0X11MOVWF MOVL SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP9;CALL STALL1;BTFSC MOTOPIR STOP, 0 REP9 GOTO CLROE;********************************************* STATUS BMED BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0SPEEDXFF MOVWF; MOVLW 0X7F MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X7F MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP10 KSSC CALL PSTOP1 BTF GROTO BSTIR STOP1 BTF REP10 PRZEJDŹ DO CLROE;********************************************* STATUS FFAST BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF MOVWXSPEED, 7 MOVWLWF 0X MOVWF SPEED21 MOVLW 0x7F MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD 1 BSF PORTB 1 BSF PORTB 2 CALL SDELAY NORMALFAST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XCC MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BTFSC LDET, 0 BSF PORTB, 7 BSF PORTB, 1 BSF PORTB, 2 REP11 CALL STALL1 BTFSC MSTOP, 0 GOTO ZATRZYMUJE BANKEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA NOP BTFSS PORTD, 7 GOTO REP11 AST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XFF MOVWF SPEED22 ZADZWOŃ PWM1ON ZADZWOŃ PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF1 PORTB1 PORTB, 1 ST BSF1 PORTB, RCIF GOTO RXDATA BTFSS PORTD, 7 GOTO NORMALFAST GOTO REP12 GOTO CLROE;*********************************** ********RFAST BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB 0X MOVLFF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 REP13 BKSSCEL STOP1 REP13 GTFIR STOP1 GOTO REP13 GOTO CLROE;********************************************* SZYBKI BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON BSF PORTD, 0 BCF MOVLW 0XFF, 1 BSFWF, MOVLSPEED PORTB, 1 0XEF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 REP14 CALL STALL1 BTFSC MSTOP, 0 GOTO ZATRZYMUJE BANKSEL GRIPOTO GTF PIR1; ****************************************** STATUS BFAST BCF, STATUS RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP,1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET,0;BSF PORTB,7 PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 POŁĄCZENIA SDELAY MOVLW 0XEF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XEF MOVWF SPEED21 MOVLW 0X66 MOVALLPWFMP SPEED122ON C PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP15 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP15 GOTO CLROE;*************** ******************************HZAMKNIJ STATUS BCF, RP0 STATUS BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0 GOTO ZATRZYMUJE POŁĄCZENIE Opóźnienie POŁĄCZENIE ZATRZYMANIE 2 BTFSC MSTOP, 2 GOTO ZATRZYMUJE BANK PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP16 GOTO CLROE;************************* ****************** HOPEN BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO ZATRZYMUJE WYWOŁANIE DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTD, 4 GOTO ZATRZYMUJE BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO ZATRZYMUJE CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO ZATRZYMUJE BANKEL PIR1 BTFSC PIR1, RCIF GOTO REPD PRZEJDŹ DO CLROE;********************************************* STATUS HUP BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTC, 4 BTFSC PORTC, 0BC PORTS, 3 BTFSC PORTC, 4 GOTO PRZYSTANKI BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP18 GOTO CLROE;*********************************** ************HDOWN BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE CALL DARKLIGHT BTFSC LDET, 0;BSF PORTB, 7 BTFSC PORTC, 5 GOTO PRZYSTANKÓW BSF PORTC, 0 BCF PORTC, 3 REP19 BTFSC PORTC, 5 GOTO PRZYSTANKÓW BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP19 GOTO CLROE;*************** ******************************LON BSF PORTB, 7 BSF LDET, 0 GOTO CLROE;********** ***********************************LOFF BCF PORTB, 7 BCF LDET, 0 GOTO CLROE;***** **************************************** OBSERWUJ STATUS BCF, STATUS RP0 BCF, PORTB RP1 BCF, 1 BCF PORTB, 2 BCF PORTB, 6 BCF PORTB, 7 CALL PWM1OFF CALL PWM2OFF BCF PORTD, 0 BCF PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 BSF MSTOP, 6 REPLF;BANKSEL OPTION_REG;BSF OPTION_REG, 3;BSREG OPTION_REG, OPTION_ BSF, 3BSF;, 3;CLRFWDT BCF STATUS, RP0 BCF STATUS, RP1;BANKSEL INTCON;BCF INTCON, T0IE;BCF INTCON, T0IF;BANKSEL PIE1;BCF PIE1, 6;BCF INTCON;BCF INTCON, PCON;, 0 BCF PCON, 1 NOP BSF PCON, 0 BSF PCON, 1 BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP CALL SDELAY CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSCOTO FRONUS SDELAY CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, C GOTO LR2G LR1G BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF PORTB, 2 LR1GREP; BTC STALLGOTO1 ST; OPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSS GOTO REPLF LR2G STATUS BCF, RP0 STATUS BCF, RP1 MOVLW 0X00 MOVWF MSTOP;CALL BUTTLEVEL;BTFSC MSTOP, 1;GOTO ZATRZYMUJE MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEEDXPWL BCPW SPEEDX21 MOVL PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 LR2GREP;CALL STALL1;BTFSC MSTOP, 0;GOTO ZATRZYMUJE BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 BWFTO LR1, 0 SUB ZTFSC LR1, 0 REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, C GOTO LR2GREP GOTO REPLF FRONT BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP;CALL WFWSTOPTO;CALL; SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON PORT BCF D, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY FROREP;CALL STALL1;BTFSC MSTOP, 0;GOTO ZATRZYMUJE BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA;CALL LDIN;BTFSC MFC1S CALL GOTO; NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE;****************************** **************** ZATRZYMUJE BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEED22 WYWOŁANIE PWM1ON WYWOŁANIE PWM2ON PORT 0XCF 1 CALL SDELAY STOPA BCF STATUS, RP0 BCF STATUS, RP1 BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 BTFSS LDET, 0;BCF PORTB, 7 BCF PORTC, 0 BCF PORTC, 3 CALL PWM2OFF BCF PORTB PORTD, 1 BCF PORTD, 2 BCF PORTD, 3 MOVLW 0X00 MOVWF MSTOP;*********************************** *********CLROE BANKSEL RCSTA BCF RCSTA, CREN BCF RCSTA, FERR BCF RCSTA, OERR BSF RCSTA, CREN BSF INTCON,GIE BSF INTCON, PEIE GOTO CZEKAJ1;********************************************* ************************************************;**** *************************************** STALL1 STATUS BCF, RP0 STATUS BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0X70 BTFSS STATUS, C BSF MSTOP, 0 REBCF STATUS, 0 REBCF STATUS, 0 REBCF STATUS2 STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BSF ADCON0, 3 BCF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 BTFSS STOP STATUS, RP0 BCF STATUS, RP1 RETURNBUTTLEVEL BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEl ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 MOBCF STATUS, BCF STATUS, 0 CVF ADBLUS STATUS STATUS BTFSS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 POWRÓT CIEMNY ŚWIATŁO BCF STATUS, RP0 BCF STATUS, RP1 BTFSC LDET, 0 GOTO RETFDL BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, 0 SUBLW 0XEE BTFSS STATUS, C BSF PORTB, 7 RETFVLVKS ADCONVERT BCF ADCON0, 7 BSF ADCON0, 6 BSF ADCON0, 0 BSF ADCON0, GO WAITADC BTFSC ADCON0, GO GOTO WAITADC STATUS BCF, RP1 STATUS BCF, RP0 RETURNPWM1ON BANKSEL PR2 MOVLW 0XFF MOVWF PR1, BCVF STATUS, 0 BCVF STATUS MOVWF CCP1CON MOVF SPEED12, 0 MOVWF CCPR1L BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0XF0 MOVWF TRISC BCF STATUS, RP0 BCF STATUS, RP1 BCF T2CON, B2CKPS1 TURN1 TBCSFEL, TCONSF2 3CONSF PR2 MOVLW 0XFF MOVWF PR2 BCF STATUS, RP0 BCF STATUS, RP1 MOVF SPEED21, 0 MOVWF CCP2CON MOVF SPEED22, 0 MOVWF CCPR2L BSF STATUS, RP0 BCF STATUS, RP1 MOVLW 0FF BCPS STATUS, BCF1 MOV STATUS T2CON, T2CKPS0 BSF T2CON, TMR2ON BSF CCP2CON, 2 BSF CCP2CON, 3 RETURNPW M1OFF BCF CCP1CON, 2 BCF CCP1CON, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 BCF T2CON, TMR2ON MOVLW 0X00 MOVWF CCP1CON MOVLW 0X00 MOVWF CCPR1L BANKSEL PR2 TURNFBCOFF BCCON 2 TURN BCF BCCON, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 BCF T2CON, TMR2ON MOVLW 0X00 MOVWF CCP2CON MOVLW 0X00 MOVWF CCPR2L BANKSEL PR2 MOVLW 0X00 MOVWF PR2 BCF STATUS, BSF KSF BCCON 1 ADLFCON 5 BCF STATUS, RP0 BCF STATUS, RP1 CALL CONVERT MOVF ADRESH, W ANDLW 0XF0 MOVWF LR1 BCF STATUS, RP0 BCF STATUS, RP1 RETURN LFC2 BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, BCF STATUS STATUS, 5 BSF ADCON0, 4 BSF RP1 CALL CONVERT MOVF ADRESH, 0 ANDLW 0XF0 MOVWF LR2 BCF STATUS, RP0 BCF STATUS, RP1 RETURN LDIN BANKSEL ADCON0 BCF ADCON0, 3 BSF ADCON0, 4 BCF ADCON0, 5 BCF STATUS, 0 VALLUS ADBLVER STATUS 0X4C BTFSC STATUS, C GOTO COMP4 BSF MSTOP, 3 COMP4 BCF STATUS, RP0 BCF STATUS, RP1 OPÓŹNIENIE POWROTU CLRF L2 XL3 CLRF L1 XL2 CLRF TMR0 XL1 MOVLW 0XFF SUBWF TMR0, W BTFSS STATUS, C GOTO XL1 MOVLW 0X20 INCF L1 SUBWF L1, W BTFSS STATUS, C GOTO XL2 MOVLW 0X10 BTFSS STATUS GOTO XL1 MOVLW 0X20 INCF L1 SUBWF L1, W BTFSS STATUS, C GOTO XL2 MOVLW 0X10 BWSSF L2, C XL3 POWRÓT NIE KONIEC
Druga nagroda w konkursie robotów Instructables i RoboGames
Zalecana:
Licznik kroków - Micro:Bit: 12 kroków (ze zdjęciami)
Licznik kroków - Micro:Bit: Ten projekt będzie licznikiem kroków. Do pomiaru kroków użyjemy czujnika przyspieszenia wbudowanego w Micro:Bit. Za każdym razem, gdy Micro:Bit się trzęsie, dodamy 2 do licznika i wyświetlimy go na ekranie
Lewitacja akustyczna z Arduino Uno krok po kroku (8 kroków): 8 kroków
Lewitacja akustyczna z Arduino Uno Krok po kroku (8-kroków): ultradźwiękowe przetworniki dźwięku Zasilacz żeński L298N Dc z męskim pinem dc Arduino UNOBreadboardJak to działa: Najpierw wgrywasz kod do Arduino Uno (jest to mikrokontroler wyposażony w cyfrowy oraz porty analogowe do konwersji kodu (C++)
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: 6 kroków
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: W tym samouczku dowiemy się, jak śledzić kroki silnika krokowego na wyświetlaczu OLED. Obejrzyj film demonstracyjny.Kredyt samouczka oryginalnego trafia do użytkownika YouTube „sky4fly”
Bolt - DIY Wireless Charging Night Clock (6 kroków): 6 kroków (ze zdjęciami)
Bolt - DIY Wireless Charging Night Clock (6 kroków): Ładowanie indukcyjne (znane również jako ładowanie bezprzewodowe lub ładowanie bezprzewodowe) to rodzaj bezprzewodowego przesyłania energii. Wykorzystuje indukcję elektromagnetyczną do dostarczania energii elektrycznej do urządzeń przenośnych. Najpopularniejszym zastosowaniem jest stacja ładowania bezprzewodowego Qi
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: 13 kroków (ze zdjęciami)
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: To jest instrukcja demontażu komputera. Większość podstawowych komponentów ma budowę modułową i jest łatwa do usunięcia. Jednak ważne jest, abyś był w tym zorganizowany. Pomoże to uchronić Cię przed utratą części, a także ułatwi ponowny montaż