Vous comprenez, "expliqua le rédacteur en chef," que cela devrait être divertissant, frais, plein d'aventures intéressantes ... pour que le lecteur ne puisse pas se détacher.
I. Ilf, E. Petrov "Comment a été créé Robinson" .
Débuter avec Arduino, comme avec n'importe quelle autre plate-forme logicielle ou matérielle, est toujours plus intéressant à partir d'un vrai projet. Dans le même temps, les programmeurs écrivent du code qui affiche "Bonjour, monde", les Arduinistes clignotent une LED. Et tout le monde est heureux comme des enfants.
J'ai décidé de commencer par un projet avancé, notamment avec l'espoir secret d'arracher la jeune génération à Counter-Strike (échoué).
Comme vous pouvez le deviner d'après le nom RoboCar4W, le premier projet était une voiture robot à quatre roues. En commençant le travail, j'avais déjà une expérience en programmation, j'ai déjà su souder pendant longtemps, mais je ne connaissais même pas du tout les brochages Arduino et je n'ai pas lu du tout la documentation. J'ai étudié toute la sagesse au cours du jeu et Google m'a aidé.
Le projet lui-même n'étant fondamentalement pas nouveau, de telles descriptions dans le réseau suffisent, tous les composants sont connus, aucune surprise n'était attendue. Par conséquent, l'idée a été formulée dans les termes les plus généraux et l'objectif principal était de vous immerger dans le "monde des choses" en utilisant Arduino, comme plate-forme de prototypage rapide. Dans cet opus, peut-être que quelqu'un se reconnaît au tout début du voyage.
Tout le matériel a été acheté sur ebay, et d'après ma propre expérience, je veux dire qu'il est plus facile d'acheter un kit de démarrage tout de suite (recherchez-le dans les termes du kit de démarrage Arduino), plutôt que de l'assembler en détail. Oui, et tous se rejoignent en même temps. Il a été décidé de ne pas jouer, d'acheter un châssis normal, des roues normales, des moteurs normaux, pour que ce soit "cher".
Le secret principal des achats réussis sur eBay est d'acheter auprès des meilleurs vendeurs et de lire attentivement la description du produit. Il existe de nombreux articles à ce sujet sur Internet.
Quelle carte Arduino choisir?
J'ai pris Arduino UNO, beaucoup de projets avec des descriptions pour ça. Mais maintenant, je prendrais l'Arduino Mega 2560, il a plus de sorties numériques et analogiques et une compatibilité totale sur les projets avec UNO.
Description générale du projet
Dans le monde du développement logiciel, cela est également appelé «configuration système».
L'idée du projet était la suivante. La première version de la machine robot appelée RoboCar4W devrait effectuer des actions simples:
- avancer, reculer, effectuer des virages
- mesurer la distance aux obstacles
- être capable de contourner automatiquement les obstacles devant.
La deuxième version de la machine doit être contrôlée manuellement via Bluetooth depuis un téléphone Android.
Pour que vous ayez mieux travaillé ici, c'est le projet RoboCar4W final assemblé (ici sans Bluetooth).

Voici une vidéo des essais en mer.
Dans la première vidéo, RoboCar4W roule automatiquement en évitant les obstacles sur deux versions différentes du «firmware», c'est-à-dire esquissez donc si quelqu'un est le plus vif et a remarqué que le comportement du robot dans différents épisodes est légèrement différent.

Dans la deuxième vidéo, RoboCar4W se déplace à l'aide de commandes transmises par le «conducteur» via Bluetooth à partir d'un téléphone mobile sous Android. «Bluetooth RC Car» est installé sur le téléphone. De plus, s'il y a un obstacle à l'avant, le robot s'arrête, c'est-à-dire éperonner quelque chose ne fonctionnera pas (cependant, il y a un bouton "secret" qui désactive le mode sans échec).

Dans la troisième vidéo, RoboCar4W montre un programme de mouvement de démonstration préprogrammé avec tours. Le programme de démonstration est activé sur commande à partir du même téléphone mobile Android. Le robot roule juste un moment et fait des virages.

