// Neopixel
// setPixelColor
// show();
// clear
// begin
#include <MD_MAX72xx.h>
#define MAX_DEVICES 1
#define CS_PIN 10
#define vpin A0
#define hpin A1
#define sel 2
int ver;
int hor;
int L3;
int largo = 3;
int headx = 0;
int heady = 2;
int manzanaY;
int manzanaX;
int posX[64] = {0,0,0};
int posY[64] = {2,1,0};
int donde = 1;
MD_MAX72XX md = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, 11, 13, 10, MAX_DEVICES);
void manzaN(){
manzanaX = random(0,8);
manzanaY = random(0,8);
md.setPoint(manzanaY,manzanaX,true);
delay(200);
}
void over(){
md.setRow(0, 0xFF);
md.setRow(1, 0xFF);
md.setRow(2, 0xFF);
md.setRow(3, 0xFF);
md.setRow(4, 0xFF);
md.setRow(5, 0xFF);
md.setRow(6, 0xFF);
md.setRow(7, 0xFF);
}
void setup() {
md.begin();
randomSeed(analogRead(A5));
pinMode(vpin, INPUT);
pinMode(hpin, INPUT);
pinMode(sel, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
ver = analogRead(vpin);
hor = analogRead(hpin);
L3 = digitalRead(sel);
int i = largo - 1;
if(ver<300){
donde = 1;
}
else if(ver>700){
donde = 2;
}
else if(hor<300){
donde = 3;
}
else if(hor>700){
donde = 4;
}
if(donde == 1){heady++;}
if(donde == 2){heady--;}
if(donde == 3){headx--;}
if(donde == 4){headx++;}
if(headx<0)
headx = 7;
if(headx>7)
headx = 0;
if(heady<0)
heady = 7;
if(heady>7)
heady = 0;
md.setPoint(posY[i],posX[i],false);
while(i > 0){
posY[i] = posY[i-1];
posX[i] = posX[i-1];
md.setPoint(posY[i],posX[i],true);
i--;
if(headx == posX[i] && heady == posY[i]){
over();}
}
posY[0] = heady;
posX[0] = headx;
md.setPoint(heady,headx,true);
md.setPoint(manzanaY,manzanaX,true);
if(manzanaX == headx && manzanaY == heady){
manzaN();
largo++;
}
delay(500);
}