Wallbots : Autonomous Robots magnétiques que parcourir les Surfaces verticales (11 / 12 étapes)

Etape 11 : Télécharger le Code sur l’Arduino

Je suis coller mon code ci-dessous. Chaque capteur est échantillonné et le robot se déplace selon le capteur qui détecte une main humaine, et si oui ou non il est rouge, vert ou jaune (si elle devrait se déplacer vers les objets ou emporter).

/*
Code Wallbots
Stacey Kuznetsov
6 mai 2009
pour rendre les choses Interactive, printemps ' 09

C’est le code de base pour le mouvement robotique de 2 moteurs sevo basé sur l’entrée de la route
de 4 capteurs de lumière. Motion prend en charge plusieurs paramètres, basés sur le mode de robot.
Les robots rouges se déplacent vite, vers les objets (lorsque la lumière capteurs détectent des ténèbres)
Verts robots se déplacent à une vitesse moyenne, l’écart d’objets (loin des zones plus foncées)
Déplacent slowerly robots jaunes et arrêtent de clignoter lorsque les objets sont détectés

Le but de ces robots est de passer sur les murs à l’aide de roues magnétiques.
Mouvement de prise en charge inclut à droite, directions vers l’avant et à gauche. Plusieurs
vitesses sont mises en œuvre selon le mode de robot.

Les capteurs de lumière auto-étalonnage sur remise à zéro ou lorsque le capteur haut est couvert
pendant plus de 3 secondes.

*/

#include < Servo.h >

Servos de droite et gauche
Servo servo1 ;
Servo servo2 ;

Capteurs de lumière
int topSensor = 0 ; 700
int leftSensor = 1 ; Seuil est 400
int frontSensor = 2 ; 400
int rightSensor = 3 ; 300

Seuils de codé en dur (ne pas utilisés car nous auto-étalonnage)
int topThreshhold = 400 ;
int leftThreshhold = 550 ;
int frontThreshhold = 200 ;
int rightThreshhold = 650 ;

Type de robot actuel (gree rouge ou jaune)
État int = 0 ;

Valeurs de l’États
int rouge = 0 ;
int vert = 1 ;
int ORANGE = 2 ;

Broches pour conduire la LED tricolore haut de la page
int redPin = 5 ;
int greenPin = 6 ;

Values pour contenir les lectures du capteur
int avant ;
droit int ;
int gauche ;
haut int ;

Auto-étalonnage seuils capteur de lumière
void calibrate() {}
Serial.println("Calibrating") ;
long int val = 0 ;
pour (int i = 0; i < 5; i ++) {}
Val += analogRead(frontSensor) ;
Delay(10) ;
}
frontThreshhold = (val 5) - 80 ;
Val = 0 ;

pour (int i = 0; i < 5; i ++) {}
Val = val + analogRead(topSensor) ;
Serial.println(analogRead(topSensor)) ;
Serial.println(Val) ;
Delay(10) ;
}

topThreshhold = (val 5) -200 ;

Val = 0 ;
pour (int i = 0; i < 5; i ++) {}
Val += analogRead(rightSensor) ;
}
rightThreshhold = (val 5) - 100 ;
Val = 0 ;
pour (int i = 0; i < 5; i ++) {}
Val += analogRead(leftSensor) ;
}
leftThreshhold = (val 5) - 100 ;

Imprimer les valeurs de seuil pour le débogage
Serial.Print ("top:") ;
Serial.println(topThreshhold) ;
Serial.Print ("raison:") ;
Serial.println(rightThreshhold) ;
Serial.Print ("gauche:") ;
Serial.println(leftThreshhold) ;
Serial.Print ("front:") ;
Serial.println(frontThreshhold) ;

}

void setup()
{
tourner sur la broche 13 pour debug
pinMode (13, sortie) ;
digitalWrite (13, HIGH) ;
broches de capteur d’installation
pour (int i = 0; i < 4; i ++) {}
pinMode (i, entrée) ;
}
Serial.Begin(9600) ;
CALIBRATE() ;
générer un état aléatoire
État = aléatoire (0, 3) ;
setColor(STATE) ;
}

FONCTIONS MOTRICES

Sub turnLeft()
{
Serial.println("left") ;

Start() ;
Delay(20) ;
pour (int i = 0; i < 20; i ++) {}
Servo2.Write(179) ;
SERVO1.Write(1) ;
Delay(20) ;
}
Stop() ;
Delay(20) ;
}

