スイッチ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);
}
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);
}