logo

한국어

게시판






조회 수 350 추천 수 0 댓글 11
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

스크린샷 2020-07-22 오전 9.17.02.png

오랜만에 C코딩을 하려니까... 

 

한번 랜덤으로 생성한 int 값을 RGB HEX 로 변환하여 출력하는 기능을 구상했으나..

형변환부터 막혀서...

 

결국 이런 형태로 구현하고 말았어요.

더 잘 짤 수 있을 텐데... 이부분은 C에 대해 다시 공부해야 할 거 같네요.

C 문자열 처리 어려워요..ㅠㅠ

 

어쨌든 잘 돌아갑니다.

 

이 매크로를 매핑하면...

 

#1045A5

#BD9678

#153ED5

#5394BA

#C3120E

#C168D1

#F41E9D

#60971F

#3AEF0C

#45A8B0

#92E265

#2CFDF8

 

이런식으로 RGB HEX 값이 랜덤으로 생성되어 출력됩니다..

 

 

랜덤 컬러라.. 딱히 쓸대가 있을것 같지는 않지만...

심심풀이로는 괜찮네요.. 

 

Who's 콩바구니

profile

moon3.gif

세진키보드 (92년 구입. 모델명 모름. 아마도 기계식 이였을듯...)

잘 생각이 안나지만 어쩄든 멤브레인 키보드들. (1년주기로 교채...마지막 멤브레인은 LG의 X같은 키보드.)

HHKB pro2 

Cherry G84 4100

realforce 87u 10th 균등

목각 하우징 커스텀키보드 (체리 구청축)

Apple Standard Keyboard 

Planck keyboard (체리 백축 클릭)

Preonic  (체리 백축 클릭)

Preonic  (애플 오렌지 알프스, Apple Standard Keyboard  뽀각.)

Massdrop Preonic rev 2 (체리 백축 클릭)

Let's Split (실패)

Massdrop Planck rev 6.1 (카일 박스 오랜지축)

 

Corne (카일 보라축)

Corne (카일 low profile 갈축)

