에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

상품 게시판 상세
제목 세그먼트 확인 문의
작성자 오성현 (ip:)
  • 작성일 2022-09-15
  • 추천 추천하기
  • 조회수 435





예제대로 따라하니 첫번째 사진처럼 표기되고, 숫자 뒤 . 부분이 계속 불이 들어옵니다. 돌려도 숫자표기는 안 뜹니다.

0000, 0001, 0002, 0003, 0123을 표기하도록 코드를 입력하니 다른 사진처럼 나옵니다.

 보드의 핀단자 문제일까 싶어 핀의 위치를 바꿔도 같은 결과가 나옵니다.

세그먼트의 종류가 다른건지, 보드 문제인지 확인 가능할까요?

평점 0점
첨부파일 0.jpg , 1.jpg , 2.jpg , 3.jpg , 0123.jpg
비밀번호 삭제하려면 비밀번호를 입력하세요.
  • AI봇 2022-09-16 0점
    수정 삭제 댓글
    스팸글 예제 코드 확인해 보니 이상이 있는것 같습니다. 아래 정상 동작 확인 한 코드이니 이걸로 테스트 해보면 될거에요. 가변저항 사용하지 않고
    4자리 카운트 하는 예제 코드 입니다. 핀 연결은 예제 그대로입니다.

    int digit_select_pin[] = {1,10,11,7}; // 4자리 결정 핀
    int segment_pin[] = {8,12,3,5,6,9,2,4}; // 세그먼트 제어 핀

    int time_delay = 5;
    //0~9까지의 숫자 표시를 위한 세그먼트 a~dp의 점멸 패턴
    //켜지는 부분이 1로 표현됨
    byte digits_data[10]={0xFC, 0x60, 0xDA, 0xF2, 0x66,
    0xB6, 0xBE, 0xE4, 0xFE, 0xE6};

    int d1000, d100, d10, d1;

    void setup()
    {
    //자릿수 선택 핀을 출력으로 설정
    for(int i = 0; i < 4; i++)
    {
    pinMode(digit_select_pin[i], OUTPUT);
    }
    // 세그먼트 제어 핀을 풀력으로 설정
    for(int i = 0; i < 8; i++)
    {
    pinMode(segment_pin[i], OUTPUT);
    }
    }
    //해당 자릿수에 숫자 하나를 표시하는 함수
    //(위치, 출력할 숫자)
    void show_digit(int pos, int number)
    {
    for(int i = 0; i < 4; i++)
    {
    if(i == pos-1)
    digitalWrite(digit_select_pin[i], HIGH);
    else
    digitalWrite(digit_select_pin[i], LOW);
    }
    // 8개 세그먼트 제어
    for(int i = 0; i < 8; i++)
    {
    byte segment_data = (digits_data[number]
    & (0x01 > i;
    if(segment_data == 1)
    digitalWrite(segment_pin[7-i], LOW);
    else
    digitalWrite(segment_pin[7-i], HIGH);
    }
    }
    void loop()
    {
    for( int i = 0; i < 10000; i++)
    {

    d1000 = i /1000;
    d100 = i % 1000/100;
    d10 = i % 100/10;
    d1 = i % 10;
    for(int j = 0 ; j < 10 ; j++)
    {

    show_digit(1, d1000);
    delay(time_delay);
    show_digit(2, d100);
    delay(time_delay);
    show_digit(3, d10);
    delay(time_delay);
    show_digit(4, d1);
    delay(time_delay);
    }
    }
    }
  • 오성현 2022-09-16 0점
    수정 삭제 댓글
    스팸글 digitalWrite(digit_select_pin[i], HIGH);
    digitalWrite(digit_select_pin[i], LOW);

    digitalWrite(segment_pin[7-i], LOW);
    digitalWrite(segment_pin[7-i], HIGH);
    이 부분에서 신호가 반대로 입력되어 있던 거였네요. 답변 감사합니다.

스팸신고 스팸해제

댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

관련 글 보기

관련글 모음
no item title name date hit
23388 아두이노 0.56인치 7세그먼트 4칸 FND 세그먼트 확인 문의 HIT파일첨부 오성현 2022-09-15 435
«
»