【ゆっくり】Arduinoを使って7セグメントデコーダ製作!【電子工作】

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 พ.ย. 2024

ความคิดเห็น • 3

  • @Kasanaru-Neko
    @Kasanaru-Neko  2 หลายเดือนก่อน

    /* 4bitの方 */
    // 入力ピンの定義
    const int inbit0 = 2;
    const int inbit1 = 3;
    const int inbit2 = 4;
    const int inbit3 = 5; //MSB
    const int set = 13; //2の補数設定用
    const int inputPins[5] = {inbit0, inbit1, inbit2, inbit3, set};
    // 出力ピンの定義
    //1の位
    const int outbit0 = 6;//a1
    const int outbit1 = 7;
    const int outbit2 = 8;
    const int outbit3 = 9;
    const int outbit4 = 10;
    const int outbit5 = 11;
    const int outbit6 = 12;//g1
    //10の位
    const int outbit7 = A0;//a10
    const int outbit8 = A1;
    const int outbit9 = A2;
    const int outbit10 = A3;
    const int outbit11 = A4;
    const int outbit12 = 0;
    const int outbit13 = 1;//g10
    const int outputPins1[7] = {outbit0, outbit1, outbit2, outbit3, outbit4, outbit5, outbit6};
    const int outputPins10[7] = {outbit7, outbit8, outbit9, outbit10, outbit11, outbit12, outbit13};
    void setup() {
    // 入力用ピンを設定
    for(int i = 0; i < 5; i++){
    pinMode(inputPins[i],INPUT);
    }
    // 出力用ピンを設定
    for(int i = 0; i < 7; i++){
    pinMode(outputPins1[i],OUTPUT);
    }
    for(int i = 0; i < 7; i++){
    pinMode(outputPins10[i],OUTPUT);
    }
    }
    void loop() {
    // numberに4bitの値を入力
    uint8_t number = 0;
    number |= digitalRead(inbit0) i) & 0x01); //1の位出力
    digitalWrite(outputPins10[i],(Y >> i) & 0x01); //10の位出力
    }
    delay(10); // 10ミリ秒待つ
    }
    // BCDに変換する関数
    uint8_t toBCD(uint8_t num) {
    uint8_t tens = (num / 10) 7) & 0x01)) number = ~number + 1; //2の補数対応 in8 = 1の時
    uint16_t bcd = toBCD(number); //BCDに変換
    uint8_t X = 0, Y = 0, Z = 0;
    X = get7SegmentValue(bcd & 0x0F); //1の位 0gfedcbaの順で格納されている
    Y = get7SegmentValue((bcd >> 4) & 0x0F); //10の位
    Z = get7SegmentValue((bcd >> 8) & 0x0F); //100の位

    for(int i = 0; i < 7; i++){ //シフトレジスタへの格納
    digitalWrite(out0, (X >> i) & 0x01);
    digitalWrite(out1, (Y >> i) & 0x01);
    digitalWrite(out2, (Z >> i) & 0x01);
    if(digitalRead(in8) & ((number2>>7) & 0x01)) digitalWrite(out3,1);
    else digitalWrite(out3,0);
    digitalWrite(clock,0);
    for(int j=0;j

  • @ピロシキ-x9p
    @ピロシキ-x9p 2 หลายเดือนก่อน +1

    おぉ!素早いアップデート!
    某メーカーも見習えばよい。

    • @Kasanaru-Neko
      @Kasanaru-Neko  2 หลายเดือนก่อน

      ご視聴ありがとうございます!
      あのコメントが無ければ挑戦してなかったと思います きっかけをいただき感謝です!