Voiture RC simple pour les débutants (Android contrôler via Bluetooth) (10 / 10 étapes)

Étape 10 : logiciel

Le programme a été écrit en 1.01 IDE Arduino.

#include « EEPROM.h »

#define D1 2 / / sens de rotation moteur 1
#define M1 3 / / PWM à gauche moteur
#define D2 4 / / sens de rotation moteur 2
#define 5 M2 / / PWM droite moteur
#define cor 13 / / supplémentaire canal 1
#define autoOFF 2500 / / millisecondes après lequel le robot s’arrête lorsque la connexion

#define cmdL « L » / / UART-commande pour moteur gauche
#define cmdR « R » / / UART-commande pour moteur droite
#define antenne « H » / / UART-commande pour un canal supplémentaire (par exemple Horn)
#define FDMC « F » / / UART-commande pour le fonctionnement de l’EEPROM
#define cmdr « r » / / UART-commande pour l’opération d’EEPROM (Lire)
#define cmdw « w » / / UART-commande pour le fonctionnement de l’EEPROM (écriture)

char incomingByte ; données entrantes

char L_Data [4] ; données du tableau pour moteur gauche
octet L_index = 0 ; index du tableau L
char R_Data [4] ; données du tableau pour moteur droite
octet R_index = 0 ; index du tableau R
char H_Data [1] ; données du tableau pour canal supplémentaire
octet H_index = 0 ; index du tableau H
char F_Data [8] ; données du tableau pour EEPROM
octet F_index = 0 ; index du tableau F
commande de char ; commande

unsigned long currentTime, lastTimeCommand, autoOFF ;

void setup() {}
Serial.Begin(9600) ; initialisation UART
pinMode (corne, sortie) ; canal supplémentaire
pinMode (D1, sortie) ; sortie pour la rotation du moteur
pinMode (D2, sortie) ; sortie pour la rotation du moteur
/ * EEPROM.write(0,255) ;
EEPROM.write(1,255) ;
EEPROM.write(2,255) ;
EEPROM.write(3,255); * /
timer_init() ; minuterie de logiciel d’initialisation
}

void timer_init() {}
uint8_t sw_autoOFF = EEPROM.read(0) ; lire EEPROM « est activé ou ne pas arrêter la voiture lorsque la perte de connexion »
Si (sw_autoOFF == « 1 ») {/ / si activé
char var_Data [3] ;
var_Data [0] = EEPROM.read(1) ;
var_Data [1] = EEPROM.read(2) ;
var_Data [2] = EEPROM.read(3) ;
autoOFF = atoi (var_Data) * 100 ; autoOFF variable ms
}
ElseIf (sw_autoOFF == « 0 ») {}
autoOFF = 999999 ;
}
d’autre if(sw_autoOFF == 255) {}
autoOFF = 2500 ; Si l’EEPROM est vide, la valeur dafault est 2,5 sec
}
currentTime = millis() ; lire que le temps écoulé depuis le démarrage de l’application
}

void loop() {}
Si (Serial.available() > 0) {/ / si a reçu les données de l’UART
incomingByte = Serial.read() ; Raed octets
if(incomingByte == cmdL) {/ / si a reçu les données pour le moteur gauche L
commande = cmdL ; commande en cours
memset(L_Data,0,sizeof(L_Data)) ; effacer le tableau
L_index = 0 ; réinitialiser l’index de tableau
}
d’autre if(incomingByte == cmdR) {/ / si a reçu les données pour le moteur gauche R
commande = capitaine de frégate ;
memset(R_Data,0,sizeof(R_Data)) ;
R_index = 0 ;
}
d’autre if(incomingByte == cmdH) {/ / si a reçu les données pour le canal supplémentaire
commande = antenne ;
memset(H_Data,0,sizeof(H_Data)) ;
H_index = 0 ;
}
d’autre if(incomingByte == cmdF) {/ / si a reçu les données pour op EEPROM
commande = FDMC ;
memset(F_Data,0,sizeof(F_Data)) ;
F_index = 0 ;
}
ElseIf (incomingByte == « \r ») command = « e » ; fin de ligne
ElseIf (incomingByte == « \t ») commande = ' t ' ; fin de ligne pour op EEPROM

Si (commande == cmdL & & incomingByte! = cmdL) {}
L_Data [L_index] = incomingByte ; stocker chaque octet dans le tableau
L_index ++ ; index de tableau incrément
}
ElseIf (commande == cmdR & & incomingByte! = cmdR) {}
R_Data [R_index] = incomingByte ;
R_index ++ ;
}
ElseIf (commande == antenne & & incomingByte! = antenne) {}
H_Data [H_index] = incomingByte ;
H_index ++ ;
}
ElseIf (commande == FDMC & & incomingByte! = FDMC) {}
F_Data [F_index] = incomingByte ;
F_index ++ ;
}
ElseIf (commande == « e ») {/ / si nous prenons la fin de ligne
Control4WD(atoi(L_Data),atoi(R_Data),atoi(H_Data)) ;
Delay(10) ;
}
ElseIf (commande ' t ==') {/ / si nous prenons l’extrémité EEPROM
Flash_Op(F_Data[0],F_Data[1],F_Data[2],F_Data[3],F_Data[4]) ;
}
lastTimeCommand = millis() ; lire que le temps écoulé depuis le démarrage de l’application
}
if(Millis() > = (lastTimeCommand + autoOFF)) {/ / comparer la minuterie actuelle avec la variable lastTimeCommand + autoOFF
Control4WD(0,0,0) ; arrêter la voiture
}
}