void turnRight() {}
Serial.println("Right") ;
Start() ;
Delay(20) ;
pour (int i = 0; i < 20; i ++) {}

Servo2.Write(1) ;
SERVO1.Write(179) ;
Delay(20) ;
}
Stop() ;
Delay(20) ;
}

goForward Sub (int del = 20) {}
Serial.println("Forward") ;
Start() ;
Delay(20) ;
pour (int i = 0; i < 20; i ++) {}
SERVO1.Write(179) ;
Servo2.Write(179) ;
Delay(del) ;
}
Stop() ;
Delay(20) ;
}

stop() Sub {}
SERVO1.Detach() ;
Servo2.Detach() ;
Delay(10) ;
}

void start() {}
SERVO1.Attach(10) ;
Servo2.Attach(9) ;

}

Ensemble en fonction de la couleur de la LED tricolore haut de la page sur l’état actuel
void setColor (int couleur) {}
Si (color = RED) {}
digitalWrite (greenPin, 0) ;
analogWrite (redPin, 180) ;
}
ElseIf (couleur == vert) {}
digitalWrite (redPin, 0) ;
analogWrite (greenPin, 180) ;
}
ElseIf (couleur == ORANGE) {}
analogWrite (redPin, 100) ;
analogWrite (greenPin, 100) ;
}
}

Cligner des yeux la couleur jaune (lorsque le robot est confondue)
void blinkOrange() {}
pour (int i = 0; i < 5; i ++) {}
analogWrite (redPin, 100) ;
analogWrite (greenPin, 100) ;
Delay(300) ;
digitalWrite (redPin, 0) ;
digitalWrite (greenPin, 0) ;
Delay(300) ;
}

analogWrite (redPin, 100) ;
analogWrite (greenPin, 100) ;

}

void loop()
{

Top = analogRead(topSensor) ;
temps d’int = millis() ;
tandis que (analogRead(topSensor) < topThreshhold) {}
Delay(10) ; Bien qu’il y a une vague de bras de l’utilisateur ne font rien
}
Si ((millis()-time) > 3000) {}
Si le capteur a été couvert pendant plus de 3 secondes, ré-étalonner
CALIBRATE() ;
}

Si le capteur haut était couvert, nous changeons d’État
Si (haut < topThreshhold) {}
ÉTAT = (ÉTAT + 1) 3 %;
setColor(STATE) ;
Serial.Print (« état modifié: ") ;
Serial.println(State) ;
}

Lire les autres capteurs
droite = analogRead(rightSensor) ;
gauche = analogRead(leftSensor) ;
avant = analogRead(frontSensor) ;

Si (état == rouge) {}
aller vers les objets
Si (avant < frontThreshhold) {}
goForward() ;
} ElseIf (droite < rightThreshhold) {}
turnRight() ;
} ElseIf (gauche < leftThreshhold) {}
turnLeft() ;
} else {}
goForward() ;
}
}
Si (état == vert) {}
Éloignez-vous des objets
Si (avant < frontThreshhold) {}
int dir = random(0,2) ;
Si (dir == 0 & & droit > rightThreshhold) {}
turnRight() ;
} ElseIf (dir == 1 & & gauche > leftThreshhold) {}
turnLeft() ;
}
} ElseIf (droite < rightThreshhold) {}
Si (gauche > leftThreshhold) {}
turnLeft() ;
} else {}
goForward() ;
}
} ElseIf (gauche < leftThreshhold) {}
Si (droite > rightThreshhold) {}
turnRight() ;
} else {}
goForward() ;
}
} else {}
goForward() ;
}
Delay(200) ;
}

Si (État == ORANGE) {}
déplacer uniquement s’il y a qu'aucun mouvements de main-autrement cligner des yeux
int dir = aléatoire (0, 3) ;
Si (gauche < leftThreshhold || droite < rightThreshhold ||
avant < leftThreshhold) {}
blinkOrange() ;
} else {}
Si (dir == 0) {}
goForward() ;
} ElseIf (dir == 1) {}
turnRight() ;
} ElseIf (dir == 2) {}
turnLeft() ;
}
Delay(1000) ;
}
Delay(10) ;
}
}

Articles Liés

Charnière magnétique pour modèles anatomiques - TfCD

Charnière magnétique pour modèles anatomiques - TfCD

Ce petit projet affiche les étapes que j'ai pris pour enquêter sur l'utilisation de charnières magnétiques avec l'impression 3D.Une des inspirations de ce projet était la zone de charnière magnétique personnalisable par Walter. Voir : http://www.thin
Comment faire un Guide aiguisantes magnétique (pour aiguiser les ciseaux & rabots) | Menuiserie bricolage outils #5