Algorithme de contrôle de mouvement
C’est une erreur d’appeler notre méthode «algorithme d’évitement d’obstacles» ou «détection de chemin». Ce sont des disciplines mathématiques distinctes, des mathématiques pures. Si vous aimez vraiment, vraiment les mathématiques, alors google ces phrases, vous aurez la lecture pendant six mois.
En attendant, nous nous intéressons beaucoup plus facilement aux choses. Par conséquent, nous l'appellerons simplement - l'algorithme de contrôle de mouvement d'un robot à 4 roues. Bien sûr, nous parlons de contrôle automatique sans intervention humaine.
Voici cet algorithme simple écrit en mots, pour des algorithmes plus complexes il faut (que vous le vouliez ou non) composer des diagrammes.
Maintenant, regardez en même temps le code source de l'esquisse RoboCar4W-1.ino .
- Nous mesurons la distance à l'obstacle en face.
- Si cette distance mesurée est inférieure à la valeur
DST_TRH_BACK
(abréviation de seuil de distance), alors on s'arrête et on DST_TRH_BACK
en tournant. Le sens de rotation est choisi comme suit: si vous avez précédemment tourné à gauche, tournez à droite et vice versa. - Si la distance mesurée est supérieure à
DST_TRH_BACK
, mais inférieure à DST_TRH_TURN
, DST_TRH_TURN
simplement pivoter. Le sens de rotation est choisi au hasard. - Si vous êtes loin de l'obstacle, alors allez-y.
- Nous répétons encore et encore.
Qu'est-ce qui est bien d'avoir 4 roues motrices et une transmission intégrale? Nous pouvons effectuer (programmer) plusieurs types de virages:
- Rotation douce. Toutes les roues tournent, mais les roues d'un côté tournent plus vite.
- Un virage serré. Les roues ne tournent que d'un côté.
- Demi-tour en place. Comme un tracteur, les roues tournent d'un côté vers l'arrière et de l'autre vers l'avant.
Dans la deuxième version du programme, lors du contrôle à partir d'un téléphone Android, le mode sans échec, lorsque le robot essaie d'empêcher les collisions frontales, peut être désactivé si le programme est appuyé deux fois

et rallumé en appuyant une fois.
Remarque importante . Toute la logique est sous le contrôle d'Arduino. Android agit ici comme une console de jeu (sans cervelle) à partir de la console, sa tâche consiste à transmettre stupidement les pressions de boutons (c'est-à-dire les commandes) via Bluetooth à l'Arduino RoboCar4W.
Composants
Initialement, la machine comprenait un servomoteur qui faisait tourner le télémètre à ultrasons d'un certain angle pour les mesures dans trois directions. Mais pendant les tests, en raison d'une manipulation imprudente, le servo a grillé, alors maintenant le capteur de distance est simplement fixé rigidement devant le boîtier.
Il n'y a pas de doublure argentée, mais le croquis est devenu un peu plus facile.
Pour l'avenir, achetez le servo le plus simple et le moins cher, une puissance spéciale, une vitesse et une précision de rotation à un angle donné ne sont pas nécessaires, et il est assez facile de désactiver un servo, comme il s'est avéré. SG90 vaut 2 $ est un bon ajustement.
Ainsi, les composants du projet RoboCar4W, une description en anglais est donnée pour faciliter la recherche sur ebay et similaires:
- Arduino UNO R3
- Châssis prêt à l'emploi 4 roues motrices Mobile Robot Platform Smart Car Châssis Arduino Compatible
- Moteurs à courant continu avec rotation dans les deux sens - 4 pcs.
- Roues - 4 pièces
- Carte de commande de 4 moteurs à courant continu Motor Drive Shield L293D
- Mesureur de distance à ultrasons HC-SR04 Capteur de mesure de distance à module ultrasonique
- Piles Ni-MH 1,2 V - 8 pièces.
- Porte-boîte en plastique pour piles, Porte-boîte à piles 4 piles AA - 2 pcs.
- Type de batterie "Krona" 8,4 V - 1 pc.
- Interrupteur à bascule en option - interrupteur d'alimentation
Le châssis, les moteurs à courant continu et les roues ont été achetés immédiatement dans le kit et même avec les instructions de montage.
Brochage
Les entrées analogiques peuvent être utilisées comme broches numériques des ports d'E / S. Les broches Arduino correspondant aux entrées analogiques sont numérotées de 14 à 19. Cela s'applique uniquement aux broches Arduino, pas aux numéros de broches physiques du microcontrôleur Atmega.
Vous n'avez pas à dessiner, vous pouvez simplement tout mettre dans un tableau. Je l'ai fait de cette façon.