Kyria (카일 low profile 갈축)

  • profile
    EveR™ 2020.07.22 13:06

    프로그래밍 개발 잘하시는 분들 보면 그저 부러울 따름입니다. ㅠ

  • profile
    ALPS 2020.07.22 16:22

    아주 간단한 방법으로는

    char 배열로 만들어서 인덱스를 넘기면 스트링으로 넘기도록 하고,

    스위치 케이스문을 지우고

    함수 하나만 넘겨주면 됩니다.

    SEND_STRING(convertString[r]);
    보통은 저렇게 숫자 -> 스트링으로 변환하는 경우 컨버트 함수를 만들거나 라이브러리 이용하면 됩니다.

  • ?
    whyj 2020.07.22 22:08

    format 쓰시는게..

  • ?
    fsttt204 2020.07.23 07:20
    c에서 저거 포멧팅 시키는 방법만 알면 쉽게 갔을거 같은데 검색 실력이 딸려서 찾질 못하겠네요.
    그런데 위의 랜덤 6번 쓰는 것보단 2번으로 줄이고 0xffffff로 mod 걸어서 그 값으로 처리하는게 mcu한테 덜 부담스럽지 않을까 생각이 들긴 합니다.
  • ?
    TTFF 2020.07.23 11:44 Files첨부 (2)

    1.PNG

     

    2.PNG

     

    이정도면 되지 않을까용..?

  • profile

    스크린샷 2020-07-23 오후 12.16.54.png

    스크린샷 2020-07-23 오후 12.17.08.png

     

    참고해서 적용해봤습니다.

    일단 OLED display 에 출력은 잘 되는군요... 

     

    그런데 생성한 문자열을 직접 키보드 입력으로 보내는게 안됩니다..

    SEND_STRING() 이 char* 를 바로 받지 않아서요..

    스크린샷 2020-07-23 오후 12.41.47.png

     

    결국 생성한 문자열 값에 따라 다시 스위치문을 돌려서 입력명령을 실행해야 입력이 됩니다.

    rand() 호출이 한번에 6번에서 1번으로 줄었으니.. 조금 더 가벼워진 코드라고 할 수 있겠습니다.

     

    그런데 출력 결과는 R값이 계속 0으로 나옵니다..

    avr 프로세서에서 rand() 로 출력되는 값의 범위가 충분히 크지 않은 것 같습니다.

    #0041a7

    #003af1

    #002cd9

    #000c2a

    #003782

    #005ac8

    #000ed8

    #0009fe

    #002f43

     

    스크린샷 2020-07-23 오후 1.07.39.png

    그래서 결국 이렇게 되네요. 랜덤 한번 더 돌렸습니다.

     

    #1abaf4

    #cdbc2a

    #785acd

    #ed89fe

    #f4544d

    이 상태로는 키보드를 처음 부팅하고 나서 처음 나오는 컬러가 항상 #1abaf4 입니다. 두번쨰는 #cdbc2a 지요.

    srand(time(NULL)); 이 적용이 되지 않아서 그렇습니다.

    avr 에서는 컴파일 에러가 나더군요.... 이리저리 고민하다가..

    스크린샷 2020-07-23 오후 1.28.39.png

    이렇게 구현해봅니다.

     

    저 randomSeed 는.. OLED의 display를 갱신하는 부분에서  1씩 증가하게끔 처리했습니다.

    스크린샷 2020-07-23 오후 1.31.38.png

    #d2a4d9

    #4e3e29

    #723932

    #36f5e3

    #b039d2

    #826eac

    #a71f14 

     

    잘 작동합니다.

    매번 다른 hex값이 나옵니다.

  • ?
    TTFF 2020.07.23 13:55
    avr상에서는 엄청 까다로운 문제가 되버리네요..
    많이 배웠습니다. 감사합니다!
  • ?
    fsttt204 2020.07.23 14:38

    역시 이런 문제엔 개발자들이 많이들...

    RAND_MAX 값이 32767 밖에 되지 않아서 하나로 처리가 안되죠.

    그런데 민간한 사람 아니면

    char[] temp = {0, };

    sprintf(temp, "%03x", a);

    sprintf(RGB_HEX, "#%c%c%c%c%c%c", temp[0], temp[0], temp[1], temp[1], temp[2], temp[2]);

    로도 되지 않을까 생각은 했는데 대신 코드가 더러워지네요.

     

  • ?
    TTFF 2020.07.23 15:27 Files첨부 (1)

    안녕하세용!
    짚어주신 내용 살펴보니

    RAND_MAX값이 2^15 밖에 안되는 걸 확인했습니다!

     

     

    그래서 곰곰히 생각해보니.. 아래 솔루션이 생각이 났는데

    혹시 잘못 된 접근 방법인지 조언해주실 수 있으신가요?

     

    캡처.PNG

  • ?
    fsttt204 2020.07.23 16:37

    제가 한 것은 랜덤 함수를 한번만 호출해서 rgb를 각각 16단계. 15x16x16으로만 나눠서 처리한 것이라...

    랜덤을 딱 한번만 불러서 처리하게 한것입니다.

    어짜피 사람 눈이라는게 매우 예민하지 않으면 굳이 255x255x255가지 할필요는 없으니까요.

    그리고 avr 자체 성능이 낮으니 될수 있으면 랜덤 같은 깊은 계산 함수? 를 덜 호출하려는게 목표였구요.

     

    전 그냥 일반 개발자라... 판단할 처지가 안되지만...

    위의 코드는 솔직히 콩바구니님이 댓글로 코드 짠 부분이 쉬프트 계산을 안하기 때문에 연산 효율이 더 좋다고 봅니다.

  • profile
    콩바구니 2020.07.23 15:31

    대충 이런식으로 놀 수 있습니다. ㅎㅎ


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 2022년 7월 1일부로 회원 정리 안내 12 아침에™⇔N² 2022.06.09 3337
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3583
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36439
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40414
4128 DSA 돌레에 대해 27 JackAss* 2014.05.08 3140
4127 1아크릴 아크릴 아스텔 처리 및 생산 가능 두께 3 버밀리언 2014.09.01 3136
4126 SP Keyshop 택배 분실 39 타이거형씨 2014.09.18 3135
4125 카일 적축 10000EA 도착!! 장터드랍예고글 23 DraJin 2014.07.01 3128
4124 이번에 [TH 키캡공제] 잘 되면요..... 31 file 포쿠테 2014.02.25 3124
4123 건의사항) 비로그인시에 장터글 내용이 보입니다 4 ?rchangelus 2014.01.07 3124
4122 쉼터 즉석 복권이 느린이유... 3 file 철혈마제 2014.01.08 3120
4121 지름 도착 15 file 노라도라 2014.04.17 3114
4120 SP에서 조만간 PBT 스페이스바가 가능한가 보네요. 5 Poi 2014.02.22 3113
4119 키보드랩 계급..심심하쟈냐~ 16 file OS도각도각 2014.02.04 3111
4118 으히히히히.. 5 file 노블환이 2014.01.17 3109
4117 회사 구석에 몰래 ... 12 file 웨이브샷 2014.09.22 3107
4116 키랩에서 공제했던, 그 유명한 환돌치가 ... 4 흥부의형 2014.09.18 3107
4115 안녕하세요 린린린입니다. 76 file 린x3 2015.10.06 3104
4114 (완료) 사이트 운영비용 마련을 위한 경매합니다 31 포스/안사염 2015.08.13 3100
4113 "검은사막"으로 키랩 식구분들 초대합니다. 22 듀나 2014.12.12 3100
4112 양천경찰서에서 문자왔습니다.(잭애스) 8 file Sh. 2014.08.26 3095
4111 알프스 스위치용 포인트 키캡 1 file Onion@ 2014.01.20 3094
4110 풀메탈키보드 87/104 Genius 精灵雷神之锤 17 file 넌어느별 2014.07.10 3092
4109 인두기 이벤트 하나 합니다. 59 file 초짜처리씨 2014.04.18 3087
목록
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 216 Next
/ 216