Comment faire un Guide aiguisantes magnétique (pour aiguiser les ciseaux & rabots) | Menuiserie bricolage outils #5

« Quand les larmes de grain [du bois], je veux arracher mes cheveux. »- GmoonAlors que ce problème ne se produit pas en raison de la trichotillomanie, il certainement arrive parce que vous n'êtes pas aiguiser votre main-avions correctement.Un moyen f
Lévitation magnétique Pétri documenteur

Lévitation magnétique Pétri documenteur

Bactéries de culture peuvent être un processus plutôt fastidieux comme j'ai découvert après avoir fait certaines bactéries cultivant. C'était plutôt amusant que tous les autres procédés ont été réalisées avec des outils spécialisés et des méthodes, m
Gecko - magnétique mur escalade robot

Gecko - magnétique mur escalade robot

GECKO - aimants naturels, super mobilité et robot haute simplicité.Elle peut escalader les murs porteurs de poidsIl peut transférer entre différentes géométriesSon simple ! et réalisez des tours que ne peut plus sophistiqués robots.Dans ce instructab
Serrure de combinaison magnétique photo Safe

Serrure de combinaison magnétique photo Safe

Pourquoi j'aimerais gagner un coupe au laser zing...Depuis que je suis petit, j'ai pris des choses dehors ; pendant des années, j'ai été regardant à travers et apprentissage de Instructables. J'aime inventer, prototypage, conception. Je l'aime tellem
Sélectionnant et en utilisant le compas magnétiques

Sélectionnant et en utilisant le compas magnétiques

par tonytran2015 (Melbourne, Australie).Un compas magnétique utilise le champ magnétique local généré par le noyau de rotation de la terre pour donner l'axe de rotation de la terre. Les deux directions sont assez proches.Le compas magnétique est un i
TIROIR SECRET serrure magnétique

TIROIR SECRET serrure magnétique

Salut tout le monde ! Aujourd'hui, je vais vous montrer comment faire un tiroir secret au-dessous de la surface de votre table à l'aide d'une fermeture magnétique cachée. Le tiroir est à peine visible par le haut et en raison de sa fermeture magnétiq
Fil magnétique

Fil magnétique

fil magnétique est utilisé par des amateurs et des ingénieurs pour bobines, inductances, transformateurs et solénoïdes, et il n'est pas bon marché pour acheter à $25 à 60 dollars la livre. C'est le fil que j'ai rassemblé en un week-end pour aucun coû
Spoofer carte magnétique

Spoofer carte magnétique

cette instructable montre comment utiliser un électro-aimant, un circuit amplificateur simple, et un lecteur de musique personnel pour induire des signaux dans un lecteur de carte magnétique, amenant à penser que vous avez glissée une carte à travers
Plateau de pièces magnétique - une autre utilisation

Plateau de pièces magnétique - une autre utilisation

j'ai récemment repeints mon bateau et la remorque pour bateau. Le bateau et la remorque sont peint en bleus, avec sa garniture rouge. Je vais publier le bateau tout repeindre plus tard. J'ai eu envie de peindre les écrous de roue rouge pour correspon
Lévitation magnétique Pen

Lévitation magnétique Pen

Pas à la différence des trains au Japon ce stylo utilise les forces magnétiques opposées à planer dans les airs. Pour les trains, cela élimine pratiquement toute friction permettant aux trains de passer très rapidement. Pour stylos, c'est un peu vale
Magnétique effaçables à sec mur !

Magnétique effaçables à sec mur !

Régalez vos yeux sur l'incroyablement impressionnant magnétiques effaçables à sec mur!J'ai eu un problème : nous avons eu une chambre effaçables à sec, et le meilleur endroit pour qu'il se trouvait être droit dans une zone à trafic élevé de la maison
Outil magnétique cintre

Outil magnétique cintre

Dans la plupart des ateliers espace est limité. Si vous avez besoin de trouver un moyen d'utiliser tous les bits de l'espace que vous pouvez. Un domaine qui est souvent négligé est l'espace sous les armoires et étagères. Mais cela peut être un endroi
La plaque magnétique ultime !

La plaque magnétique ultime !

Ce ma nouvelle plaque magnétique sur ma table de projets, c'est où je fais la plupart de mes souder, collant chaud, démontage et malheureusement, aussi mon domicile école-travail.C'est drôle de dire que ce projet me chiffré environ 2 $ en pièces, par