Dans deux articles précédents, j'ai parlé de l'utilisation d'un smartphone pour contrôler une petite voiture, soit directement par la voix, soit en utilisant un autre smartphone Bluetooth. Mais le contrôle était primitif - une commande a été donnée, la voiture a exécuté une commande, s'est arrêtée et a attendu la commande suivante. Cela était dû à la vitesse élevée du véhicule pour les conditions intérieures (environ 1,2 m / s), ainsi que la longue durée de la commande et l'impossibilité d'intervenir rapidement dans le mouvement à l'aide du menu. Même la télécommande standard ne permettait pas le contrôle. Dans la nouvelle version de la télécommande avec une interface graphique, j'ai décidé d'utiliser PWM pour régler la vitesse et simuler la direction.

L'image montre la machine que le smartphone contrôle, et en dessous du smartphone avec un programme de télécommande Bluetooth fonctionnel.
En haut de l'écran se trouve un curseur (cercle vert), déplacé avec votre doigt.

Lorsque vous retirez votre doigt de l'écran, la distance relative du curseur au bord gauche de l'écran est transmise au smartphone de contrôle, où la modulation latitudinale du signal d'impulsion est formée.
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
Le plus petit rapport cyclique du signal est de 20%, le plus grand est de 80%. La fréquence théorique possible est de 10 Hz. En fait, probablement environ 4 - 5 Hz, car les signaux de modulation vont dans le flux général de commandes et certains d'entre eux ont également un retard. Par conséquent, avec un faible rapport cyclique, les vibrations sont clairement visibles.
Deux boutons verts - haut en avant, bas du dos. Bouton rouge droit - immobile. Deux boutons blancs - arrêtent les programmes sur la télécommande et sur la machine à écrire. Au bas de l'écran se trouvent trois boutons violets pour sélectionner la direction du mouvement vers la gauche, la droite et la droite. À
Lorsque le mode correspondant est activé, un cercle d'un diamètre plus petit et de la même couleur, mais plus sombre, apparaît au centre du bouton. En plus des boutons, j'ai également utilisé un accéléromètre pour contrôler la direction du mouvement. Lorsque le smartphone est horizontal, la projection du vecteur d'accélération de la gravité sur l'axe 0Y est 0, ce qui correspond directement au mouvement (voir la figure ci-dessus).

Si vous soulevez le côté gauche du smartphone, la projection sera avec un signe +, qui correspondra au mouvement vers la droite.

Si vous soulevez le côté droit, alors avec un signe - cela correspondra au mouvement vers la gauche.
Le programme lit les lectures de l'accéléromètre et envoie les commandes appropriées au smartphone conduisant la voiture, affichant le mode sur les boutons.
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
Voici comment fonctionne la télécommande. Le fonctionnement du programme de contrôle des voitures a également subi des changements, mais pas très importants. À l'avenir, je veux compléter le programme avec les fonctions de mémorisation des commandes et de les exécuter en mode automatique.