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

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


  1. 2022년 7월 1일부로 회원 정리 안내

  2. No Image notice by 아침에™⇔N² 2021/11/22 by 아침에™⇔N²
    Views 3582 

    키보드랩 이용규정

  3. [공제/공구] 가격/품목 등 정보

  4. 키보드랩 사용주의사항.

  5. 보통 텐키 키보드 사용하실때 쉼표(,)는 어떻게 사용하십니까?

  6. 스위치 추천해주세요

  7. 드디어 MBK CHOC 키캡이 배송대행지에 도착했네요.

  8. 요번 글로리어스 판다 기대되네요

  9. sa 오블 오늘까지인줄알았는데 마감됐네요 ㅠ

  10. mt3 serika 영각 VS 일각

  11. 기계식 키보드에 입문하려는데...

  12. Infinikey Pastel 키캡 발송일 또 늘어났네요..

  13. 짭버고 수리기

  14. 엠스톤 풀윤활 시리즈가 커스텀 키보드 수요에 영향을 미칠까요?

  15. xo v2 나사 빠가

  16. 핑크 하우징에 어울리는 키캡 추천해주세요

  17. No Image 14Aug
    by 입월용
    2020/08/14 by 입월용
    Views 157 

    바밀로 무접점 윤활하신 분 있으신가요?

  18. No Image 09Aug
    by 시우아베
    2020/08/09 by 시우아베
    Views 224 

    바이퍼 v3 스노프로 참 구하기 어렵네요 ㅠ

  19. 질리오스+홀리판다+틸리오스의 오묘한 키감의 세계

  20. 드랍 카리나 이거 어떨까요?

  21. 전역신고 합니다~(?)

  22. 핸드와이어 키보드 하우징 도면 2장

  23. QMK 펌웨어 매크로 코딩

  24. pcb 아트웍 2주 정도만 배워보고 싶네요.

목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 216 Next
/ 216