como assim fazer o algoritmo no papel?
A minha sugestao e desenhares tipo com baloes e instruçoes de decisao num papel o diagrama que o teu programa tem de fazer e resolver mediante o desafio que tens.
Partes cada bocado num pequeno problema e vais criando funçoes para cada uma delas
Por exemplo no teu codigo que postaste estas a repetir a mesma coisa imensas vezes para ligares os leds com o numero de lugares no parque.Para contornar isso podes usar uma variavel de 8 bits e mandares essa variavel directamente no Porto onde tens os leds.Assim podes usar uma funçao para la escrever de uma forma simples:
void writeVariableToPortB(uint8_t valueToPort)
{
DDRB = 0x1F; //seta os 5 bits menos significativos do porto B como outputs
PORTB = valueToPort; //escreve valor na PortaB
}
Ve esta pequena tabela de verdade que fiz no excel sobre os valores que a variavel que passas para a funçao terá de ter:
Ou seja se quiseres ligar o led 5 passas para a funçao uma variavel com o valor de 32 por exemplo:
uint8_t portVariable = 1;
void setup()
{
DDRB = 0x1F; //seta os 5 bits menos significativos do porto B como outputs 0b00011111
/*O portB tem como pinos no Atmega328 a seguinte ordem:
bit0 do PortoB ----->Pino 8 no arduino
bit1 do PortoB ----->Pino 9 no arduino
bit2 do PortoB ----->Pino 10 no arduino
bit3 do PortoB ----->Pino 11 no arduino
bit4 do PortoB ----->Pino 12 no arduino*/
}
void loop()
{
for(uint8_t i = 0; i<=4;i++)
{
writeVariableToPortB(portVariable);
portVariable = portVariable * 2;
delay(1000);
if(portVariable == 64)portVariable = 1;//Renicia o ciclo
}
}
void writeVariableToPortB(uint8_t valueToPort)
{
PORTB = valueToPort;//Escreve o valor no PortoB
}
Este codigo deverá fazer correr os 5 leds e devera dar para resolveres essa repetiçao de codigo.Agora resolves os outros erros ...