概要
wemos d1で、lcdkeypadを使ってみた。
練習問題、やってみた。
練習問題
じゃんけんを実装せよ。
サンプルコード
#include <LiquidCrystal.h>
LiquidCrystal lcd(0, 2, 4, 14, 12, 13);
char janken[] = {
0xbc,
0xde,
0xac,
0xdd,
0xb9,
0xdd,
0x00
};
char aiko[] = {
0xb1,
0xb2,
0xba,
0x00
};
char kati[] = {
0xb1,
0xc5,
0xc0,
0xc9,
0xb6,
0xc1,
0x00
};
char make[] = {
0xb1,
0xc5,
0xc0,
0xc9,
0xcf,
0xb9,
0x00
};
char gu[] = {
0xb8,
0xde,
0xb0,
0x00
};
char choki[] = {
0xc1,
0xae,
0xb7,
0x00
};
char par[] = {
0xca,
0xdf,
0xb0,
0x00
};
int hantei(int a, int b) {
if (a == b)
{
return 0;
}
switch (a)
{
case 0:
return ((b == 1) ? 1 : 2);
case 1:
return ((b == 2) ? 1 : 2);
case 2:
return ((b == 0) ? 1 : 2);
default:
return -1;
}
}
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
}
void loop() {
int a = -1,
b;
int adc;
adc = analogRead(A0);
if (adc > 1000)
{
delay(500);
adc = analogRead(A0);
if (adc > 1000)
{
return;
}
}
if (adc > 0 && adc < 30)
{
//lcd.printf("RIGHT");
a = 2;
}
if (adc > 30 && adc < 300)
{
//lcd.printf("UP ");
a = 0;
}
if (adc > 400 && adc < 600)
{
//lcd.printf("DOWN ");
a = 1;
}
if (adc > 700 && adc < 1000)
{
//lcd.printf("LEFT ");
lcd.setCursor(0, 0);
lcd.printf(" ");
lcd.setCursor(0, 1);
lcd.printf(" ");
lcd.setCursor(0, 0);
lcd.printf(janken);
}
if (adc > 1000)
{
//lcd.printf(" ");
}
if (a > -1)
{
b = rand() % 3;
lcd.setCursor(0, 0);
lcd.printf(" ");
lcd.setCursor(0, 1);
lcd.printf(" ");
lcd.setCursor(0, 0);
switch (a)
{
case 0:
lcd.printf(gu);
break;
case 1:
lcd.printf(choki);
break;
case 2:
lcd.printf(par);
break;
default:
break;
}
lcd.setCursor(7, 0);
switch (b)
{
case 0:
lcd.printf(gu);
break;
case 1:
lcd.printf(choki);
break;
case 2:
lcd.printf(par);
break;
default:
break;
}
lcd.setCursor(0, 1);
int c = hantei(a, b);
switch (c)
{
case 0:
lcd.printf(aiko);
break;
case 1:
lcd.printf(kati);
break;
case 2:
lcd.printf(make);
break;
default:
break;
}
}
delay(1000);
}
以上。