Оглавление:
- Шаг 1. Разработайте проект
- Шаг 2: Выберите устройства и компоненты
- Шаг 3: микроконтроллер
- Шаг 4: напишите программу для ПК
- Шаг 5: Создайте тело
- Шаг 6: Постройте беспроводную цепь
- Шаг 7: интеграция
- Шаг 8: Программный код микроконтроллера
Видео: Скала: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:54
Этот робот управляется основной визуальной программой (через последовательный порт) и может двигаться с тремя разными скоростями с помощью сигнала с широтно-импульсной модуляцией (ШИМ), генерируемого микроконтроллером PIC (16F877). Робот может работать в двух режимах: «нормальное управление» и «световой трекер». В обычном режиме управления робот может переносить предметы размером от 3 до 18 см с места на место в пределах 150 м. тогда как в режиме светового трекера он следует за светом в темной комнате. Было использовано множество датчиков, например, датчики света; датчик наклона, определение тока остановки, определение уровня заряда батареи, а также некоторые концевые выключатели и сенсорные датчики, используемые в руке. Он может поддерживать постоянную скорость, когда идет на холм (наклонен), и автоматически включает свет, когда становится темно. Кроме того, чтобы обеспечить безопасность ИС, он отключает ток, когда он застревает, и рука останавливается, когда что-то держит. Использовались 4 двигателя постоянного тока, управляемые микроконтроллером PIC 16F877 и 3 схемами драйвера двигателя. Это заняло около 4 месяцев и стоит около 600 долларов.
Шаг 1. Разработайте проект
на начальном этапе был предоставлен дизайн проекта. в основном, определение блок-схемы; см. рисунок.
На данном этапе требуется более подробная электрическая схема, однако для облегчения этого были определены следующие основные модули: 1. Микроконтроллер 2. Датчики 3. Двигатели 4. Беспроводная схема 5. Программа для ПК. Также был сделан 3D-дизайн, см. Рисунок.
Шаг 2: Выберите устройства и компоненты
На этом этапе проектировщик должен выбрать устройства и компоненты, необходимые для сборки робота.
Сюда входят: беспроводная схема (MAX232, LM331, модули FM-передатчика и приемника), двигатели (4 двигателя постоянного тока), схема драйверов двигателей (H-мост), микроконтроллер PIC (16F877), аккумулятор, регуляторы напряжения (MC7805), микропереключатели., Фоторезисторы, датчик наклона… и т. Д. Важно понимать, насколько эти устройства совместимы и как они работают вместе.
Шаг 3: микроконтроллер
Этот шаг - самый важный. вначале должны быть идентифицированы коды, которые будут получены и переданы от PIC.
Начните подключать компоненты к соответствующим контактам PIC и запрограммируйте микроконтроллер. Для этого может потребоваться построить небольшие схемы с использованием регуляторов, резисторов, датчиков… и т. Д.
Шаг 4: напишите программу для ПК
Программа написана на Visual Basic.
Связь была установлена через RS-232. Использование MSComm для отправки данных в микроконтроллер путем настройки параметров (номер порта, скорость передачи данных, количество битов данных с четностью, стоповые биты). Я использовал 8-битные данные с одним стоповым битом и контролем четности со скоростью 9600 бит / с.
Шаг 5: Создайте тело
Важен хороший дизайн корпуса. Также выбирая колесную формулу, смотрите рисунок.
Робот был построен после того, как убедились, что программы работают нормально. Этот шаг также можно выполнить перед программированием.
Шаг 6: Постройте беспроводную цепь
Построение беспроводной сети может быть независимым. На начальном этапе я использовал провод для соединения ПК с роботом, а после доработки робота была интегрирована беспроводная схема.
Шаг 7: интеграция
Это момент, когда мы интегрировали наши компоненты и протестировали робота.
Шаг 8: Программный код микроконтроллера
; *************** ФИНАЛЬНЫЙ ******************************** список p = 16f877 включает децидлоки системы счисления "V" << 8 | «1»; Номер версии config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC; ********** главная переменная ************************** cblock 0x20; начало банк 0 область оперативной памяти INPUT_VAR L1 L2 X SPEED11 SPEED12 SPEED21 SPEED22 MSTOP LDET LR1 LR2 endc; ********** начало основной программы *************** start BSF СОСТОЯНИЕ, RP0 BCF СОСТОЯНИЕ, RP1 MOVLW 0X40 MOVWF ADCON1 MOVLW 0XFF; ПОРТ A - I MOVWF TRISA MOVLW 0X00; ПОРТ B - O MOVWF TRISB MOVLW 0XF0; ПОРТ C - ВВОД / ВЫВОД MOVWF TRISC I0 MOVL; TRISD MOVLW 0X07; ПОРТ E IS I MOVWF TRISE BANKSEL OPTION_REG BCF OPTION_REG, T0CS BCF STATUS, RP1 BCF STATUS, RP0; ************************* ******************; ******************************* ************ WAIT BCF PORTB, 1 BCF PORTB, 2 BCF PORTB, 6 CALL PWM1OFF CALL 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, 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 PORT WAIT1, RCIF GOTO PORT WAIT1, RCIF GOTO PORT WAIT1 CALL PWM1OFF CALL PWM2OFF CALL DARKLIGHT BTFSC LDET, 0 BSF PORTB, 7RXDATA; BANKSEL RCSTA; BTFSC RCSTA, OERR; GOTO STOPS CALL PWM1OFF CALL PWM2OFF CALL DARKLIGHT BSF BTFAN PORTOVB, RCFAN PORTBEL 0, RCFAN PORTBEL 0, RCFAN PORTBEL 0, RCFAN. 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; LIGHT ON SUBLW 0X4E BTFSC STATUS, Z GOTO LON MOVF INPUT_VAR, 0; Z GOTO LON MOVF INPUT_VAR, 0; GOTO LON MOVF INPUT_VAR, 0; LIGHTFF LOV SUBLSCW 0; MOVE FORWARD SLOW SUBLW 0X66 BTFSC STATUS, Z GOTO FSLOW MOVF INPUT_VAR, 0; MOVE RIGHT SLOW SUBLW 0X72 BTFSC STATUS, Z GOTO RSLOW MOVF INPUT_VAR, 0; MOVE LEFT SLOW SUBLW 0 X6C BTFSC STATUS, Z GOTO LSLOW MOVF INPUT_VAR, 0; MOVE BACKWARD SLOW SUBLW 0X62 BTFSC STATUS, Z GOTO BSLOW MOVF INPUT_VAR, 0; MOVE ВПЕРЕД MEDIUM SUBLW 0x46 BTFSC STATUS, Z GOTO FMED MOVF INPUT_VAR, 0; MOVE RIGHT MEDIUM SUBLW 0x52 BTFSC STATUS, Z GOTO RMED MOVF INPUT_VAR, 0; MOVE LEFT MEDIUM SUBLW 0X4C BTFSC STATUS, Z GOTO LMED MOVF INPUT_VAR, 0; MOVE BACKWARD MEDIUM SUBLW 0X42 BTFSC STATUS, Z GOTOARD MOVED_IM_OV, BTFSC STATUS, Z GOTOED MOVED_OV_BMW_BWF, STATUS BMW, Z GOTOED_OV Z GOTO FFAST MOVF INPUT_VAR, 0; ПЕРЕМЕСТИТЬ ВПРАВО FAST SUBLW 0X57 BTFSC STATUS, Z GOTO RFAST MOVF INPUT_VAR, 0; ПЕРЕМЕСТИТЬ ВЛЕВО БЫСТРЫЙ SUBLW 0X56 BTFSC STATUS, Z GOTO LFAST MOVF INPUT 0 MOVF; 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; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0; GOTO HOPEN MOVF INPUT_VAR, 0;; HAND DOWN SUBLW 0X64 BTFSC STATUS, Z GOTO HDOWN MOVF INPUT_VAR, 0; LIGHT FOLOWE R SUBLW 0X54 BTFSC STATUS, Z GOTO LFOLLOW; ************************************** ***; ***************************************** НАЙТИ КЛРУФСЛОУ; BANKSEL RCSTA; BCF RCSTA, OERR; BCF RCSTA, CREN; NOP; BSF RCSTA, CREN СОСТОЯНИЕ BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP; BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTSCAR LDET, 0; BSF PORTB, 7 NORMALSLOW MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL BSF PWM2AN BCF PORTKS 1, PORT BTSF PORT 1, PORT 1 BCF PORT 1, PORT BSF PWM2ON BCF PORT 1, PORT BT 2, RCIF GOTO RXDATA GOTO REP3 GOTO CLROE; *************************************** ** LSLOW BCF STATUS, RP0 BCF STATUS, RP1; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO ОСТАНАВЛИВАЕТ MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTLOVB, 7 MOVL12FEED SPWE MOVWE 0 0XCF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BSF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BCF POR TB, 2 REP4 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP4 GOTO CLROE; ******************************** ********** RSLOW BCF STATUS, RP0 BCF STATUS, RP1; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTBATA RCF, 1 GSCO REPOT PORTBATA, 1 ОТКРЫТЫЙ ОТПРАВИТЕЛЬНЫЙ ПОРТ GSCO, 1 ОТКЛ. *************************** BSLOW BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XCF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0X99 MOVWALLF PWM2, BCF PWM02, BCF PWM02, BCF PWM02, BCF PWM02 PORTB, 2 REP5 BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP5 GOTO CLROE; ******************************** ********** F MED BCF СОСТОЯНИЕ, RP0 СОСТОЯНИЕ BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 NORMALMED MOVLFFWE 0X MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY REP6 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS 1 BTFSCOT BANKSSCOT PORT BANKSSCOT PORT BANKSSCOT PORT BANKSSCOT 7 GOTO REP6 PLUSEMED MOVLW 0XCF MOVWF SPEED11 MOVLW 0xCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0xCC MOVWF SPEED22 ВЫЗОВ PWM1ON ВЫЗОВ PWM2ON РМДС PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 ВЫЗОВ SDELAY REP7 ВЫЗОВ STALL1 BTFSC MSTOP, 0 GOTO оСТАНАВЛИВАЕТСЯ 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 STOPS 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 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF STOPBORT BORTD, 1 BCF STOP BORT, 1 BCF STOPBORT BORT, 1 BCF STOPBORT BORTD, 1 BCF STOP BORT BTFSC PIR1, RCIF GOTO RXDATA GOTO REP8 GOTO CLROE; ************************************* **** LMED BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTLOV, 7 MOVLW 0XFFE66 MOVWW 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 STALLKS1; BTFSC RCFEL PORTBOT, 0; GOTPS REP9 GOTO CLROE; ****************************************** СТАТУС BMED BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 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 PORTBO, 2 BTF CALL STIRSTO PORTBO, 2 REP10 GSCOT PORTBO BTF, 2 REP10 GSCOT PORT BOUT, 2 REP10 GSCOT STALL GSCOT PORT REP10 GOTO CLROE; ****************************************** СТАТУС FFAST BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0 BSF MSTOP, 4; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW12 0XEFEDX MOVWF SPE. MOVWF SPEED21 MOVLW 0x7F MOVWF SPEED22 ВЫЗОВ PWM1ON ВЫЗОВ PWM2ON РМДС PORTD, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 ВЫЗОВ SDELAY NORMALFAST MOVLW 0XCF MOVWF SPEED11 MOVLW 0xCC MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0xCC MOVWF SPEED22 ВЫЗОВ PWM1ON ВЫЗОВ PWM2ON РМДС PORTD, 0 BCF PORTD, 1 BTFSC LDET, 0 BSF PORTB, 7 BSF PORTB, 1 BSF PORTB, 2 REP11 CALL STALL1 BTFSC MSTOP, 0 GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA NOP BTFSS PORTD PLUS, 7 GEFOTO REPORTD PLUS, 7 GEFOTO AST MOVLW 0XCF MOVWF SPEED11 MOVLW 0XFF MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XFF MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTKS, 0 BCF BSF PORTD, 1 REPF PORTBALL BTC1, 0 BCF BSF PORTD, 1 REPF PORTBALL, 0 BCF, BSF PORTD, 1 REPF PORTBALL, 0, 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 STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTOVWF, 7FF MOVLW 0X SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X66 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BSF PORTD, 2 BTCF STIR STIR, 2 REP13 GSCOT STALL, GSCOT STALL, GSCOT STALL1, GSCOT STALL1, GSCOT STALL1, GSCOT STALL1, GSCOT, GSCOT STALL1, GSCOT, GSCOT STALL1, GSCOT STALL1, GSCOT, GSCOT STALL1, GSCOT STALL1, BT GOTO REP13 GOTO CLROE; ***************************************** LFAST BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XFF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL BCWM2ON BSF PORTD, 0 BCF PORTFFDB, 1 2X MOVCFALL SDWE PORTDB 0 BCF, 1 2XF PORTEDBDB MOVC, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2XF PORTEDBD, 1 2X MOVE PORTEDB 0, 1 2x MOVE MOVE SDWE 0 SPWE 0, 0 BCF PORTEDB, 1 2X MOVLSDWE 0 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 STOPS14 BTFSCOT GIFSCOT CLOPS; ***************************************** СТАТУС BFAST BCF, СТАТУС RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 MOVLW 0XDF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEED11 MOVLW 0X99ED SPALL SPALL SPEED11 MOVLW 0X99 MOVWF MOVLW 0X99 MOVWF MOVLW 0X99 MOVWFSP PWM2ON BSF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 CALL SDELAY MOVLW 0XEF MOVWF SPEED11 MOVLW 0X66 MOVWF SPEED12 MOVLW 0XEF MOVWF SPEED21 MOVLW BSED0X66 MOVWF SPEED21 MOVLW BSEDM222 CALLON PWWF PORTD, 0 BSF PORTD, 1 BCF PORTB, 1 BCF PORTB, 2 REP15 CALL STALL1 BTFSC MSTOP, 0 GOTO ОСТАНОВКИ BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA GOTO REP15 GOTO CLROE; ************* ***************************** HCLOSE BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTD, 5 GOTO STOPS BTFSC PORTD, 6 GOTO STOPS BSF PORTD, 2 BCF PORTD, 3 REP16 BTFSC PORTD, 5 BTFSCO PORTD, 5 GOTSCO PORTD GOTO STOPS CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO ОСТАНОВКА BANKSEL 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 STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTD, 4 GOTO STOPS BCF PORTD, 2 BSF PORTD, 3 REP17 BTFSC PORTD, 4 GOTO STOPS CALL SDELAY CALL STALL2 BTFSC MSTOP, 2 GOTO STOPS BANKSEL PIR1 BTFSCO RX117, RCIF GOT GOT GOTO CLROE; ****************************************** СТАТУС HUP BCF, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOP BCF LDET, 0; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTC, 4 GOTO STOPS BSF REPORTC PORTC, 0 BTFSC PORTC, 4 GOTO STOPS 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 STOPS CALL DARKLIGHT BTFSC LDET, 0; BSF PORTB, 7 BTFSC PORTC, 5 GOTO STOPS BSF PORTC, 0 BCF PORTC, 3 REP19 BTFSC PORTC, 5 GOTO STOPS 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; ***** ************************************ LFOLLOW BCF STATUS, RP0 BCF STATUS, RP1 BCF PORTB, 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; BSF OPTION_REG, 3; BSF OPTION_REG, 3; BSF OPTION_REG, 3; BSF OPTION_REG, 3; BSF OPTION_REG, 3; BSF OPTION_REG, 3;, 3; CLRFWDT BCF STATUS, RP0 BCF STATUS, RP1; BANKSEL INTCON; BCF INTCON, T0IE; BCF INTCON, T0IF; BANKSEL PIE1; BCF PIE1, 6; BCF PIE1, 0; BANKSEL INKSON; BCF INTCON, GANIE BANKSON, 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 BTFSCOT CALL STATUS, Z SDELAY CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 СТАТУС BTFSC, C GOTO LR2G LR1G СОСТОЯНИЕ BCF, СОСТОЯНИЕ RP0 BCF, RP1 MOVLW 0X00 MOVWF MSTOP; CALL BUTTLEVEL 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; BTFSCOTSTO; 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 LRR1, 0 SUBWF LR2, 0 SUBWF LR2, 0 SUBWF L REPLF LR2G СОСТОЯНИЕ BCF, RP0 СОСТОЯНИЕ BCF, RP1 MOVLW 0X00 MOVWF MSTOP; CALL BUTTLEVEL; BTFSC MSTOP, 1; GOTO STOPS MOVLW 0XFF MOVWF SPEED11 MOVLW 0X99 MOVWF SPEEDFF MOVLW2 SPEEDALL MOVLW2 0X99 MOVWF SPEEDFF MOVLW2 C PORTD, 1 BCF PORTB, 1 BSF PORTB, 2 LR2GREP; CALL STALL1; BTFSC MSTOP, 0; GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LSCOT REPLF CALL LFC1 NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 СТАТУС BTFSC, C GOTO LR2GREP GOTO REPLF FRONT BCF STATUS, RP0 BCF STATUS, RP1 MOVLW 0X00 MOVWF MSTOPFFLOP; SPEED11 MOVLW 0X99 MOVWF SPEED12 MOVLW 0XFF MOVWF SPEED21 MOVLW 0X99 MOVWF SPEED22 CALL PWM1ON CALL PWM2ON BCF PORT D, 0 BCF PORTD, 1 BSF PORTB, 1 BSF PORTB, 2 CALL SDELAY FROREP; CALL STALL1; BTFSC MSTOP, 0; GOTO STOPS BANKSEL PIR1 BTFSC PIR1, RCIF GOTO RXDATA; CALL LDIN; BTFSC MSTOP, 3; GOTO STO NOP CALL LFC2 NOP MOVF LR2, 0 SUBWF LR1, 0 BTFSC STATUS, Z GOTO FROREP GOTO REPLF GOTO CLROE; ************************** **************** ОСТАНОВКИ BTFSS MSTOP, 4 GOTO STOPA MOVLW 0XCF MOVWF SPEED11 MOVLW 0XB3 MOVWF SPEED12 MOVLW 0XCF MOVWF SPEED21 MOVLW 0XB3 MOVWF SPEEDDON CALL 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 PWM1OFF CALL PWM2OFF BCF PORTD 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 WAIT1; **************************************** *; ******************************************; **** ************************************** STALL1 BCF STATUS, RP0 BCF STATUS, 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 MSTOPET, 0 BCN STATUS RPF2 СОСТОЯНИЕ, RP0 СОСТОЯНИЕ BCF, 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 BTF STUBLSS 0X СОСТОЯНИЕ, RP0 СОСТОЯНИЕ BCF, RP1 RETURNBUTTLEVEL СОСТОЯНИЕ BCF, RP0 СОСТОЯНИЕ BCF, RP1 MOVLW 0X00 MOVWF MSTOP BANKSEL ADCON0 BCF ADCON0, 3 BCF ADCON0, 4 BSF ADCON0, 5 BCF STATUS, RP0 BCF CALUB 0, RP0 BCF STATUS, RP0 BCF STATUS RP0 MOVL СТАТУС BTFSS, C GOTO BL1 GOTO BL2 BL1 BSF MSTOP, 1 BSF PORTB, 6 BL2 RETURN DARKLIGHT 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 PORTBAN MOVE RETNCW 0 ADFEL MOVE RETNCWADBAN 0 RETNCW ADFLX RETNCWADBAN 0 RETFDON ADVLC RETNCWADBAN 0 RETFDON ADVLC ADVLO RETNCW 0 RETNCWADBANX RETNCWO RETNCW06 ADNCWO RETNCWW 0 RETNCWC ADVLC 0 RETNCW. BCF ADCON0, 7 BSF ADCON0, 6 BSF ADCON0, 0 BSF ADCON0, GO WAITADC BTFSC ADCON0, GO GOTO WAITADC СОСТОЯНИЕ BCF, СОСТОЯНИЕ RP1 BCF, ВОЗВРАТ RP0 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, T2CKPS1 BSF T2KCON, T2CKPS1 BSF T2KCON, T2CKPS1 BSF T2KCON, T2CKPS1 BSF T2KCON, T2CKPS1 BSF T2KCON, T2CKPS1 PR2 MOVLW 0XFF MOVWF PR2 СОСТОЯНИЕ BCF, RP0 СОСТОЯНИЕ BCF, RP1 MOVF SPEED21, 0 MOVWF CCP2CON MOVF SPEED22, 0 MOVWF CCPR2L BSF STATUS, RP0 BCF STATUS, BCF BCF STATUS, RP1 MOVLW 0XF0 BCF RPC TRIS, BCF RPC TRIS T2CON, T2CKPS0 BSF T2CON, TMR2ON BSF CCP2CON, 2 BSF CCP2CON, 3 RETURNPW M1OFF РМДС CCP1CON, 2 РМДС CCP1CON, 3 BSF T2CON, T2CKPS1 BSF T2CON, T2CKPS0 РМДС T2CON, TMR2ON MOVLW 0x00 MOVWF CCP1CON MOVLW 0x00 MOVWF CCPR1L BANKSEL PR2 MOVLW 0x00 MOVWF PR2 BCF STATUS, RP1 КБК СТАТУС, RP0 RETURNPWM2OFF РМДС CCP2CON, 2 РМДС CCP2CON, 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 ADC STATUS, BCF ADC R0, BCF ADC STATUS, BCF ADC STATUS 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 ADCON0, 3 BSF ADCON0, 4 RPF ADC 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, RP0 BCF STATUS, RP0 BCF STATUS 0X4C СТАТУС BTFSC, C GOTO COMP4 BSF MSTOP, 3 COMP4 СОСТОЯНИЕ BCF, RP0 СОСТОЯНИЕ BCF, RP1 ВОЗВРАТ SDELAY 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 L2, BT GOTO XL2 MOVLW L2 XL3 ВОЗВРАТ NOP NOPEND
Второй приз в конкурсе роботов Instructables и RoboGames
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Играйте в Doom на своем IPod за 5 простых шагов !: 5 шагов
Играйте в Doom на своем IPod за 5 простых шагов!: Пошаговое руководство по двойной загрузке Rockbox на iPod, чтобы играть в Doom и десятки других игр. Это действительно легко сделать, но многие люди до сих пор удивляются, когда видят, как я играю дум на своем iPod, и путаются с инструкциями
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)