Les broches D4, D7, D8, D12 seront occupées si des moteurs CC ou des moteurs pas à pas sont utilisés.
Les broches D9 (commande Servo # 1), D10 (commande Servo # 2) seront utilisées uniquement si des servomoteurs sont utilisés.
La broche Arduino n'occupe pas les broches Arduino pour contrôler le Motor Drive Shield L293D.
Les broches d'alimentation 3,3 V, 5 V et la masse sont dupliquées sur le blindage de l'entraînement du moteur en quantités suffisantes. Par conséquent, il n'est pas nécessaire de s'inquiéter de leur pénurie.
Si vous voulez toujours dessiner magnifiquement, le programme gratuit Fritzing vous aidera.
La nutrition
C'est le deuxième point très important. Cela dépend beaucoup de la nutrition. Par exemple, un servomoteur qui tourne l'arbre à un angle donné commence à consommer beaucoup de courant. Dans le même temps, si le servo est alimenté par un Arduino 5 V, il y a alors un "abaissement" de la tension et le reste du circuit commence à échouer, et l'Arduino peut même redémarrer en même temps.
Dans tous les cas, si vous utilisez des moteurs dans l'engin, un bouclier d'entraînement de moteur est nécessaire (ou un circuit similaire).
Nous avons donc 4 moteurs CC, un servo variateur, la carte Arduino elle-même et plusieurs capteurs. Les moteurs sont les plus gourmands, mais les capteurs peuvent être alimentés avec succès à partir des connecteurs de la carte Arduino elle-même, donc tout est simple avec eux. Pour plus de commodité, j'ai réduit l'ensemble de l'économie dans une seule table.
| Tension recommandée ou typique. Consommation actuelle | Tension maximale | Ce qui est prévu pour nourrir | Remarques |
---|
Arduino UNO R3 Board | 7 - 12V, 200mA (moyenne) | 6 - 20 | "Krone 9V" Li-ion 650mAh, 8.4V | Connecteur central |
Servomoteur MG-995 | 5-6 V, 0,1 - 0,3A (crête) | 4,8 - 7,2 | Piles (5) pcs. Ni-Mh 1,2 V = 6 V | Nourriture uniquement d'une source distincte. Si vous alimentez Arduino, tout échouera. 4 batteries de batterie Ni-Mh * 1,2 V = 4,8 V n'est pas suffisant. Certains soutiennent que ce servo ne devrait pas être utilisé à 6 volts seulement 4,8 |
Moteurs à courant continu (4 pièces) | 6 - 8V, courant de 70mA à 250mA | 3 - 12 | piles (5 + 3) pcs. Ni-Mh 1,2 V = 9,6 V | Vous ne pourrez pas démarrer les moteurs normalement à partir d'une batterie 9V, alors ne perdez même pas de temps (et de batteries)! |
Bouclier d'entraînement de moteur L293D | non requis | 4,5 - 36 | non requis | |
Module Bluetooth HC-0506 | 3,3 V, 50 mA | 1,8—3,6 | Avec carte Arduino pin 3.3V | |
Télémètre à ultrasons HC-SR04 | 5 V, 2 mA | 5 | Avec carte Arduino pin 5V | |
Je n'avais pas de convertisseur de tension DC / DC. La Krona 9V n'était pas une très bonne source d'énergie, je l'avais déjà.
Mais j'ai refusé d'utiliser des batteries Li-ion haute capacité. Premièrement, en raison du coût élevé, et deuxièmement, dans les achats en ligne chinois, il est facile de tomber sur un faux. Plus précisément, pas «facile», mais «toujours». De plus, le Li-ion nécessite une manipulation spéciale et n'est pas sûr.
Donc, comme nous le voyons dans le tableau, nous avons besoin de 3 sources d'alimentation indépendantes:
- Pour carte Arduino et capteurs.
- Pour servomoteur.
- Pour 4 moteurs DC.
Où puis-je obtenir autant? Dans tous les cas, la carte Arduino elle-même doit être alimentée par une source distincte, comme lorsque la tension «s'affaisse», par exemple, lors de la mise sous tension des moteurs, la carte peut redémarrer ou simplement échouer. Ici, nous utilisons la batterie du facteur de forme Krona 9V, et le connecteur qui sera connecté à l'Arduino devrait être avec un «plus au centre».
Pour un servomoteur et 4 moteurs à courant continu, vous pouvez le faire avec une seule source d'alimentation. Le seul problème est que le servomoteur est conçu pour une tension de 5-6V (maximum 7.2V) et un courant de 100-300mA (crête), et les moteurs à courant continu ont besoin de 6-8V (maximum 12V) et un courant de 250mA.
Pour résoudre le problème, il existe des convertisseurs DC-DC, mais je n'en avais pas. En conséquence, j'ai appliqué mon schéma de câblage "propriétaire" (sans aucun circuit électronique abaisseur, uniquement une tension et un courant respectueux de l'environnement!): J'ai connecté 8 pièces. Batteries 1,2 V en série et prises au bon endroit, comme indiqué sur le schéma.

6V est allé au servomoteur et 9,6 aux moteurs à courant continu. Il est clair que les batteries 1 à 5 verront leur charge augmenter.
Pour contrôler les servomoteurs et les moteurs à courant continu, j'ai utilisé un bouclier d'entraînement de moteur à 4 canaux basé sur la puce L293D.
Assemblage
L'assemblage du châssis fini est un petit problème. Mais ne pensez pas que sans dopage, vous obtiendrez tout de suite. Par conséquent, préparez les fichiers.


Il n'est pas possible de connecter plusieurs moteurs normalement, un servomoteur ou un moteur pas à pas directement à l'Arduino. Depuis les broches (conclusions) de l'Arduino sont à faible courant. Pour résoudre le problème, il existe un module de commande d'entraînement supplémentaire - Motor Drive Shield basé sur la puce L293D, qui est l'une des puces les plus courantes conçues à cet effet. La puce L293D est également connue sous le nom de H-Bridge.
J'ai utilisé une carte qui fournit 4 canaux pour se connecter sur deux puces L293D et un registre à décalage. Acheté sur eBay pour 5 $.
Cette carte de module de commande de variateur a les spécifications suivantes.
- Blindage d'entraînement de moteur L293D compatible avec Arduino Mega 1280 et 2560, UNO, Duemilanove, Diecimila
- Contrôle 4 canaux
- moteurs alimentés de 4,5 V à 36 V
- courant de charge admissible 600mA par canal, courant de crête - 1,2A
- protection contre la surchauffe
- 2 interfaces avec une minuterie Arduino exacte (il n'y aura pas de "gigue") pour connecter les servomoteurs à 5V, si la tension d'alimentation doit être plus élevée, alors la connexion d'alimentation doit être refaite comme décrit ci-dessous
- 4 moteurs collecteurs CC bidirectionnels ou 2 moteurs pas à pas et 2 servomoteurs peuvent être commandés simultanément
- 4 moteurs CC bidirectionnels sont chacun connectés à un bus 8 bits pour une sélection de vitesse individuelle
- connexion jusqu'à 2 entraînements pas à pas (unipolaires ou bipolaires), avec une bobine, une double bobine ou des étapes alternées
- connecteur pour connecter une source externe pour l'alimentation séparée de la logique de commande et des moteurs
- Bouton RESET Arduino
- La bibliothèque Adafruit AFMotor est utilisée pour la gestion.
Motor Drive Shield a besoin d'un peu de raffinement pour que vous puissiez connecter quoi que ce soit après. J'ai soudé les connecteurs nécessaires sur le dessus, c'est ce qui s'est passé.

Les moteurs peuvent être connectés à une alimentation supplémentaire par rapport à la carte Arduino. Je recommande uniquement cette méthode de connexion. Pour ce faire, retirez, ouvrez le cavalier, comme indiqué sur l'image.

Dans ce cas, l'Arduino est alimenté et les moteurs sont alimentés indépendamment les uns des autres.
La LED sur le bouclier du moteur s'allume lorsqu'il y a de l'énergie pour les moteurs, si elle n'est pas allumée, alors les moteurs ne fonctionneront pas.
Nouveau problème.
La position du cavalier d'alimentation ne s'applique pas aux servos, ils seront toujours alimentés par 5V Arduino. Étant donné que les servomoteurs consomment généralement beaucoup de courant et si la puissance est insuffisante, alors l'ensemble de l'appareil commence à tomber en panne, dans le «meilleur» cas, seul le servo variateur tombera en panne - il ne tournera pas à l'angle défini, ou tout le temps avant chaque virage tourner d'abord à 0 degrés, et seulement ensuite à un angle donné (et si vous pouvez suivre). Par conséquent, je recommande d'alimenter le servo également à partir d'une source d'alimentation supplémentaire. Pour ce faire, vous devrez refaire légèrement le schéma de connexion: mordre le fil plus (généralement rouge) du connecteur standard et le connecter directement au plus de la source d'alimentation.

Lors de la connexion d'un blindage de moteur, les broches analogiques ne sont pas utilisées. Les broches numériques 2, 13 ne sont pas utilisées.
Les broches suivantes sont utilisées uniquement si les moteurs CC ou les moteurs pas à pas correspondants sont connectés et utilisés:
- D11: Moteur DC # 1 / Stepper # 1 (activation et contrôle de vitesse)
- D3: Moteur DC # 2 / Stepper # 1 (activation et contrôle de vitesse)
- D5: Moteur DC # 3 / Stepper # 2 (activation et contrôle de vitesse)
- D6: Moteur DC # 4 / Stepper # 2 (activation et contrôle de vitesse)
Ces broches seront occupées si des DC / steppers sont utilisés: D4, D7, D8, D12.
Les broches suivantes ne seront occupées que si les servomoteurs appropriés sont utilisés:
- D9: Contrôle du servo # 1
- D10: Commande servo # 2

Pour commencer avec Motor Drive Shield, vous devez télécharger et installer la bibliothèque Adafruit AFMotor .
Exemple de code pour contrôler les moteurs:
#include <AFMotor.h> // Adafruit #include <Servo.h> // AF_DCMotor motor(1); // , DC Motor Shiled , , frequency Servo servo; // servo.attach(10); // 9 10 ( Motor Shiled) motor.setSpeed(speed); // DC 0 () 255 ( ) motor.run(RELEASE); // DC motor.run(FORWARD); // DC motor.run(BACKWARD); // DC servo.write(90); // 90 .
Le moteur à courant continu a commencé à tourner uniquement en indiquant une vitesse supérieure à 100, sinon moins, il bourdonne juste. Vous devrez déterminer expérimentalement la vitesse minimale de votre moteur.
Pour les moteurs connectés à M1 et M2, vous pouvez régler la fréquence: MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, MOTOR12_1KHZ. La vitesse de rotation la plus élevée est atteinte à 64 KHz, cette fréquence sera entendue, la fréquence et la vitesse inférieures à 1 KHz mais utilisent également moins d'énergie. Les moteurs 3 et 4 fonctionnent toujours à 1 KHz; les autres valeurs sont ignorées. La valeur par défaut est 1 kHz partout.
Après cela, il est nécessaire d'effectuer un test des moteurs. Le croquis pour les tests peut être pris ici . Au début de l'esquisse, changez le numéro de moteur sur une ligne (ou en lignes) du type:
AF_DCMotor motor(…);
Une esquisse fait tourner le moteur pendant un certain temps vers l'avant le long du mouvement du robot, puis vers l'arrière. Regardez attentivement pour voir si le moteur tourne dans cette direction et changez la polarité de la connexion si nécessaire.
Nous connectons le module ultrasonique du télémètre à ultrasons HC-SR04. Brochage:
- Vcc
- Déclenchement (T)
- Écho (r)
- GND
Le temps passé par le télémètre à ultrasons sur les mesures (déterminé empiriquement):
- 240 ms maximum si la distance est trop longue (hors plage)
- au moins 1 ms si la distance est trop courte
- une distance de 1,5 m est déterminée en environ 10 ms

Un télémètre à ultrasons, en raison de sa nature physique, et non pas parce que la Chine, dans certains cas, détermine mal la distance à un obstacle:
- si l'obstacle est de forme complexe, les ultrasons sont réfléchis sous différents angles et le capteur est erroné,
- les ultrasons sont parfaitement absorbés (c'est-à-dire non réfléchis) par les meubles rembourrés ou les jouets, et le capteur pense qu'il n'y a rien devant.
En d'autres termes, pour un télémètre à ultrasons, il serait idéalement excellent si tous les obstacles étaient sous la forme d'un plan solide perpendiculaire à la direction du rayonnement ultrasonore.
Certains problèmes peuvent être résolus avec un capteur de distance infrarouge. Mais ce n'est pas parfait non plus:
- petite portée maximale par rapport à l'échographie: 0,3-0,8 m contre 4 m
- grande distance minimale par rapport à l'échographie: 10 cm vs 2 cm
- dépendance de la sensibilité du capteur à l'éclairage global.
Bien que si vous installez ces télémètres par paire, l'efficacité de leur travail augmenterait considérablement.
Connectez Bluetooth HC-05
Comme vous pouvez le voir sur la fiche technique, les broches principales du HC-05 «nu»:
- Transmission TX (broche 1)
- Réception RX (broche 2)
- Alimentation 3,3 V (broche 12) 3,3 V
- Masse GND (broche 13)
- Indicateur de mode PIO8 (broche 31)
- État de connexion PIO9 (broche 32), si la connexion est établie, la sortie sera élevée
- PIO11 (broche 34) pour activer le mode de commande AT
Notre module est soudé à la carte de répartition / base, où il y a déjà un diviseur de tension, il a donc une plage de tension de travail de 3,3 V à 6 V.
Nous connectons notre module Bluetooth:
- Arduino (TX) - (RX) HC-05
- Arduino (RX) - (TX) HC-05
- Arduino (+ 5V) - (VCC) Bluetooth
- Arduino (GND) - (GND) Bluetooth
- LED, les broches KEY ne sont pas utilisées
Une fois que le module Bluetooth HC-05 est alimenté, le voyant DEL doit clignoter, ce qui signifie que le Bluetooth fonctionne.
Activez le Bluetooth sur le mobile, recherchez l'appareil portant le nom HC-05 et connectez-vous, mot de passe 1234.
Pour les tests, remplissez un simple croquis en Arduino:
int count = 0; void setup() { Serial.begin(9600); Serial.println("Test Arduino + Bluetooth. http://localhost"); } void loop() { count++; Serial.print("Count = "); Serial.println(count); delay(1000); }
Sur le téléphone Android, installez le terminal Bluetooth. Nous sommes connectés à l'appareil HC-05 et nous observons sur l'écran du téléphone des lignes rampantes avec un compteur croissant.
Pour que le module puisse recevoir des commandes AT, vous devez le mettre dans le mode approprié - pour cela, vous devez définir la sortie KEY (PIO11) sur la valeur logique 1. Sur certaines cartes Breakout / Base Board, au lieu de la sortie KEY, il y a une sortie EN (ENABLE), qui peut ou non être soudé à la broche sur la puce elle-même. Cela s'applique uniquement aux puces HC05. C'est juste que ma sortie de borne EN n'est soudée nulle part. Par conséquent, il peut être soudé avec un fil séparé à la borne KEY (PIO11) de la puce. Ou, pendant le fonctionnement, pour mettre le HC05 en mode de commande AT, court-circuitez la sortie de la puce KEY (PIO11) sur la sortie d'alimentation Vcc pendant quelques secondes. Pour HC06, la broche KEY n'est pas nécessaire.
Logiciels
Remarque Avant chaque téléchargement du programme sur Arduino, assurez-vous que le module Bluetooth n'est pas connecté à l'Arduino. Cela entraînera des problèmes de remplissage d'esquisse. Débranchez simplement l'alimentation du module Bluetooth ou des fils reliant les broches du module Arduino et RX, TX.
Au début de l'esquisse, modifiez les numéros de moteur dans les lignes du type:
AF_DCMotor motor(…);
Esquisse pour le mode automatique avec téléchargement d'évitement d'obstacles ici .
Si vous remplacez la chaîne
byte debug = 0;
sur
byte debug = 10;
Cela activera le mode de débogage.
En mode débogage, le RoboCar4W ne roulera pas vraiment ni ne roulera. Au lieu de cela, activez le moniteur de port série et vous y verrez comment il "conduit" virtuellement. Au lieu d'un véritable entraînement vers l'avant, la chaîne «Forward» sera écrite sur le moniteur du port série, au lieu d'être inversée avec un virage à gauche, «Turn Back L (eft)», etc. Le capteur de distance à ultrasons ne fait rien non plus, au lieu de cela les distances aux obstacles sont générées par programme et de manière aléatoire.
Ce mode de débogage est pratique si vous changez l'algorithme de mouvement et au lieu d'attraper une machine à écrire dans la pièce, vérifiez tout au ralenti.
Croquis Bluetooth pour le contrôle manuel à télécharger ici . L'esquisse n'a pas de mode de débogage, car tout y est transparent. Vous appuyez sur le bouton - le robot s'en va.
Programme pour Adnroid Bluetooth RC Car .
Eh bien, c'est tout! Bon voyage!
