Есть следующая схема:
Код:
int valX = 0;
int valY = 0;
int fila = 5;
int columna = 13;
int lectura = 0;
int posX = constrain(posX, 0, 5);
int posY = constrain(posY,0,5);
int contX=constrain(contX, 0, 150);
int contY=constrain(contY, 0, 150);
int frame[6][6]=
{
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0},
{0,0,0,0,0,0}
};
void setup()
{
for(int i=0; i<6; i++){
pinMode(i, OUTPUT);
}
for(int i=8; i<14; i++){
pinMode(i, OUTPUT);
}
pinMode(6, INPUT);
pinMode(7, INPUT);
}
void limpiar(){
for(int i=0; i<6; i++){
digitalWrite(i, LOW);
}
for(int i=8; i<14; i++){
digitalWrite(i, HIGH);
}
}
void loop()
{
valX = map(analogRead(5),0,1023,0,6);
valY = map(analogRead(4),0,1023,0,6);
switch(valX){
case 1: if(contX>=100){
frame[posY][posX]=0;
posX--;
frame[posY][posX]=1;
contX=0;
}
case 2: if(contX>=100){
frame[posY][posX]=0;
posX--;
frame[posY][posX]=1;
contX=0;
}
break;
case 5: if(contX>=100){
frame[posY][posX]=0;
posX++;
frame[posY][posX]=1;
contX=0;
}
break;
case 6: if(contX>=100){
frame[posY][posX]=0;
posX++;
frame[posY][posX]=1;
contX=0;
}
break;
}
switch(valY){
case 1: if(contY>=100){
frame[posY][posX]=0;
posY--;
frame[posY][posX]=1;
contY=0;
}
break;
case 2: if(contY>=100){
frame[posY][posX]=0;
posY--;
frame[posY][posX]=1;
contY=0;
}
break;
case 4: if(contY>=100){
frame[posY][posX]=0;
posY++;
frame[posY][posX]=1;
contY=0;
}
break;
case 5: if(contY>=100){
frame[posY][posX]=0;
posY++;
frame[posY][posX]=1;
contY=0;
}
break;
}
for(int scan=0; scan<1; scan++){
for(int i=0; i<6; i++){
digitalWrite(fila-i,HIGH);
for(int j=0; j<6; j++){
if(frame[i][j]==1){
digitalWrite(columna-j, LOW);
}
}
limpiar();
}
}
contX++;
contY++;
}
Необходимо сделать так, чтобы диоды загорались по очереди, но после этого не гасли. То есть последовательное заполнение всей матрицы снизу вверх, справа налево. Пожалуйста, помогите решить эту задачу.