# memo
>> code javascript
#include <LCD_ST7032.h>
LCD_ST7032 lcd;
#define Y1 A0
#define X1 A1
#define Y2 A2
#define X2 A3
#define SPEAKER 9
int buttonTrig;
int xavg, yavg;
char charMap[3][10] = {
{'\n', ' ', ',', 'M', 'N', 'B', 'V', 'C', 'X', 'Z'},
{';', 'L', 'K', 'J', 'H', 'G', 'F', 'D', 'S', 'A'},
{'P', 'O', 'I', 'U', 'Y', 'T', 'R', 'E', 'W', 'Q'}
};
void reset(){
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
digitalWrite(A0, LOW);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
}
void setup() {
buttonTrig = 0;
xavg = yavg = 0;
reset();
pinMode(SPEAKER, OUTPUT);
lcd.begin();
lcd.setcontrast(24);
lcd.setCursor(0, 0); //LINE 1, ADDRESS 0
lcd.cursor();
lcd.print("Hello World");
}
void loop() {
int x, y;
reset();
// x sensor
digitalWrite(X1, HIGH);
pinMode(Y1, INPUT);
pinMode(Y2, INPUT);
delay(1);
x = analogRead(Y1);
reset();
// y sensor
digitalWrite(Y1, HIGH);
pinMode(X1, INPUT);
pinMode(X2, INPUT);
delay(1);
y = analogRead(X1);
if(x != 0 && y != 0){
if(buttonTrig > 4){ // delay 4 frame to wait stable
xavg = ((xavg + x) >> 1);
yavg = ((yavg + y) >> 1);
}else{
xavg = x;
yavg = y;
}
if(buttonTrig == 8){
tone(SPEAKER, 440 + x);
byte yrow = 0;
if(yavg > 100) yrow = 1;
if(yavg > 300) yrow = 2;
if(yavg > 500) yrow = 3;
byte xrow = 0; //
if(xavg > 100) xrow = 1;
if(xavg > 150) xrow = 2;
if(xavg > 220) xrow = 3;
if(xavg > 300) xrow = 4;
if(xavg > 380) xrow = 5;
if(xavg > 430) xrow = 6;
if(xavg > 480) xrow = 7;
if(xavg > 550) xrow = 8;
if(xavg > 630) xrow = 9;
if(xavg > 690) xrow = 10;
if(charMap[yrow - 1][xrow - 1] == '\n'){
lcd.clear();
lcd.setCursor(0, 0);
}else{
lcd.write(charMap[yrow-1][xrow-1]);
}
}
buttonTrig ++;
}else{
noTone(SPEAKER);
buttonTrig = 0;
xavg = 0;
yavg = 0;
}
}
<<5643382
wiki
1516201581