Read sensors is now done.

First steps on moves were taken as well
This commit is contained in:
Diogo Cordeiro 2020-02-12 16:53:22 +00:00
parent 44cf7ec231
commit 7375e8baca

142
snake.ino
View File

@ -11,10 +11,22 @@ const int col[8] = {
int pixels[8][8]; int pixels[8][8];
// cursor position: // cursor position:
int x = 5; int x = 4;
int y = 5; int y = 4;
int z = 0;
// up: 1
// right: 2
// down: 3
// left: 4
int cur_dir = 0;
int snake_x = 4,
snake_y = 4;
void setup() { void setup() {
//Serial.begin(9600); // 9600 bps
// Enable the Z pin
pinMode(z, INPUT_PULLUP);
// initialize the I/O pins as outputs // initialize the I/O pins as outputs
// iterate over the pins: // iterate over the pins:
for (int thisPin = 0; thisPin < 8; thisPin++) { for (int thisPin = 0; thisPin < 8; thisPin++) {
@ -32,29 +44,133 @@ void setup() {
pixels[x][y] = HIGH; pixels[x][y] = HIGH;
} }
} }
/*pixels[2][3] = LOW;
pixels[3][2] = LOW;
pixels[4][2] = LOW;
pixels[4][3] = LOW;
pixels[4][4] = LOW;*/
pixels[snake_x][snake_y] = LOW;
} }
void loop() { void loop() {
delay(300);
// read input: // read input:
readSensors(); // up: 1
// right: 2
// down: 3
// left: 4
switch(read_sensors())
{
case 0: // iddle
// Just don't
break;
case 1: // up
// Move
pixels[snake_x][++snake_y] = LOW;
break;
case 2: // right
// Move
pixels[++snake_x][snake_y] = LOW;
break;
case 3: // down
// Move
pixels[snake_x][--snake_y] = LOW;
break;
case 4: // left
// Move
pixels[--snake_x][snake_y] = LOW;
break;
}
// draw the screen: // draw the screen:
refreshScreen(); refresh_screen();
}
// iddle: 0
// up: 1
// right: 2
// down: 3
// left: 4
int read_sensors() {
int clicked = digitalRead(z); // if 0, then clicked
x = 7 - map(analogRead(A0), 0, 1021, 0, 7);
Serial.print("Just read x=: ");
Serial.print(x);
Serial.print("\n");
y = map(analogRead(A1), 0, 1021, 0, 7)+1;
Serial.print("Just read y=: ");
Serial.print(y);
Serial.print("\n");
if (x == 4 && y == 4) {
Serial.print("We're iddle\n");
return 0;
}
else if (abs(4-x) > abs(4-y)) // X
{
Serial.print("Let's consider x\n");
if (x < 4) {
Serial.print("Move right\n");
return 2;
} else {
Serial.print("Move left\n");
return 4;
}
}
else
{
Serial.print("Let's consider y\n");
if (y > 4) {
Serial.print("Move up\n");
return 1;
} else {
Serial.print("Move down\n");
return 3;
}
} }
void readSensors() {
// turn off the last position:
pixels[x][y] = HIGH;
// read the sensors for X and Y values:
x = 7 - map(analogRead(A0), 0, 1022, 0, 7);
y = map(analogRead(A1), 0, 1022, 0, 7);
// set the new pixel position low so that the LED will turn on // set the new pixel position low so that the LED will turn on
// in the next screen refresh: // in the next screen refresh:
pixels[x][y] = LOW;
} }
void refreshScreen() { /*bool to_right() {
// read the sensors for X
x = 7 - map(analogRead(A0), 0, 1021, 0, 7);
Serial.print("rX is: ");
Serial.print(x);
Serial.print("\n");
if ((x > 4 && cur_dir != 4) || // user inputs right and it isn't currently going left
(cur_dir == 2 && (x == 4 && y == 4)) // user has no input and cur_dir is set
) {
cur_dir = 2;
return true;
}
return false;
}
bool to_left() {
// read the sensors for X
x = 7 - map(analogRead(A0), 0, 1021, 0, 7);
Serial.print("lX is: ");
Serial.print(x);
Serial.print("\n");
if ((x < 4 && cur_dir != 2) || // user inputs right and it isn't currently going left
(cur_dir == 4 && (x == 4 && y == 4)) // user has no input and cur_left is set
) {
cur_dir = 4;
return true;
}
return false;
}
void blink(int x, int y)
{
}*/
void refresh_screen() {
// iterate over the rows (anodes): // iterate over the rows (anodes):
for (int thisRow = 0; thisRow < 8; thisRow++) { for (int thisRow = 0; thisRow < 8; thisRow++) {
// take the row pin (anode) high: // take the row pin (anode) high: