Boom et pince bot (14 / 15 étapes)

Étape 14 : L’intégralité du Code pour le pilote de robot

/ * Bot Bluetooth Boom-pince. But dans la vie... Fait suite à vos commandes envoyées comme par magie dans l’air ! Ou à partir de USB:) Rédigé par Scott Beasley - 2015 gratuit pour utiliser ou modifier. Profitez. * / #include / / divers temps retards utilisés pour conduire et servo #define TURNDELAY 475 #define TURNDELAY45 235 / / contrôleur de servo Pololu commandes #define SETSPEED 0 x 01 #define SETPOS 0 x 04 / * zone Globals. * / / / Créer les objets de servo moteur, pour s’interfacer avec SoftwareSerial Serial_servo (10, 11) ; SoftwareSerial Serial_motors (10, 12) ; void configuration () {/ / changer les vitesses de transfert ici si différente de celle sous Serial.begin (9600); / / connexion Bluethooth Serial_servo.begin (9600) ; Serial_motors.Begin (19200) ; cesser (de) ; set_servo_speed (0, 10) ; La valeur de la set_servo_speed de vitesse de mouvement servo (1, 10) ; les faire bouger un peu plus lisse (de home_boom) ; home_gripper () ; retard (500) ; } void boucle () {commande octets = 0, val = 0; / / besoin ce qui suit à rester intact pendant la vie de la / / session alors qu’ils sont faits 'statiques'. Cela nous empêche de / / le devoir de les avoir comme globals statique octet dist = 1 ; Commencez par court déplace à vitesse statique octets = 1 ; Vitesse lente octet statique speed_offset = 40 ; turn_style statique octets = 1 ; et avec virages durs octet statique boom_val = 60 ; gripper_val statique octets = 60 ; Si (Serial.available () > 0) {/ / lire la commande la commande octets entrants = Serial.read ();} interrupteur (commande) {case "w": go_forward (speed_offset); //Serial.println (« Going Forward"); if (dist == 1) {retard (750); halt ();} ElseIf (dist == 2) {retard (1250); halt ();} break ; case"z": go_backward (speed_offset); //Serial.println (« va vers l’arrière"); if (dist == 1) {retarder (750); mettre fin ();} ElseIf (dist == 2) {retarder (1250); mettre fin ();} break ; case 'a' : go_left (speed_offset, turn_style) ; retard (TURNDELAY) ; cesser (de) ; Serial.println (« tournant gauche") ; rupture ; de cas ': go_right (speed_offset, turn_style) ; retard (TURNDELAY) ; cesser (de) ; Serial.println ("droit de tourner") ; rupture ; case « q »: go_left (speed_offset, turn_style) ; retard (TURNDELAY45) ; cesser (de) ; Serial.println (« tournant gauche") ; rupture ; Case « e »: go_right (speed_offset, turn_style) ; retard (TURNDELAY45) ; cesser (de) ; Serial.println ("droit de tourner") ; rupture ; case « h »: mettre un terme () ; Serial.println ("arrêter") ; rupture ; cas ' >': / / mouvement de pince X envoie servo la valeur val = Serial.read () ; gripper_val = val ; Nous limitons la valeur réelle movemovent limites de l’installation set_gripper (val) ; Serial.println ("GripperX") ; rupture ; cas ' ^': / / mouvement de pince Y envoie servo la valeur val = Serial.read () ; boom_val = val ; Nous limitons la valeur réelle movemovent limites de l’installation set_boom (val) ; Serial.println ("GripperY") ; rupture ; case « c »: gripper_val = 60 ; boom_val = 60 ; home_boom () ; home_gripper () ; Serial.println ("GripperHome") ; rupture ; case « v »: / / définir la spped le bot se déplace ; 1 = lent, 3 = le plus rapide = Serial.read () ; Si (vitesse == 1) {speed_offset = 40; / / Slow} ElseIf (vitesse == 2) {speed_offset = 20; / / Med} ElseIf (vitesse == 3) {speed_offset = 0; / / Fast!} //Serial.println ("Set speed") ; rupture ; affaire aurait ": / / définir combien de temps le bot se déplace ; 1 = court, moyen 2, / / 3 = dist continu = Serial.read () ; Serial.println ("set de distance de déplacement") ; rupture ; affaire ' t ': / / définit la façon dont le bot fait tour à tour, une roue (doux) ou deux turn_style (dur) = Serial.read () ; Serial.println ("style tour") ; rupture ; cas « + »: / / vitesse réglée sur téléphone Vitesse ++ ; Si (vitesse > = 4) Vitesse = 1 ; Si (vitesse == 1) {speed_offset = 40; / / Slow} ElseIf (vitesse == 2) {speed_offset = 20; / / Med} ElseIf (vitesse == 3) {speed_offset = 0; / / Fast
! } break ; cas '-': / / Dist déplacé de téléphone dist ++ ; Si (dist > = 4) dist = 1 ; Serial.println ("set de distance de déplacement") ; rupture ; affaire «, »: / / pince ouverte de téléphone gripper_val += 10 ; Si (gripper_val > = 179) gripper_val = 179 ; set_gripper (gripper_val) ; Serial.println ("set de pinces") ; rupture ; cas '.': / / pince étroite de téléphone gripper_val-= 10 ; Si (gripper_val < = 0) gripper_val = 0 ; set_gripper (gripper_val) ; Serial.println ("set de pinces") ; rupture ; case « 0 »: / / basse-boom du téléphone boom_val += 10 ; Si (boom_val > = 179) boom_val = 179 ; set_boom (boom_val) ; Serial.println ("Boom set") ; rupture ; affaire « 1 »: / / Raise boom du téléphone boom_val-= 10 ; Si (boom_val < = 0) boom_val = 0 ; set_boom (boom_val) ; Serial.println ("Boom set") ; rupture ; 255-affaire: / / envoyé après pince toutes les commandes Serial.flush () ; rupture ; } Serial.flush () ; Delay(125) ; } void go_forward (byte speed_offset) {//Serial.println ("aller de l’avant...") ; Serial_motors.Write ((byte) 1 + speed_offset) ; Serial_motors.Write ((byte) 128 + speed_offset) ; } void go_backward (byte speed_offset) {//Serial.println ("en reculant...") ; Serial_motors.Write ((byte) 127 - speed_offset) ; Serial_motors.Write ((byte) 255 - speed_offset) ; } void go_left (speed_offset octets, turn_style octets) {//Serial.println ("Going gauche...") ; Si (turn_style == 1) Serial_motors.write ((byte) 1 + speed_offset) ; else Serial_motors.write ((byte) 64) ; Eteindre le moteur gauche (tour doux) Serial_motors.write ((byte) 255 - speed_offset) ; } void go_right (speed_offset octets, turn_style octets) {//Serial.println ("va droit...") ; Serial_motors.Write ((byte) 127 - speed_offset) ; Si (turn_style == 1) Serial_motors.write ((byte) 128 + speed_offset) ; else Serial_motors.write ((byte) 192) ; Éteignez le moteur de droite (virage souple)} void halt () {//Serial.println ("halte!") ; Serial_motors.Write ((byte) 0) ; } / / Définir une position servos / / servo_id est le nombre de servo (0-7) / / angle est la position de l’abs de 500 à 5500 void move_servo (int servo_id, int angle) {unsigned buff char [6] = {0 x 80, 0 x 01, SETPOS, 0 x 00, 0 x 00, 0 x 00}; unsigned int temp ; unsigned char data_hi, data_low temp = angle & 0x1f80 ; data_hi = temp >> 7; data_low = angle & 0x7f ; buff [3] = servo_id ; //servo numéro buff [4] = data_hi ; //data1 buff [5] = data_low ; //data2 () Serial_servo.write chamois, 6) ; Serial_servo.Flush () ; } void set_servo_speed (int servo_id, int vitesse) {unsigned buff char [5] = {0 x 80, 0 x 01, SETSPEED, 0 x 00, 0 x 00}; if (vitesse > 127) Vitesse = 127 ; buff [3] = octet (servo_id); buff [4] = octet (vitesse) ; Serial_servo.Write (chamois, 5) ; Serial_servo.Flush () ; } void set_boom (angle octets) {move_servo (0, carte (angle, 0, 179, 2500, 4000));} void set_gripper (angle octets) {move_servo (1, carte (angle, 0, 179, 2500, 4000));} void home_boom () {move_servo (0, 3000);} void home_gripper () {move_servo (1, 3000);}

Articles Liés

Comment remplacer une botte Pipe sur un toit de métal.

Comment remplacer une botte Pipe sur un toit de métal.

Il s'agit d'un espace commun de n'importe quel toit d'où provenance la plupart des fuites, donc ses toujours bon de savoir comment le réparer si nécessaire.Tout d'abord, je conseille que si vous n'êtes pas à l'aise sur un toit ou si l'inclinaison du
Bot pince télécommande

Bot pince télécommande

A quelques mois en arrière mon fils m'a demandé de lui faire un bot contrôlé à distance. Il m'a donné une liste de ce qu'il voulait et nous réduit à une liste gérable:) C'est ce que j'ai fini par bâtiment pour lui...Répondre à pinces, un robot mobile
Bota - ballon en cuir

Bota - ballon en cuir

Regarder Pirates des Caraïbes trop de fois au comte, encouragé par mes deux plus jeunes qui entretiennent l'enthousiasme malgré la répétition, j'ai remarqué ballon cuir Gibbs gardé surfaçage. Tre des espagnol décent et le propriétaire de plusieurs pu
Bot de PS2 contrôleur moteur en soies

Bot de PS2 contrôleur moteur en soies

il s'agit d'une variante du bot à poils désormais commun. C'est un peu plus grand, à l'aide de 3 piles AA et le moteur de vibration d'un contrôleur de jeu PS2Étape 1: Matériaux et outils nécessaires Pour les matériaux, vous avez besoin :-4 brosses à
Bots simples : Wobbler

Bots simples : Wobbler

en général, vous apprendrez à osciller avant de vous apprendre à marcher. Mais dans le monde des robots, tout est possible ! C'est pourquoi le lendemain vous montrant comment faire pour marcher et deux après vous montrant comment je roule, je suis de
Bots effrayants et super creeps - vibrobots avec connecteurs, câbles et attache-câbles

Bots effrayants et super creeps - vibrobots avec connecteurs, câbles et attache-câbles

faire drôle, effrayant, stupides créatures vibrant de bot avec peu plus de connecteurs, attaches-câbles et fils électriques. Les robots dans les images et la vidéo sont quelques exemples de ce que vous pouvez faire. Votre imagination est la limite. G
Arduino 4wd robot avec capteur de ping « J-Bot »

Arduino 4wd robot avec capteur de ping « J-Bot »

niveau d'expérience : intermédiaire (requière la soudure)Temps requis: 3-5 heures selon l'expérienceJ-BOT Kit JamecoQuelqu'un a dit que Jameco avait besoin d'une mascotte de robotique. J'ai toujours été un bricoleur, surtout avec l'électronique radio
Enfant en bas âge Bot 3000 par Adam Fujita. Commande vocale outil éducatif parental!!

Enfant en bas âge Bot 3000 par Adam Fujita. Commande vocale outil éducatif parental!!

Toddler Bot 3000 des histoires pour Paloma sur Vimeo.Le Bot de bambin est un dispositif simple créé pour illustrer comment bon rôle parental pourrait être pratiquée. Ce bot est issu d'un Bot de bouclier Parralax avec un micro Electret de fruits Ada.
Utiliser une manette PS3 pour contrôler un Bot de NXT Arduino

Utiliser une manette PS3 pour contrôler un Bot de NXT Arduino

mise à jour :J'ai corrigé quelques bugs en cours d'exécution avec le paquet de données, et j'ai modifié la bibliothèque NXTI2CDevice pour être compatible avec Arduino 1.0.Le fichier zip joint a1. une nouvelle esquisse de l'Arduino2. une nouvelle esqu
Créer un Bot de fleur de lumière-qui suit Arduino contrôlée

Créer un Bot de fleur de lumière-qui suit Arduino contrôlée

Dans ce projet Arduino-basé, vous allez créer un « biomimétique », ou fleur de biologie-inspiré, qui fait suite à une source de lumière. Vous avez sans doute vu ce comportement dans vos plantes d'intérieur ! Plantes ont besoin du soleil pour croître
Construire un vélo Boom Box

Construire un vélo Boom Box

comment tout a commencé : J'ai monter mon vélo en un tour de la communauté chaque semaine, et les gens il voulaient un moyen de profiter de la musique sur le trajet. J'ai essayé une boîte ordinaire de la perche, mais il est tout simplement pas fait p
Bots simples : Rolly

Bots simples : Rolly

ce Bot Simple a été inspiré par une œuvre de l'artiste James Rouvelle, appelée colonie, où un tas de forme irrégulière ellipsoïdes autotraction autour de leur environnement. C'est ma compréhension que ses robots ont été faites en plaçant une vibrante
Insect Bot

Insect Bot

Vous voulez tester vos compétences en soudure!! Voici une facile à faire insecte robot que vous pouvez construire en environ 20 minutes.L'insecte bot utilise un moteur de vibration sa tête, qui est propulsé par un condensateur comme son abdomen, dont
Squiggle facile Bot

Squiggle facile Bot

Ne laissez pas le nombre d'étapes dans ce Instructable vous tromper. Ce Bot tilde est aussi facile qu'annoncé. Si vous avez toutes les pièces sur place ainsi que toute expérience souder les fils ensemble, vous pouvez probablement construire ce bot en