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

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

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

묻고답하기

기술문의 게시판입니다.

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





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

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

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

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

«
»