Em dois artigos anteriores, falei sobre o uso de um smartphone para controlar um carro de brinquedo, ambos diretamente por voz e o uso de outro smartphone bluetooth. Mas o controle era primitivo - um comando foi dado, o carro executou o comando, parou e esperou o próximo comando. Isso ocorreu devido à alta velocidade do veículo para condições internas (aproximadamente 1,2 m / s), bem como ao longo tempo em que o comando foi dado e à incapacidade de intervir rapidamente no movimento usando o menu. Mesmo o controle remoto padrão não permitiu o controle. Na nova versão do controle remoto com uma interface gráfica, decidi usar o PWM para ajustar a velocidade e simular a direção.

A imagem mostra a máquina, controlada por um smartphone, e abaixo de um smartphone com um programa de controle remoto bluetooth funcionando.
Na parte superior da tela, há um controle deslizante (círculo verde), movido com o dedo.

Ao remover um dedo da tela, a distância relativa do controle deslizante até a borda esquerda da tela é transmitida ao smartphone de controle, onde é formada a modulação latitudinal do sinal de pulso.
GR.GET.POSITION c1, xx, yy r6=(xx-xc)*(xx-xc)+(yy-yc)*(yy-yc) IF r6<rkn THEN GR.TOUCH touched, x, y IF y < 120 THEN DO GR.TOUCH touched, x, y GR.GET.POSITION c1, x1,z1 GR.MOVE c1 ,x-x1, y1 GR.RENDER UNTIL !touched ENDIF GR.GET.POSITION c1, x1,z1 POPUP STR$(x1/w) BT.WRITE "#"+STR$(x1/w) ENDIF
O menor ciclo de trabalho do sinal é 20%, o maior é 80%. A frequência teórica possível é 10 Hz. De fato, provavelmente entre 4 e 5 Hz, já que os sinais de modulação vão no fluxo geral de comandos e alguns deles também têm um atraso de tempo. Portanto, com baixo ciclo de trabalho, a vibração é claramente visível.
Dois botões verdes - parte superior para frente, parte inferior das costas. Botão vermelho direito - fique parado. Dois botões brancos - interrompem os programas no controle remoto e na máquina de escrever. Na parte inferior da tela, há três botões roxos para selecionar a direção do movimento para a esquerda, reta e direita. At
Quando o modo correspondente é ativado, um círculo de diâmetro menor e a mesma cor mais escura aparecem no centro do botão. Além dos botões, também usei um acelerômetro para controlar a direção do movimento. Quando o smartphone está na horizontal, a projeção do vetor de aceleração da gravidade no eixo 0Y é 0, o que corresponde diretamente ao movimento (veja a figura acima).

Se você levantar o lado esquerdo do smartphone, a projeção será com um sinal de +, que corresponderá ao movimento à direita.

Se você levantar o lado direito, então com um sinal - que corresponderá ao movimento para a esquerda.
O programa lê as leituras do acelerômetro e envia os comandos apropriados para o smartphone que dirige o carro, exibindo o modo nos botões.
SENSORS.READ 1, sx, sy, sz IF (sy<=1)&(sy>-1)&(lrsh) THEN rsh=1 lsh=1 lrsh=0 GR.HIDE cc13 GR.HIDE cc15 GR.SHOW cc17 GR.RENDER BT.write "f" pause 100 ENDIF IF (sy>2)&(rsh) THEN rsh=0 lsh=1 lrsh=1 GR.HIDE cc13 GR.HIDE cc17 GR.SHOW cc15 GR.RENDER BT.write "r" pause 100 ENDIF IF (sy<-2)&(lsh) THEN lsh=0 rsh=1 lrsh=1 GR.HIDE cc17 GR.HIDE cc15 GR.SHOW cc13 GR.RENDER BT.write "l" pause 100 ENDIF
É assim que o controle remoto funciona. A operação do programa de controle de automóveis também sofreu alterações, mas não muito significativas. No futuro, quero complementar o programa com as funções de memorizar comandos e executá-los no modo automático.