スイッチ2個同時押しをしようと思ったら、微妙なのでやめました






/*
Arduino UNOでスイッチ8個をアナログ入力1本で使おう

Date  2024-11-2
Program By.Tsurutsuru

配線
Arduino--
 Aref--Vcc(5V)
 A0--アナログ入力

 Arduino8---LED1
 Arduino9---LED2
 Arduino10--LED3
 Arduino11--LED4
 Arduino12--LED5
 Arduino13--LED6
 Arduino6---LED7
 Arduino7---LED8

//スイッチ2個同時押し 精度が悪い
*/

//変数宣言
word val_A0 = 0;

void setup()
{
  pinMode( 7, OUTPUT); //7番ピンをOUTPUT(出力)に指定(PD7)
  pinMode( 6, OUTPUT); //6番ピンをOUTPUT(出力)に指定(PD6)
  DDRB = B11111111;    //8-13   //0b1111 1111 PORTB 0-7 出力に設定

  Serial.begin(9600);
}

void loop()
{
  val_A0 = analogRead(0);
  Serial.print("val_A0=");
  Serial.println(val_A0);

  if( 760 < val_A0 && val_A0 < 773) LED8();
  if( 778 < val_A0 && val_A0 < 790) LED7();
  if( 838 < val_A0 && val_A0 < 844) LED6();
  if( 851 < val_A0 && val_A0 < 859) LED5();
  if( 865 < val_A0 && val_A0 < 871) LED4();
  if( 913 < val_A0 && val_A0 < 917) LED3();
  if( 930 < val_A0 && val_A0 < 935) LED2();
  if( 956 < val_A0 && val_A0 < 961) LED1();

  if( val_A0 < 20) LED0();

  delay(100);
}

void LED8()
{
  digitalWrite(7, HIGH);  
  digitalWrite(6, LOW);  
  PORTB = B00000000;              //PORT B(8-13)=0
  delay(3);
}
void LED7()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, HIGH);  
  PORTB = B00000000;              //PORT B(8-13)=0
  delay(3);
}
void LED6()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00100000;              //PORT B(8-13)
  delay(3);
}
void LED5()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00010000;              //PORT B(8-13)
  delay(3);
}
void LED4()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00001000;              //PORT B(8-13)
  delay(3);
}
void LED3()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00000100;              //PORT B(8-13)
  delay(3);
}
void LED2()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00000010;              //PORT B(8-13)
  delay(3);
}
void LED1()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00000001;              //PORT B(8-13)
  delay(3);
}
void LED0()
{
  digitalWrite(7, LOW);  
  digitalWrite(6, LOW);  
  PORTB = B00000000;              //PORT B(8-13)
  delay(3);
}