1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

1ピン入力、十字キーで遊ぶ。(1) (構想編(1)) マクロづくり STM32C0116-DK

Last updated at Posted at 2025-08-15

目的

抵抗分岐型の十字キーのプログラムを作る

各電圧の仕様

  • ユーザマニュアル (1)

o_coq941.jpg

  • ナンバーを振る

N_SELECT 5
N_LEFT   4
N_DOWN   3
N_UP     2
N_RIGHT  1
N_NO_KEY 0

  • キーの電圧のマクロを作る

例 3.3V -> 33と小数点一の位を四捨五入する。


P_SELECT ((((int)(0.0*100))+5)/10)
P_LEFT   ((((int)(0.67*100))+5)/10)
P_DOWN   ((((int)(1.32*100))+5)/10)
P_UP     ((((int)(2.01*100))+5)/10)
P_RIGHT  ((((int)(2.65*100))+5)/10)
P_NO_KEY ((((int)(3.3*100))+5)/10)


#include <iostream>
using namespace std;

#define P_SELECT ((((int)(0.0*100))+5)/10)
#define P_LEFT   ((((int)(0.67*100))+5)/10)
#define P_DOWN   ((((int)(1.32*100))+5)/10)
#define P_UP     ((((int)(2.01*100))+5)/10)
#define P_RIGHT  ((((int)(2.65*100))+5)/10)
#define P_NO_KEY ((((int)(3.3*100))+5)/10)

int main(void){
    // Your code here!
  
    printf("P_SELECT %d\n",P_SELECT);
    printf("P_LEFT   %d\n",P_LEFT);
    printf("P_DOWN   %d\n",P_DOWN);
    printf("P_UP     %d\n",P_UP);
    printf("P_RIGHT  %d\n",P_RIGHT);
    printf("P_NO_KEY %d\n",P_NO_KEY);
  
}


P_SELECT 0
P_LEFT   7
P_DOWN   13
P_UP     20
P_RIGHT  27
P_NO_KEY 33

  • 中間の電圧を求める

DOWNとUPの間の電圧 十倍した値
例 (20 + 13) / 2 = 16.5


SELECT_t_LEFT  ((P_SELECT+P_LEFT)/2)
LEFT_t_DOWN    ((P_LEFT+P_DOWN)/2)
DOWN_t_UP      ((P_DOWN+P_UP)/2)
UP_t_RIGHT     ((P_UP+P_RIGHT)/2)
RIGHT_t_NO_KEY ((P_RIGHT+P_NO_KEY)/2)


#include <iostream>
using namespace std;

#define P_SELECT ((((int)(0.0*100))+5)/10)
#define P_LEFT   ((((int)(0.67*100))+5)/10)
#define P_DOWN   ((((int)(1.32*100))+5)/10)
#define P_UP     ((((int)(2.01*100))+5)/10)
#define P_RIGHT  ((((int)(2.65*100))+5)/10)
#define P_NO_KEY ((((int)(3.3*100))+5)/10)

#define SELECT_t_LEFT  ((P_SELECT+P_LEFT)/2)
#define LEFT_t_DOWN    ((P_LEFT+P_DOWN)/2)
#define DOWN_t_UP      ((P_DOWN+P_UP)/2)
#define UP_t_RIGHT     ((P_UP+P_RIGHT)/2)
#define RIGHT_t_NO_KEY ((P_RIGHT+P_NO_KEY)/2)

int main(void){
    // Your code here!
  
    printf("P_SELECT %d\n",P_SELECT);
    printf("P_LEFT   %d\n",P_LEFT);
    printf("P_DOWN   %d\n",P_DOWN);
    printf("P_UP     %d\n",P_UP);
    printf("P_RIGHT  %d\n",P_RIGHT);
    printf("P_NO_KEY %d\n",P_NO_KEY);

    printf("\n");

    printf("SELECT_t_LEFT  %d\n",SELECT_t_LEFT);
    printf("LEFT_t_DOWN    %d\n",LEFT_t_DOWN);
    printf("DOWN_t_UP      %d\n",DOWN_t_UP);
    printf("UP_t_RIGHT     %d\n",UP_t_RIGHT);
    printf("RIGHT_t_NO_KEY %d\n",RIGHT_t_NO_KEY);



}


P_SELECT 0
P_LEFT   7
P_DOWN   13
P_UP     20
P_RIGHT  27
P_NO_KEY 33

SELECT_t_LEFT  3
LEFT_t_DOWN    10
DOWN_t_UP      16
UP_t_RIGHT     23
RIGHT_t_NO_KEY 30

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?