Не забываем что в светофоре должно контролироваться сгорание лампочки (нагрузки), а так же одновременное загорание разных цветов, к примеру красный и зелёный, или зелёные с разных направлений. Вот представьте что сгорела лампочка красного цвета, а она должна гореть, так как с другого направления горит зелёный, что будет ?
Там же всё написано, 26 красный пешеходник, 27 зелёный пешеходник. Кнопка на пешеходов для этой прошивки не активна, просто есть прошивка с кнопкой, но я понял, что она вам не нужна, просто запустите в протеусе, и увидете, как она работает, микросхемка ATmega8, если негде прошить, попросите кого нибудь, или соберите простенький программатор.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
За идею спасибо, но буду делать все таки по старинке... Надо искать мне двигатель, делать вал, клеить фольгу на пластину(делал я такое)...щетки из распушеной проволки Будет светофор Кстати подумываю над использованием часов.... Недорого(ок.100р) Четкий оборот Дисковая поверхность - просто к секундной стрелке щетки 3 шт и три полосы фольги, реле для переключения ламп
Хвалу и клевету приемли равнодушно
И не оспаривай глупца
А.С.Пушкин
Зачем так сложно, можно взять киноаппарат от сраренькой стиралки, например ватка автомат, или подобные, там контакты уже есть, останется только подточить колёса по своей программе.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Это простейшие бегущие огни, и к схеме светофора не имеют никакого отношения. Поинтересуйся, для начала, схемами светофоров https://www.google.md/search?q=%D1%81%D ... 52&bih=703 Светофор работает не просто, как бегущие огни.
используется переключатель на три красный ... мигание желтый ...зелёный....мигание итак поторяется . с этой схемой нечто подобное получилось но не так как надо
База VT3 туда ли подключена? Впрочем к делу это не имеет отношения. По вашей схеме светодиоды будут переключаться друг за другом, по очереди, по разу. Для светофора не годится. Если уж всё упирается именно в эту схему, то надо делать так, чтобы сигнал с VT2 активировал еще одну такую схему, которая бы и моргала желтым. Но это такой изврат. Итого: смотрим на цифровые микросхемы, здесь пользуемся поиском. Либо делаем на мк: Спойлер; ;Светофор ; #include <p16f84.inc> ;подключаем файл определений мк
org 0 ;начальный адрес программы clrf INTCON ;запрет всех прерываний goto START ;переход на начало
org 04h ;вектор прерываний goto interrupt ;переход на подпрограмму обработки прерываний ; START bsf STATUS, RP0 ;включаем BANK1 movlw b'11111000' ;RA0,RA1,RA2 - выходы movwf TRISA ;запись в TRISA movlw b'00000011' ;RB7..RB2 - выходы movwf TRISB ;запись в TRISB movlw b'00000100' ;определение прескалера для таймера 1:32 movwf OPTION_REG ;запись в OPTION_REG bcf STATUS,RP0 ;включаем BANK0 clrw ;обнуляем рабочий регистр movwf PORTA ;устанавливаем на выходах порта А нули(гасим лампы) movwf PORTB ;устанавливаем на выходах порта B нули(гасим лампы)
movlw 0x3D ;начальное состояние счетчика movwf counter ;в переменную movlw .31 ;начальное количество тактов movwf takt ;в переменную
movlw b'10100000' ;взводим биты нужных прерываний movwf INTCON ;разрешаем прерывание от таймера и общее разрешение loop goto loop ;зацикливаемся на метке loop ;************************ ; ;************************ interrupt btfss INTCON,T0IF ;проверяем флаг прерывания от таймера retfie ;если не таймер, то выходим из п/п
decfsz counter ;уменьшаем счетчик goto m1 ;если он не "0", то выходим из п/п movlw 0x3D ;начальное состояние счетчика movwf counter ;в переменную ; ; decfsz takt ;уменьшаем номер такта goto m2 ;если не достиг "0", то переходим на m2 movlw .31 ;начальное количество тактов movwf takt ;в переменную takt m2 movf takt,w ;номер такта в регистр W addlw 0xFF ;W= W - 1 call table ;выбираем нужное сочетание светящихся/потушенных ламп ;в W находится D7 D6 D5 D4 D3 D2 D1 D0 ;пересылка в порт А обеспечивает установку цветов светофора_1. ;Биты 7..3 роли не играют movwf temp ;сохраняем во временной переменной movwf PORTA ;выводим на светофор_1
swapf temp ;обмен тетрад. В temp'е D3 D2 D1 D0 D7 D6 D5 D4 rlf temp ;сдвиг влево на один бит. В temp'е D2 D1 D0 D7 D6 D5 D4 Х
movf temp,w ;сохраняем в регистре W rlf temp ;еще раз сдвигаем влево. В temp'е D1 D0 D7 D6 D5 D4 Х Х
andlw 0xE0 ;сбрасываем 4..0 биты. В W D2 D1 D0 0 0 0 0 0 movwf temp1 ;сохраняем W во временной переменной movf temp,w ;пересылаем temp в регистр W andlw 0x1C ;сбрасываем 7..5 и 1..0 биты. В W 0 0 0 D6 D5 D4 0 0 iorwf temp1 ;операция ИЛИ между temp1 и W. В temp1 D2 D1 D0 D6 D5 D4 0 0 movf temp1,w ;пересылаем в W movwf PORTB ;заносим в порт В
m1 bcf INTCON,T0IF ;сбрасываем флаг прерывания от таймера retfie ;выход из п/п обработки прерывания ; ;Подпрограмма возвращает данные для ламп ;Такты перебираются от 31-го до 1-го и далее, по кругу. ; ; b'D7 D6 D5 D4 D3 D2 D1 D0' ; ;D0 - красный светофора_1 и светофора_3 ;D1 - желтый светофора_1 и светофора_3 ;D2 - зеленый светофора_1 и светофора_3 ;D3 - "0" ;D4 - красный светофора_2 ;D5 - желтый светофора_2 ;D6 - зеленый светофора_2 ;D7 - "0" ; table addwf PCL,f ;в зависимости от номера такта делаем переход retlw b'00110010' ;данные для такта 1 retlw b'00110010' ;данные для такта 2 retlw b'00110010' ;данные для такта 3 retlw b'00110010' ;данные для такта 4 retlw b'00110010' ;данные для такта 5 retlw b'00010100' ;данные для такта 6 retlw b'00010000' ;данные для такта 7 retlw b'00010100' ;данные для такта 8 retlw b'00010000' ;данные для такта 9 retlw b'00010100' ;данные для такта 10 retlw b'00010000' ;данные для такта 11 retlw b'00010100' ;данные для такта 12 retlw b'00010100' ;данные для такта 13 retlw b'00010100' ;данные для такта 14 retlw b'00010100' ;данные для такта 15 retlw b'00010100' ;данные для такта 16 retlw b'00100011' ;данные для такта 17 retlw b'00100011' ;данные для такта 18 retlw b'00100011' ;данные для такта 19 retlw b'00100011' ;данные для такта 20 retlw b'00100011' ;данные для такта 21 retlw b'01000001' ;данные для такта 22 retlw b'00000001' ;данные для такта 23 retlw b'01000001' ;данные для такта 24 retlw b'00000001' ;данные для такта 25 retlw b'01000001' ;данные для такта 26 retlw b'00000001' ;данные для такта 27 retlw b'01000001' ;данные для такта 28 retlw b'01000001' ;данные для такта 29 retlw b'01000001' ;данные для такта 30 retlw b'01000001' ;данные для такта 31
end ;конец программы Приложение воспроизводить uvPlayer'ом.