#include int d1 = 5; int d2 = 6; int d3 = 10; int d4 = 12; int a = 15; int b = 17; int c = 14; int d = 7; int e = 9; int f = 3; int g = 16; int digits[]={d1,d2,d3,d4}; int segments[]={a,b,c,d,e,f,g}; int multiplexing_delay(1); int one[7]={0,1,1,0,0,0,0}; int two[7]={1,1,0,1,1,0,1}; int three[7]={1,1,1,1,0,0,1}; int four[7]={0,1,1,0,0,1,1}; int five[7]={1,0,1,1,0,1,1}; int six[7]={1,0,1,1,1,1,1}; int seven[7]={1,1,1,0,0,0,0}; int height[7]={1,1,1,1,1,1,1}; int letter_a[7]={1,1,1,0,1,1,1}; int letter_b[7]={0,0,1,1,1,1,1}; int letter_c[7]={1,0,0,1,1,1,0}; int letter_d[7]={0,1,1,1,1,0,1}; int letter_e[7]={1,0,0,1,1,1,1}; int letter_f[7]={1,0,0,0,1,1,1}; int letter_g[7]={1,0,1,1,1,1,1}; int letter_h[7]={0,1,1,0,1,1,1}; String opponent_move = "a1a1"; void setup() { Serial.begin(9600); digitalWrite(digits[3],HIGH); digitalWrite(digits[2],HIGH); digitalWrite(digits[1],HIGH); digitalWrite(digits[0],HIGH); for (int i = 0; i < sizeof(digits) - 1; i++){ pinMode(digits[i],OUTPUT); } for (int i = 0; i < sizeof(segments) - 1; i++){ pinMode(segments[i],OUTPUT); } Wire.begin(); } void loop() { opponent_move = Serial.readString(); if (opponent_move.length()==4){ for (int tempo = 0; tempo<500; tempo++){ for (int i = 0; i<2; i++){ digitalWrite(digits[2*i],LOW); switch (opponent_move[2*i]){ case 'a': character(letter_a); break; case 'b': character(letter_b); break; case 'c': character(letter_c); break; case 'd': character(letter_d); break; case 'e': character(letter_e); break; case 'f': character(letter_f); break; case 'g': character(letter_g); break; case 'h': character(letter_h); break; } delay(multiplexing_delay); digitalWrite(digits[2*i],HIGH); } for (int i = 0; i<2; i++){ digitalWrite(digits[2*i+1],LOW); switch (opponent_move[2*i+1]){ case '1': character(one); break; case '2': character(two); break; case '3': character(three); break; case '4': character(four); break; case '5': character(five); break; case '6': character(six); break; case '7': character(seven); break; case '8': character(height); break; } delay(multiplexing_delay); digitalWrite(digits[2*i+1],HIGH); } } } else { for (int tempo = 0; tempo<500; tempo++){ for (int i = 0; i<2; i++){ digitalWrite(digits[2*i],LOW); character(height); delay(multiplexing_delay); digitalWrite(digits[2*i],HIGH); } for (int i = 0; i<2; i++){ digitalWrite(digits[2*i+1],LOW); character(height); delay(multiplexing_delay); digitalWrite(digits[2*i+1],HIGH); } } } int16_t capacitive_values[4][16]; byte data_read[16][2]; for (int j = 0; j<4; j++){ Wire.requestFrom(j+1, 32); for (int i = 0; i<16; i++){ data_read[i][0] = Wire.read(); data_read[i][1] = Wire.read(); } for (int i = 0; i<16; i++){ capacitive_values[j][i] = data_read[i][0]; capacitive_values[j][i] = capacitive_values[j][i] << 8 | data_read[i][1]; } Serial.print(j+1); Serial.print(":"); for (int i = 0; i<16; i++){ Serial.print(capacitive_values[j][i]); Serial.print(","); } Serial.println(""); } } void character(int segment_state[7]){ for (int i = 0; i < 7; i++){ if (segment_state[i] == 1){ digitalWrite(segments[i],HIGH); } else { digitalWrite(segments[i],LOW); } } }