Linefollower robot de l’Arduino et indésirable - pensées et code (4 / 5 étapes)

Étape 4: Code Arduino - calibrage de la sonde

/***
Ligne après le script de calibrage de capteurs robot
Bouba
***/

/*
COMMENT UTILISER :
Télécharger ce script.
Arduino doit rester connecté à l’ordinateur.
Capteurs doivent avoir leur tension fournie.
Placer le robot intégralement sur son blanc surface en cours d’exécution
sans doute qu’y a donc une ligne noire sur sa gauche,
mais pas de l’avis de capteurs.
Presser le bouton reset arduinos.
Après 2 secondes pin 13 à bord LED doit s’allumer.
Mesures de calibration surface blanche s’effectuent alors que le voyant s’allume - 2 secondes environ.
LED s’éteindra après cela.
Après 2 secondes délai la LED s’allume à nouveau.
Maintenant, vous avez 5 secondes pour déplacer le robot sur le côté sur une ligne noire.
Ligne doit se trouver sur la gauche face à la même manière que le robot va s’exécuter.
Vous devez déplacer le robot à sa gauche et approximativement à angle droit sur la ligne.
Au cours de ce mouvement, que les valeurs maximales sont prises qui se produisent lorsqu’un seul capteur est directement au-dessus de la ligne.
Pas pressé, mais tous les capteurs doivent être sur la ligne quand LED s’éteint après 5 secondes.
Après un autre 2sec retard la LED s’allume une fois de plus.
Maintenant vous devez déplacer le robot sur la ligne, à l’opposé de ce que vous faisiez dans la dernière étape.
Cela signifie que pendant le robot coup sec 5 retour à droite au-dessus de la ligne.
Important : ce robot de temps doit se déplacer à droite - droite capteur doit passer sur la ligne tout d’abord !
Pendant ce sont pris des mesures que dire, comment peu faire les capteurs côte à côte deux aller, lorsque la ligne est exactement entre les deux.
Mesures fin lorsque la LED s’éteint après 5 sec.
Démarrez l’analyseur de la série.
Arrêter le défilement automatique et copier les valeurs de correction de tout trois lignes successives aux robots script d’équitation.
*/

/ * entrée sonde broches * /
const int [] sensorPins = {A0, A1, A2} ; droite, Centre, gauche

/ * bord LED pin * /
const int indicatorPin = 13 ;

/ * baies pour le stockage des données calculées et capteur
trois capteurs dans chaque tableau :
0 - DROITE, GAUCHE 1 - CENTRE, 2 - * /
lectures de flotteur [3] ; lectures du capteur
char averageReadings [3] = {0, 0, 0} ; lectures moyennes
char whitePoints [3] = {0, 0, 0} ; lecture sur la surface blanche
int blackPoints [3] = {0, 0, 0} ; lecture tout en passant sur la ligne noire maximale
flotteur unitSteps [3] ; différence entre blanc et noir divisé par 100
int corrections [3] ; points blancs en tant qu’int
char peakDetect [3] = {0, 0, 0} ;
char betweenReadings [2] = {1024, 1024} ; lectures en ligne est inbetween deux capteurs, centre-droit, centre-gauche
betweenState booléen [3] = {false, false, false} ; aide pour savoir quel minimum pour stocker

/ * boucle d’assistance variables * /
int i ;
int j ;

void setup() {}

Serial.Begin(9600) ; Démarrez l’analyseur de série de données de sortie après mesures
pinMode (indicatorPin, sortie) ; Set nboard conduit broche pour indiquer l’état de mesure

/ * commencer l’étalonnage après retard de 2 sec * /
Delay(2000) ;

/ * MESURER SUR LA SURFACE BLANCHE PENDANT ENVIRON 2 SECONDES SUPPOSÉS * /
digitalWrite (indicatorPin, HIGH) ; à bord LED s’allume
pour (i = 0; j’ai < 125; i ++) {//125 lectures de chaque capteur
pour (j = 0; j < = 2; j ++) {//loop par le biais de chaque capteur
lectures [j] = analogRead(sensorPins[j]) ; obtenir la valeur
/ * calculer moyenne capteur valeurs * /
whitePoints [j] = (whitePoints [j] * j + readings[j]) / (j + 1) ; moyenne de toutes les mesures prises à ce jour
Delay(2) ;
}
Delay(10) ;
}
digitalWrite (indicatorPin, basse) ; à bord del s’éteint
Delay(2000) ; retard de 2 sec

/ * VA SUR LE CÔTÉ SUR LA LIGNE NOIRE DANS LES 5 SECONDES QUI SUIVENT SUPPOSÉS * /
digitalWrite (indicatorPin, HIGH) ; à bord LED s’allume
pour (i = 0; j’ai < 320; i ++) {//320 lectures de chaque capteur
pour (j = 0; j < = 2; j ++) {//loop par le biais de chaque capteur
lectures [j] = analogRead(sensorPins[j]) ; obtenir la valeur
Si (lectures [j] > blackPoints[j]) {//if valeur actuelle est râpe qu’un olready sauvé
blackPoints [j] = lectures [j] ; stocker si aplicable
}
Delay(2) ;
}
Delay(10) ;
}
digitalWrite (indicatorPin, basse) ; à bord del s’éteint

/ * calculer « pas d’unité » - 1/100e de la différence entre le blanc et le noir pour chaque capteur
et transformer les points blancs en int (corrections) * /
pour (j = 0; j < = 2; j ++) {}
unitSteps [j] = (blackPoints [j] - whitePoints [j]) / 1000 ;
services correctionnels [j] = (int) (whitePoints [j] + 0,5) ;
}

Delay(2000) ; retard de 2 sec

/ * VA SUR LE CÔTÉ (À DROITE)!!! SUR LA LIGNE NOIRE DANS LES 5 SECONDES QUI SUIVENT SUPPOSÉ * /
digitalWrite (indicatorPin, HIGH) ; à bord LED s’allume
pour (j = 0; j < = 2; j ++) {//to réutiliser ce tableau, mis tout à 0
blackPoints [j] = 0 ;
}
pour (i = 0; j’ai < 320; i ++) {//320 lectures de chaque capteur
pour (j = 0; j < = 2; j ++) {//loop par le biais de chaque capteur
lectures [j] = (analogRead(sensorPins[j]) - corrections[j]) / unitSteps [j] ; obtenir la valeur pour chacun en unités finales
}
pour (j = 0; j < = 2; j ++) {//loop par le biais de trois lectures du capteur
Si (lectures [j] > blackPoints[j]) {//if actuelle de lecture est supérieur à maxima stockée
blackPoints [j] = lectures [j] ; stocker si applicable
}
ElseIf (lectures [j] + 30 < blackPoints[j]) {//if lecture diminue (stockée est supérieure à l’actuel)
betweenState [j] = true ; indiquer cette variable que le capteur a déménagé sur une période maximale de lecture (ligne)
}

Si (betweenState [0] == true & & betweenState [1] == false) {//if première lecture de la sonde a transmis son maxima et deuxième n’a pas
Si (betweenReadings [0] > lectures [0] + readings[1]) {somme stockée //if des deux lectures du capteur est plus grand que la somme des courants
betweenReadings [0] = lectures [0] + lectures [1] ; magasin le cas échéant
}
}
ElseIf (betweenState [1] == true & & betweenState [2] == false) {//if deuxième lecture de la sonde a transmis son maxima et troisième n’a pas
Si (betweenReadings [1] > lectures [1] + readings[2]) {somme stockée //if des deux lectures du capteur est plus grand que la somme des courants
betweenReadings [1] = lectures [1] + lectures [2] ; magasin le cas échéant
}
}
Delay(2) ;
}
Delay(10) ;
}
digitalWrite (indicatorPin, basse) ; à bord del s’éteint

} / / / installation

void loop() {}

/ * imprimer les résultats dans serial monitor * /
Serial.Print ("const int corrections [3] = {") ;
Serial.Print(corrections[0]) ;
Serial.Print(",") ;
Serial.Print(corrections[1]) ;
Serial.Print(",") ;
Serial.Print(corrections[2]) ;
Serial.println("};") ;
Serial.Print ("const char unitSteps [3] = {") ;
Serial.Print(unitSteps[0]) ;
Serial.Print(",") ;
Serial.Print(unitSteps[1]) ;
Serial.Print(",") ;
Serial.Print(unitSteps[2]) ;
Serial.println("};") ;
Serial.Print ("const char betweenReadings [2] = {") ;
Serial.Print(betweenReadings[0]) ;
Serial.Print(",") ;
Serial.Print(betweenReadings[1]) ;
Serial.println("};") ;
Serial.println("") ;

} / / / loop

Articles Liés

Linefollower robot de l’Arduino et indésirable - photos

Linefollower robot de l’Arduino et indésirable - photos

j'ai fait ce cerveau Arduino linefollower robot pour un concours où il n'a pas très bien, a manqué de la voie. Mais c'était le moins cher robot là et j'ai appris tellement de construction, donc j'ai quelques pensées et Arduino code de partager quel q
En utilisant un Robot de dessin Arduino avec heures de tutoriels Code

En utilisant un Robot de dessin Arduino avec heures de tutoriels Code

J'ai créé un Arduino robot pour un atelier de dessin pour aider les adolescentes à s'intéresser à des sujets de souches (voir). Le robot a été conçu pour la tortue-style programmation des commandes telles que forward(distance) et turn(angle) permet d
ARD-e: le robot avec un Arduino comme un cerveau

ARD-e: le robot avec un Arduino comme un cerveau

comment faire pour créer un robot Arduino contrôlée de source ouverte pour moins de 100 $.Si tout va bien après avoir lu ce instructable vous serez en mesure de prendre vos premiers pas dans la robotique. ARD-e a coûté environ 90 $ à 130 $ selon comb
Robo-jardinières, ré-utilisation indésirable de maison de faire

Robo-jardinières, ré-utilisation indésirable de maison de faire

(mise à jour : départ pour mes nouvelles photos de robo-jardinières:)Fatigué des planteurs simples ou sissy ? Vous voulez plus de pots attitude ? Eh bien, c'est votre jour de chance, car instructable d'aujourd'hui est pour faire des jardinières à l'a
Art indésirable qui n’est pas indésirable

Art indésirable qui n’est pas indésirable

Salut, je suis Zack, et cette instructables avoisine les rotation indésirable dans l'art. Donc en gros ce que j'ai fait est soudure et colle des trucs ensemble avoir l'air cool. Vous n'avez pas à faire exactement ce que j'ai fait, vous pouvez faire c
Supprimer les indésirables chansons iTunes de votre ordinateur

Supprimer les indésirables chansons iTunes de votre ordinateur

Hé là Mesdames et Messieurs, c'est mon premier codage instructable, donc s'il vous plaît, en commentant, laissez vos armes à feu à la maison (couteaux est acceptés, cependant).Avec l'avènement des lecteurs mp3, il a été rendu possible pour les gens d
Haut-Cycle courrier indésirable en papier artisanal

Haut-Cycle courrier indésirable en papier artisanal

J'adore envoi cartes faites main et fabrication Etiquettes de cadeaux personnalisés, et je déteste la pile sans cesse croissant de courrier indésirable qui j'ai essayer de pousser sous la table à café avec mon pied sur une base quotidienne. Au sérieu
Gardez les indésirables visiteurs avec une Motion activé arroseur

Gardez les indésirables visiteurs avec une Motion activé arroseur

Les animaux les pensez que votre pelouse est leur toilette personnelle ? Les assassins ninja continuer à essayer de se faufiler dans votre maison ? Gardez ces visiteurs indésirables loin avec un système de gicleurs motion activé. Dès qu'ils entrer da
Comment faire pour débarrasser des ravageurs indésirables

Comment faire pour débarrasser des ravageurs indésirables

il s'agit d'une instructable sur la façon de se débarrasser de ces indésirables bestioles dans votre yard.Étape 1 : Tout ce dont vous avez besoin est une arme puissante et des arachides. Poser les arachides quelque part dans votre yard et attendez de
Comment se débarrasser des indésirables animaux - mise à jour

Comment se débarrasser des indésirables animaux - mise à jour

il s'agit d'une question complexe avec de nombreuses variables. Je vais essayer d'y répondre aussi complètement que possible, donc il pourrait être un peu longue haleine parfois. J'ai l'intention d'essayer au nom de la procédure de telle sorte que vo
Bon marché programmable bras robotique de l’Arduino

Bon marché programmable bras robotique de l’Arduino

C'est censé être un guide pour débutants à la façon de construire un bras robotique de l'Arduino. Son concept est d'être bon marché et facile à construire. Il s'agit d'un prototype d'optimiser mon code, mais il est parfait débuter avec Arduino roboti
Sans fil contrôler un Robot en utilisant Arduino et Modules RF !

Sans fil contrôler un Robot en utilisant Arduino et Modules RF !

/*Edit 05/05/2016Hé les gars, j'ai été occupé avec le Collège et ne pouvait pas répondre aux commments. La plupart de vous tous voulait le code et schémas faits un peu mieux alors j'ai fait les schémas sur Eagle 7.2.0 et téléchargées tout sur Github.
Courrier indésirable Hack

Courrier indésirable Hack

J'ai reçu du courrier indésirable, l'autre jour et il avait une boîte en plastique peu collante collée à un gros morceau de la carte postale du courrier. Soi-disant je pouvais prenez la bande plastique de la boîte et il s'afficherait mon numéro gagna
Comment revenir à des expéditeurs de courrier indésirable

Comment revenir à des expéditeurs de courrier indésirable

dans ce instructable je vais vous montrer quelques méthodes faciles pour le rendre encore plus coûteux pour les entreprises qui ordure publipostages de masse. Si tout le monde était d'utiliser ces méthodes, diffusion indésirable aurait très probablem