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 3336
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3583
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36436
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40413
4147 해외직구 규제 관련으로 난리났네요. 1 file Kiruas 2024.05.16 349
4146 해외에서 키랩 접속 불가 현상 1 gotofbi 2014.07.10 1883
4145 해외공제 직배송 힘드네요.... 11 하늘e사랑한i 2014.09.26 2388
4144 해외 주문 물품, 열흘째 움직임이 없네요 8 file 이름미등록 2016.09.29 1061
4143 해외 유저의 조립영상 8 yunhui 2018.02.08 742
4142 해외 송금했습니다.. 12 노블환이 2014.02.11 1834
4141 해외 사이트에서 볼텍스 핑크 키캡 질렀는데 비싸네요.. 4 주홍쒸 2014.07.15 2032
4140 해외 사이트 직구 (페이팔) 주문 취소/환불 1 file 배추 2017.09.01 786
4139 해명입니다. 5 file 프시케 2014.06.06 1603
4138 해골편대셋이 출발했다고 메일이 왔습니다. 6 Kreuznach 2014.04.04 2191
4137 해골 키캡을 만들자 11 file OVERFLOW 2018.05.23 328
4136 항상 실패하는 배송비 계산... 11 file 버밀리언 2014.10.29 2472
4135 항구질(해운 배송대행) 30% / 아마존 20% 할인 정보입니다. 4 로인 2015.07.15 1655
4134 핫핑크 스티커.. -_- 10 file 노블환이 2014.02.10 2189
4133 핫키 투톤 키캡 다시 팔기 시작하네요 영유니 2017.11.25 736
4132 핫스왑용 콘넥터 주문했습니다 ㅎㅎ 2 file godefer 2018.06.01 256
4131 함흥차사 8 앤죠 2016.08.20 1080
4130 할거 없으니 키보드 방송 6 플랜C 2014.06.21 1491
4129 한화가 드디어 1위를 했습니다! 6 foon 2014.03.30 1976
4128 한탕주의 1 file 見利思義 2023.11.11 245
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 216 Next
/ 216