void Control4WD (int mLeft, int mRight, cor uint8_t) {}

bool directionL, directionR ; sens de rotation moteur L298N
valueL octet, expert ; PWM M1, M2 (0-255)

Si (mLeft > 0) {}
valueL = mLeft ;
directionL = 0 ;
}
ElseIf (mLeft < 0) {}
valueL = 255 - abs(mLeft) ;
directionL = 1 ;
}
else {}
directionL = 0 ;
valueL = 0 ;
}

Si (mRight > 0) {}
Expert = mRight ;
directionR = 0 ;
}
ElseIf (mRight < 0) {}
Expert = 255 - abs(mRight) ;
directionR = 1 ;
}
else {}
directionR = 0 ;
Expert = 0 ;
}

analogWrite (M1, valueL) ; régler la vitesse du moteur gauche
analogWrite (M2, expert) ; régler la vitesse pour moteur droite
digitalWrite (D1, directionL) ; définir la direction de rotation du moteur gauche
digitalWrite (D2, directionR) ; définir la direction de rotation du moteur droit

digitalWrite (klaxon, klaxon) ; canal supplémentaire
}

void Flash_Op (char FCMD, uint8_t z1, z2 uint8_t, uint8_t z3, z4 uint8_t) {}

if(FCMD == CMdR) {/ / si la lecture de données EEPROM commande
Serial.Print("FData:") ; Envoyer des données de l’EEPROM
Serial.Write(EEPROM.Read(0)) ; lire la valeur de la mémoire avec 0 adresse et imprimez-le à UART
Serial.Write(EEPROM.Read(1)) ;
Serial.Write(EEPROM.Read(2)) ;
Serial.Write(EEPROM.Read(3)) ;
Serial.Print("\r\n") ; marquer la fin de la transmission de données EEPROM
}
d’autre if(FCMD == cmdw) {/ / si écrire de données EEPROM commande
EEPROM.write(0,z1) ; enregistrement de Z1 à un mémoire dont l’adresse 0
EEPROM.write(1,z2) ;
EEPROM.write(2,z3) ;
EEPROM.write(3,z4) ;
timer_init() ; réinitialiser la minuterie
Serial.Print("FWOK\r\n") ; Envoyer un message que les données sont écrites avec succès à EEPROM
}

Le code utilise une bibliothèque de travailler avec mémoire EEPROM AVR. La carte Arduino par USART du module Bluetooth reçoit de données prêt pour le moteur gauche et droit. Tous les calculs de base sont effectuées dans l’application Android.

La structure du projet dans Eclipse, vous pouvez voir sur la capture d’écran ci-dessus.

Vous pouvez télécharger le code source pour l’Arduino et le projet pour Eclipse
Télécharger Application APK pour Android-périphérique

La dernière version du logiciel se trouvent sur cette page vidéo de démonstration du mode volant virtuel (version 1.2 et supérieure) :

PS Désolé pour mon mauvais anglais

Articles Liés

Flip-flop de LED simple pour les débutants

Flip-flop de LED simple pour les débutants

Un circuit de bascule très simple pour les débutantsÉtape 1: Liste des piecesListe des pièces :-LED X2-Résistance : 10K (brun-noir-rouge) X2-Electrolytic capacitor : 100uF X2-Transistors: NPN comme BC108 X 2-Pile 9V avec connecteur-Câble rayé-Maquett
Alarme simple pour les débutants en électronique

Alarme simple pour les débutants en électronique

c'est juste une alarme pour les débutants sur l'électronique à la pratique. Chaque fois que donné d'alimentation il va générer son selon la fréquence pour laquelle il est conçu. La fréquence dépend des valeurs de condensateur et la résistance.Étape 1
Robotique simple pour les débutants !

Robotique simple pour les débutants !

Pour mon tout premier instructable, j'ai décidé de faire quelque chose qui m'avait échappé depuis plusieurs mois sur par où commencer tout à l'heure ;R/C robotique et battlebots.Les composants que j'ai utilisé sont difficiles à trouver maintenant, ma
Capteur couleur LED Arduino simple pour les débutants

Capteur couleur LED Arduino simple pour les débutants

Il y a quelques différents types de capteurs de couleur.Celui qui est utilisé dans ce instructable est un capteur de couleur « réfléchissante » il a un feu rouge feu vert de la source source une source de lumière bleue (un R, G, B LED fonctionnerait)
Faire une appli Android pour contrôler via Bluetooth un Arduino contrôler votre maison par l’intermédiaire de RF, climatisées et dotées de AppInventor

Faire une appli Android pour contrôler via Bluetooth un Arduino contrôler votre maison par l’intermédiaire de RF, climatisées et dotées de AppInventor

Je sais que le titre est tout à fait une bouchée, mais c'est exactement ce que c'est.Quelque temps auparavant, j'ai fait une instructable décrivant un circuit autour d'un atmega328 (ou un « Arduino ») qui était de dissuader les cambrioleurs en simula
Vieille voiture RC piraté : Android contrôler via BT. (directeur d’accéléromètre)

Vieille voiture RC piraté : Android contrôler via BT. (directeur d’accéléromètre)

aujourd'hui, j'ai trouvé ma très vieille voiture rc, j'ai un peu de tuning...:)Programme de contrôle créé avec inventor app 2.Direction avec l'accéléromètre du téléphone, se déplaçant avec un curseur.Malheureusement le curseur trop du détroit, mais p
Un robot très simple pour les débutants

Un robot très simple pour les débutants

Cette instructable vous montre comment faire robot très simple. Il détecte les obstacles et éviter. C'est le grand projet pour quelqu'un qui est nouveau pour arduino et veulent faire le premier robot.Pourquoi robot ?Parce que c'est excellent moyen d'
Arduino et LM35 à base de contrôleur de température pour les débutants

Arduino et LM35 à base de contrôleur de température pour les débutants

IntroductionVérifiez la température de votre propre système de surveillance à l'aide du capteur de température analogique Arduino et LM35. Il s'agit d'un projet de bricolage très simple pour les débutants de l'Arduino. Toutes les étapes et les exigen
Simple clic on/off de votre mobile Android en utilisant Arduino et pfodApp. Arduino pour les débutants

Simple clic on/off de votre mobile Android en utilisant Arduino et pfodApp. Arduino pour les débutants

IntroductionCe instructable montre comment vous pouvez passer un Arduino sur et en dehors de la sortie de votre mobile Android avec un simple clic sur l'icône pfodApp . Ajouter un relais conduit par cette sortie pour passer le matériel réel. Aucun co
Création d’applications Android – pour les débutants complets

Création d’applications Android – pour les débutants complets

Si vous possédez un téléphone AndroidTM ou tablette et vous êtes le genre de personne qui aime faire les choses pour lui/elle-même (sinon pourquoi vous chercherait à une Instructable?), vous avez probablement pensé à découvrir comment développer vos
Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Mise à jour : un utilisateur invité pour sous-menu soutien. pfodApp a toujours soutenu des sous-menus, mais j'ai ajouté des sous-menus à pfodDesigner. L'instructable Design A Custom Menu System vous montre comment utiliser pfodDesigner pour générer u
Concevoir un Custom Menu System--Android/Arduino de menus pour les débutants--absolument aucune programmation requise

Concevoir un Custom Menu System--Android/Arduino de menus pour les débutants--absolument aucune programmation requise

IntroductionCette instructable montre comment utiliser la libre pfodDesigner disponible sur GooglePlay pour concevoir un système de menus Android avec des sous-menus pour périphériques compatibles Arduino.Le tutoriel est adapté aux débutants. Aucune
BRICOLAGE domotique pour les débutants.  Absolument aucun codage ou soudure requise.  Android/Arduino pour allumage et extinction de choses

BRICOLAGE domotique pour les débutants. Absolument aucun codage ou soudure requise. Android/Arduino pour allumage et extinction de choses

Cette instructiable a pour but le débutant absolu. Si vous pouvez gérer un couteau bien aiguisé sans couper vos doigts vous peuvent faire et personnaliser ce contrôleur domotique.Ces instructions sont également en ligne à www.pfod.com.au sous Android
Comment changer un Arduino sous et hors tension de sortie de votre mobile Android.  Arduino pour les débutants

Comment changer un Arduino sous et hors tension de sortie de votre mobile Android. Arduino pour les débutants

Mise à jour : Voir Andriod/Arduino pour débutants - Design Custom Andriod menus pour activer et désactiver les sorties de l'Arduino. Absolument aucun programmation requis pour une alternative qui ne nécessite aucune programmation à tous.Comment les d