Você está na página 1de 2

Master:

1 Teria que colocar para a primeira vez pressionada apenas aparecer na


LCD.. e na segunda em diante se alteraria de fato tais parametros. Como
fazer isto:
Se previous_button for diferente do current_button > apenas imprime o
parametro. Se nao (else), transmite o parametro para o Slave.
2 Enviar parametros para o slave.. cada parametro ser para cada um
dos motores,, nao hver subdiviso, existindo apenas uma diviso de
parametros. Ex: 1 a 20 para motor regulador de altura , 21 a 40 para motor
regulador de altura 2, 41 a 60 switchback , 61 a 80 para motor oscilador 1 e
81 a 100 para motor oscilador 2.
6 Se for recebido o valor de confirmao de que os dados foram enviados
corretamente (retorno = 1) , ento se imprimiria o novo valor do parametro
na LCD (neste instante o valor do parametro ja foi modificado, isto , os
motores ja mudaram de velocidade, acelerao, etc). Caso receber 0, reenvia
os dados.
Slave
3 Recebe os parametros.
4 Faz-se a verificacao de erros. Para verificao de erros, como os
numeros enviados so pequenos. Seria interessante no Master se multiplicar
por uma constante grande e dividir por um numero grande e seria enviado a
resduo da diviso:
EX: valor do parametro = 65. Multiplicaria-se por 456789 > 456789*65 =
29691285. Em seguida dividiria-se por um valor alto (ex: 9874) e enviaria-se
o residuo da divisao (nao calculei para este exemplo).
Recalcula-se os mesmos dados no arduino slave e se o resduo calculado no
Slave for igual ao valor calculado, envia para o master o sinal de confirmao
1, caso igual a 0, ignora-se o pressionamento de boto, e nao se faz nada. O
usurio apenas teria que apertar o boto novamente. Isso reduziria o esforo
computacional. Resumindo, ou envia 1 para o Master para imprimir na LCD o
novo valor, ou nao se faz nada (nem se altera o parametro do motor nem se
envia 0 para avisar que houve erro na comunicao). Se o erro persistir,
por que est havendo mal-contato na conexo de porta serial.
Como a porta serial tem falhas, poderia acontecer de enviar e receber
corretamente, mas no retorno da confirmao de recebimento correto do
parametro, poderia acontecer de o retorno falhar(ja que porta serial pode
falhar). O resultado disso seria o motor aumentaria de velocidade mas o
arduino master na reconheceria. Ou seja, o motor ficaria com uma velociadde

maior do que a impressa no LCD. Para contornar este problema, seria melhor
utilizar uma porta lgica digital, pois terei a certeza de que o sinal de 5V ser
enviado (talvez ielsto cause reduo de velocidade nos motores de passo...
muito provavelmente isto na oacontecer, pois os testes que fiz com perda
de velocidade acontecem com o digitalwrite ligado o tempo todo. Neste caso,
s seria ligado quando o boto fosse pressionado <<mandar o sinal por uns
50 ms>>) e usar interrupes(falling, no caso para mudana de estado).
Talvez nao de pra usar interrupes caso as portas que tenham interrupes
ja estejam sendo utilizadas pela comunicaao I2C do SLAVE.
.

5 Altera parametros nas funes criadas no slave para incrementar


e decrementar cada parametro e envia o sinal de confirmao para o
Master.
Dados a serem enviados pelo master para o slave:
Enviar o parametro e em seguida o resduo da diviso (o resto da diviso do
4 passo)
Codigo de alterao pra o slave:
- Antes de tudo, enviar MANUAL(usar numeros ainda nao utilizados (ex: 101 para o
exemplo deste arquivo)), LONGITUDINAL (numero 102) OU TRANSVERSAL (numero
103). >>>>>(CASO FOR NECESSARIO, POIS ISTO PODE DEIXAR O MOTOR LENTO,
E TER A PERDA PERCENTUAL DE VELOCIDADE QUE EU JA HAVIA CALCULADO NA TIA
VIVNHA). TALVEZ NAO PRECISE FAZER ISTO POIS ESTE BLOQUEIO PARECE JA
ACONTECER NO CODIGO DO MASTER*
- Se for confirmado o recebimento do parametro. Criar varios cases para cada um
dos parametros.Em cada CASE se alteraria um parametro, um seria para somar e
outro para subtrair.

Possibilidades para funcionamento dos motores:


Manual> os comandos do manual estariam habilitados (motores 1 2 3 4 5)
Longitudinal > os comandos do modo longitudinal estariam habilitados (motores 1 2
345)
Transversal > mesmo dos anteriores
Me parece que para todos os casos, nao poderei inabilitar qualquer dos botoes..
(apenas no caso de nao se utilizar switchBack, que poderia deixar os botoes de
parametros de switchBack inabilitados.. mas como so poucos, acho que nao teria
problema)

Você também pode gostar