logo

한국어

게시판






조회 수 368 추천 수 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 3757
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3929
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36847
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40813
4008 혹시 매스드랍 갓스피드 구매하시는분 없으신가요 3 watch 2018.12.06 365
4007 모니터 5 file 見利思義 2024.02.15 366
4006 키보드 조립할만한 곳 없을까요? (납땜 등..) 8 빨간귤 2020.04.16 366
4005 어우 증말 오배송 화나네요 2 maGnate_Az 2019.04.16 367
4004 돌치 레플리카... 복각...? 6 file Kiruas 2023.04.25 367
» QMK 펌웨어 매크로 코딩 11 file 콩바구니 2020.07.22 368
4002 인터넷 타건샵?! 7 미네나인 2018.12.01 368
4001 매스드랍 알트 키보드는 플레이트가 케이스랑 일체형이군요. 6 drugfish 2019.04.12 369
4000 !!스팸 문자!! 5 file TTxTT 2022.11.13 369
3999 닭이 된기념 잡템 나눔!!!! (1) - 슈슈비님 당첨! 38 file namu.cy 2018.05.21 370
3998 [VORO-KEYS] 서비스(?)용 FDM 키캡 제작 완료. 6 file 지나가는 2019.05.14 371
3997 5년동안 체리청축 쓰다가 게이트론 적축으로 바꿨습니다 2 키도리 2018.04.26 371
3996 가성비 좋은 87키 PBT 이중사출 키보드를 하나 발견했습니다. 2 KitCat 2018.06.15 371
3995 젤리키 아트리산 질렀습니다 4 file 루라시아 2019.10.10 373
3994 굇수!! 2 見利思義 2024.02.21 373
3993 [안내] 보급형이라고 만든 키체인 간섭 오류(일부) 2 재아 2018.04.28 374
3992 키보드랩 2022년 9월 소식 1 아침에™⇔N² 2022.09.07 374
3991 라이트 패드V2) 펌웨어 업데이트 해결 방법 공유 17 file Time_is_ing 2021.10.16 375
3990 하.. 5 file 아침에™⇔N² 2023.11.20 375
3989 질리오스 V2 왔네요. 9 화이트핸드 2018.12.04 375
목록
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 ... 216 Next
/ 216