segunda-feira, 13 de outubro de 2014

Lógica de Programação

Como será lido os sensores:

Isto varia, vi um vídeo que um sensor de luminosidade de 0 a 5 volts, interpreta em bits ate 1025, suponho que metade para cima seja 1(positivo) e metade para baixo seja 0(negativo);

Caso trabalhe com o mouse mais 2 sensores, acredito que funcionara o projeto sendo sensor da direita, sensor da esquerda  e mouse verificando se esta indo reto(aumentando Y positivo), virando a esquerda( diminuindo X negativo), virando para direita(aumentando X positivo), e tendo que retroceder(aumentando Y negativo);

Considerando os fatos acima, terá uma tabela verdade para os sensores:

Esquerda
Direita
Resultado
1
1
Acelera
1
0
Desacelera e aumenta o grau para Esquerda
0
1
Desacelera e aumenta o grau para Direita
0
0
Retrocede

Teoricamente, poderíamos começar um laço de repetição assim:

Inteiro Esquerda, Direita;
Float Aceleração;
Enquanto (motor estiver ligado){
Se (Esquerda=1, Direita=1){
Aceleração +=1;
}
Se(Esquerda=1, Direita=0){
            Aceleração = Aceleração*0.6;
            InclinaçãoEsquerda +30°;
            Aceleração +=1;
}
Se(Esquerda=0, Direita=1) ){
            Aceleração = Aceleração*0.6;
            InclinaçãoDireita +30°;
            Aceleração +=1;
}
Se(Esquerda=0, Direita=0) ){
            Aceleração = Aceleração*0.2;
            Retrocede;
}
}

No caso a Aceleração, seria com uma formula com base no motor e no tempo, considerando que o tempo seja a cada segundo, a aceleração seria aumentando a força do motor e desaceleração diminuindo, a inclinação seria com base nas rodas, nesse ponto necessito que expliquem como seria, pois não entendo.

Acredito que assim não precisaria, guardar os dados para a segunda volta, pois automaticamente ele estaria acelerando e desacelerando no próprio percurso, mas caso precise guardar, teríamos que guardar as posições de X e Y em um Array, e numa próxima rodada, resetar as posições iniciais para 0,0 no inicio e seguir:

Y Aumenta, X =  anterior ( Acelera)
Y Aumenta, X Aumenta ( Diminui Aceleração, Inclinação a Direita)
Y Aumenta, X Diminui (Diminui Aceleração, Inclinação a Esquerda)
Y Diminui ( Diminui Aceleração, retrocede).

O Acionamento dos Motores será automático com a aceleração, mas acredito que um botão que ative a energia seria o primeiro passo, para considerar que a corrida já começou.
Poderia também ter um segundo botão para ativar a segunda volta, que assim poderia pegar as coordenadas guardadas de x e y para o novo percurso.

Estes 2 links são interessantes:
O primeiro demonstra como funciona o sensor de luminosidade e como o software interpreta os sinais: 
http://engcomper.blogspot.com.br/2011/08/tutorial-sensor-de-luminosidade-com.html

Já o segundo é um trabalho pronto sobre um robô seguidor de percurso mas com uma teoria diferente:
http://vivaolinux.com.br/artigo/Robotica-com-Android-e-Arduino/?pagina=1



Um comentário:

  1. Muito bom Johne,

    Ficou bem legal a lógica que vocẽ fez. Mas o que falta é decidirmos como faremos a parte estrutural do dispositivo para que possa acertar essas dúvidas da parte lógica. Acredito que teve dificuldade devido a ausẽncia de informações. Mas estamos no caminho certo.

    Abraço

    ResponderExcluir