BASIC4MCU | 질문게시판 | (도와주세요..ㅜㅜ) 신호등 led 세그먼트 버튼 에러
페이지 정보
작성자 승천 작성일2022-12-03 20:12 조회790회 댓글0건본문
위 사진의 파란색으로 동그랗게 해놓은 부분빼고
다른 led, 세그먼트와 버튼들이 다 작동을 안하네요 ㅜㅠㅠㅠ
어떤게 문제인지 도와주실 수 있으신가요??
힘들게 결선 했는데 안되니 선들도 복잡하기도 해서 짐작이 안되네요 ㅜㅜ
https://blog.naver.com/yunc26/222585456600
위 주소의 블로그에서 참고하였습니다,,
아래의 코드대로 진행하였습니다..!
#include <MsTimer2.h> volatile int timerCount = 0; volatile int buttonPressed = 0; volatile int buttonFlag = 0; volatile int segmentCount = 0; // C++ type const int carRed1 = 4; const int carYellow1 = 5; const int carGreen1 = 6; const int pedRed1 = 7; const int pedGreen1 = 8; const int carRed2 = 9; const int carYellow2 = 10; const int carGreen2 = 11; const int pedRed2 = 12; const int pedGreen2 = 13; const int pedButton = 2; const int pedNotify = 3; // For 7-segment uint8_t pinout1[7] = {22, 23, 24, 25, 26, 27, 28}; uint8_t pinout2[7] = {32, 33, 34, 35, 36, 37, 38}; uint8_t disp[10] = {B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00000111, B01111111, B01101111}; void setup() { pinMode(carRed1, OUTPUT); pinMode(carYellow1, OUTPUT); pinMode(carGreen1, OUTPUT); pinMode(pedRed1, OUTPUT); pinMode(pedGreen1, OUTPUT); pinMode(carRed2, OUTPUT); pinMode(carYellow2, OUTPUT); pinMode(carGreen2, OUTPUT); pinMode(pedRed2, OUTPUT); pinMode(pedGreen2, OUTPUT); pinMode(pedButton, INPUT); pinMode(pedNotify, OUTPUT); for (int i=0;i<7;i++) pinMode(pinout1[i], OUTPUT); for (int i=0;i<7;i++) pinMode(pinout2[i], OUTPUT); initSegment(); MsTimer2::set(500, flashLED); MsTimer2::start(); attachInterrupt(0, pedButtonPress, RISING); } void loop() { } void flashLED() { if (timerCount == 1) { digitalWrite(carRed1, HIGH); digitalWrite(carGreen2, HIGH); digitalWrite(pedRed2, HIGH); if (buttonFlag == 1) { digitalWrite(pedGreen1, HIGH); digitalWrite(pedRed1, LOW); segmentCount = 8; displaySegment(segmentCount, 0, true); } else { digitalWrite(pedRed1, HIGH); digitalWrite(pedGreen1, LOW); } } else if (timerCount >= 2 && timerCount < 17) { if (buttonFlag == 1) { if (timerCount%2==1) { segmentCount--; displaySegment(segmentCount, 0, true); } } if (timerCount >= 11 && timerCount < 17) { if (buttonFlag == 1) digitalWrite(pedGreen1, !digitalRead(pedGreen1)); } if (timerCount == 15) { digitalWrite(carGreen2, LOW); digitalWrite(carYellow2, HIGH); } } else if (timerCount == 17) { initSegment(); digitalWrite(carRed1, LOW); digitalWrite(pedGreen1, LOW); digitalWrite(carGreen1, HIGH); digitalWrite(pedRed1, HIGH); digitalWrite(carYellow2, LOW); digitalWrite(carRed2, HIGH); if (buttonFlag == 1) { digitalWrite(pedGreen2, HIGH); digitalWrite(pedRed2, LOW); segmentCount = 8; displaySegment(segmentCount, 1, false); } else { digitalWrite(pedRed2, HIGH); digitalWrite(pedGreen2, LOW); } } else if (timerCount >= 18 && timerCount < 33) { if (buttonFlag == 1) { if (timerCount%2==1) { segmentCount--; displaySegment(segmentCount, 1, false); } } if (timerCount >= 27 && timerCount < 33) { if (buttonFlag == 1) digitalWrite(pedGreen2, !digitalRead(pedGreen2)); } if (timerCount == 31) { digitalWrite(carGreen1, LOW); digitalWrite(carYellow1, HIGH); } } else if (timerCount == 33) { initSegment(); segmentCount = 0; buttonFlag = buttonPressed; buttonPressed = 0; digitalWrite(pedNotify, LOW); digitalWrite(carYellow1, LOW); digitalWrite(carRed1, HIGH); if (buttonFlag == 1) { digitalWrite(pedGreen1, HIGH); digitalWrite(pedRed1, LOW); } else { digitalWrite(pedRed1, HIGH); digitalWrite(pedGreen1, LOW); } digitalWrite(pedGreen2, LOW); digitalWrite(pedRed2, HIGH); digitalWrite(carRed2, LOW); digitalWrite(carGreen2, HIGH); timerCount = 0; } timerCount++; } void pedButtonPress() { buttonPressed = 1; digitalWrite(pedNotify, HIGH); } void initSegment() { for (int i=0;i<7;i++) { digitalWrite(pinout1[i], LOW); digitalWrite(pinout2[i], HIGH); } } void displaySegment(int num, int index, bool isCathode) { for (int i=0;i<7;i++) { if (isCathode == true) { if (index == 0) digitalWrite(pinout1[i], bitRead(disp[num], i)); else digitalWrite(pinout2[i], bitRead(disp[num], i)); } else { if (index == 0) digitalWrite(pinout1[i], !bitRead(disp[num], i)); else digitalWrite(pinout2[i], !bitRead(disp[num], i)); } } }
댓글 0
조회수 790등록된 댓글이 없습니다.