Le module de contact - un jouet chien robot. (5 / 6 étapes)

Étape 5: Arduino Code - Machine de Test

Voici une vidéo de la fonction de base, tous les leviers sont câblées ensemble afin que si une des leviers est actionnée, le moteur tourne et friandises peuvent être livrés :

Avant d’intégrer le moteur, les LEDs et les capteurs flex peuvent être testés :

Il y a deux modes de difficulté pour le module de contact.

Tout d’abord, toutes les 3 LEDs s’allument et le chien peuvent frapper n’importe quel levier qu’ils choisissent de livrer un régal du distributeur.
En second lieu, une seule LED s’allume et le chien doit frapper le levier correspondant à la lumière de livrer un régal du distributeur.

Second niveau de Difficulté :
Le second niveau de Difficulté est en fait le plus facile au programme et le code est comme suit :

#include < TrueRandom.h >

/*
MATÉRIEL :
//
Pour les capteurs de Flex (non pas que les broches de capteur flex sont interchangeables)
Goupille de capteur = GND
Goupille de capteur = en analogique, avec résistance de 10K à + 5V

Pour LEDs
+ code pin = numérique en pin
-broche = résistance 470 au GND

*/

int ledPinG = 7 ; Broche 7 est une LED verte
int ledPinR = 6 ; BROCHE 6 est une LED rouge
int ledPinB = 5 ; BROCHE 6 est une LED bleue
int ledPin ;
int analogPin ;
int del = 1000 ;
int x ;

void setup() {}
Serial.Begin(9600) ;
pinMode (ledPinG, sortie) ; Réglez toutes les broches de la LED sur sortie
pinMode (ledPinR, sortie) ;
pinMode (ledPinB, sortie) ;
pinMode (ledPin, sortie) ;

}

void loop()
{
digitalWrite (ledPinG, HIGH) ; Premier flash LED pour indiquer l’entrée prête
digitalWrite (ledPinR, HIGH) ;
digitalWrite (ledPinB, HIGH) ;
Delay(del) ;
digitalWrite (ledPinG, basse) ;
digitalWrite (ledPinR, basse) ;
digitalWrite (ledPinB, basse) ;

x = TrueRandom.random (1, 4) ; J’ai utilisé cette bibliothèque TrueRandom que j’ai trouvé en ligne,
en raison d’une erreur connue avec fonction aléatoire de l’Arduino étant non aléatoire
Serial.println(x) ;

int sens ;
sens = SensorRead() ; Appelez la fonction SensorRead()

}

int SensorRead() {}
Si (x == 1) / / cette stamement if-elseif liens le nombre aléatoire (1, 2 ou 3) avec un levier.
{
analogPin = 0 ; BROCHE analogique 0 est activé
ledPin = 7 ; Ce voyant correspond avec le levier connecté à analogPin 0
}
else if (x == 2)
{
analogPin = 1 ;  Ce voyant correspond avec le levier connecté à analogPin 1
ledPin = 6 ;
}
else if (x == 3)
{
analogPin = 2 ; Ce voyant correspond avec le levier connecté à analogPin 2
ledPin = 5 ;
}

digitalWrite (ledPin, HIGH) ; Tour à tour sur l’une des LEDs sur le niveau qui a été choisi au hasard.

capteur int ;

capteur = analogRead(analogPin) ; Lit la valeur du levier le courant de la sonde de la flex et définit un seuil de 3
int initVal = capteur ;
int initValHigh = 6 + capteur ;
int initValLow = capteur - 6 ;

tandis que (capteur < initValHigh & & capteur > initValLow) / / tant que la valeur de la sonde lire dans +/-6 de la valeur initiale, la broche analogique
continue à lire. Casser le tout en boucle des moyens que le levier correct a été enfoncé.
{
capteur = analogRead(analogPin) ;
Serial.println(Sensor) ;
Serial.println(initVal) ;

}
digitalWrite (ledPin, basse) ; Le voyant est éteint.

Delay(del) ;
}

FIN DU CODE

Voici quelques notes sur le code :
--J’ai utilisé la bibliothèque de TrueRandom au lieu de la commande intégrée d’aléatoire Arduino en raison d’un bug connu dans lequel la fonction intégrée au hasard n’est pas réellement aléatoire du tout. Le site de la bibliothèque est très clair sur la façon de l’appliquer.

--Vous pouvez suivre les lectures de goupille sur le Serial Monitor avec ce code. Vous pouvez voir les lectures constamment mise à jour pour le NIP actuel du capteur. Si votre NIP est fluctuant plus de +/-6 à partir de la valeur initiale sans être touché, vous devrez peut-être augmenter la valeur. Jouer avec elle pour trouver la bonne pression, où il n’est pas éteint au hasard, mais répond également au moindre toucher. Nous voulons que le chien pour obtenir un régal tout moment qu'il arrive à courir contre le levier correct.

Premier niveau de Difficulté :
Le premier niveau de Difficulté fonctionne tant qu’aucun des trois leviers est enfoncé. Vous pouvez y parvenir en taping tous trois leviers ensemble et en utilisant le code suivant (ce qui fondamentalement triplicates le second niveau code ci-dessus). La fonction TrueRandom n’est plus nécessaire.

J’ai également ajouté la fonctionnalité de moteur à la fin du code afin que le moteur tourne pendant 1 seconde, assez pour une dose de gâteries à livrer.

/*

MATÉRIEL :
//
Pour les capteurs de Flex (non pas que les broches de capteur flex sont interchangeables)
Goupille de capteur = GND
Goupille de capteur = en analogique, avec résistance de 10K à + 5V

Pour LEDs
+ code pin = numérique en pin
-broche = résistance 470 au GND

*/

int ledPinG = 7 ; Broche 7 est une LED verte
int ledPinR = 6 ; BROCHE 6 est une LED rouge
int ledPinB = 5 ; BROCHE 5 est une LED bleue
int analogPin0 ;
int analogPin1 ;
int analogPin2 ;
int del = 1000 ;
int PWM_B = 11 ; Ces deux broches sont déjà réservés sur le bouclier d’arduMoto
int DIR_B = 13 ;

void setup() {}
Serial.Begin(9600) ;
pinMode (ledPinG, sortie) ; Réglez toutes les broches de la LED sur sortie
pinMode (ledPinR, sortie) ;

pinMode (ledPinB, sortie) ;
pinMode (PWM_B, sortie) ; Broches de contrôle pour être sorties
pinMode (DIR_B, sortie) ;

}

void loop()
{
digitalWrite (ledPinG, HIGH) ; Premier flash LED pour indiquer l’entrée prête
digitalWrite (ledPinR, HIGH) ;
digitalWrite (ledPinB, HIGH) ;
Delay(del) ;
digitalWrite (ledPinG, basse) ;
digitalWrite (ledPinR, basse) ;
digitalWrite (ledPinB, basse) ;

int sens ;
sens = SensorRead() ; Appelez la fonction SensorRead()

}

int SensorRead() {}

digitalWrite (ledPinG, HIGH) ;
digitalWrite (ledPinR, HIGH) ;
digitalWrite (ledPinB, HIGH) ;

Capteur1 int ;
sensor2 int ;
sensor3 int ;

Capteur1 = analogRead(analogPin0) ;
sensor2 = analogRead(analogPin1) ;
sensor3 = analogRead(analogPin2) ;

int initVal1 = Capteur1 ;
int initVal2 = sensor2 ;
int initVal3 = sensor3 ;

int initValHigh1 = 6 + Capteur1 ;
int initValHigh2 = 6 + sensor2 ;
int initValHigh3 = 6 + sensor3 ;

int initValLow1 = Capteur1 - 6 ;
int initValLow2 = sensor2 - 6 ;
int initValLow3 = sensor3 - 6 ;

tandis que (Capteur1 < initValHigh1 & & Capteur1 > initValLow1)
{
Capteur1 = analogRead(analogPin0) ;
sensor2 = analogRead(analogPin1) ;
sensor3 = analogRead(analogPin2) ;

Serial.println(Sensor1) ;
Serial.println(initVal1) ;
}

digitalWrite (ledPinG, basse) ;
Delay(100) ;
digitalWrite (ledPinR, basse) ;
Delay(100) ;
digitalWrite (ledPinB, basse) ;
Delay(100) ;
digitalWrite (ledPinB, HIGH) ;
Delay(100) ;
digitalWrite (ledPinR, HIGH) ;
digitalWrite (ledPinB, basse) ;
Delay(100) ;
digitalWrite (ledPinG, HIGH) ;
digitalWrite (ledPinR, basse) ;
Delay(100) ;
digitalWrite (ledPinG, basse) ;
Delay(100) ;

digitalWrite (DIR_B, élevé) ; Peut être utilisée moteur la direction opposée, 1 - haute, 2 - basse

analogWrite (PWM_B, 255) ; définir le moteur de fonctionner à 255/255 = facteur de marche 100 % pour obtenir le couple requis.

Delay(1000) ;

analogWrite(PWM_B,0) ; tour du moteur

Delay(1000) ;

}

FIN DU CODE

Articles Liés

Petit chien jouet pour votre jouet chiens

Petit chien jouet pour votre jouet chiens

n'avez pas les bons jouets à utiliser comme un jouet chien jouet ? Eh bien, pour cette instructables, vous aurez besoin seulement bandeaux pour les cheveux (plus petits) de fabriquer un petit jouet pour vos chiens de jouet.Désolé si ce n'est pas bon,
Jouet chien géant

Jouet chien géant

Salut, ces instructions vous mènera de fabriquer un jouet super cool chien géant fait de simples Articles ménagers. En fait, dans un premier temps, il était censé pour être un coton-tige géant, mais quand nous sommes tombés à courts sur la peinture,
Chien robot

Chien robot

J'adore faire des robots et ont décidé de partager un plaisir et un moyen peu coûteux de faire un chien robot !Étape 1: Recueillir vos matériaux Vous aurez besoin :1) cuivre2) vis3) un écrou4) vis de taille moyenne quatre5) une petite vis6) chose de
FrankenDog ! Animatronic DIY - contrôler un chien robot de i-cybie avec un piano jouet

FrankenDog ! Animatronic DIY - contrôler un chien robot de i-cybie avec un piano jouet

Vous avez morts jouets qui traînent ? Dans ce didacticiel vidéo j'ai donner une nouvelle vie à un chien de robots i-Cybie morts dont le « cerveau » a été détruit après que court circuit et presque pris feu. Apprenez à animer les morts !Le I-cybie est
K-9 2.0. Chien Robot contrôlé et autonome de WiFi.

K-9 2.0. Chien Robot contrôlé et autonome de WiFi.

REMARQUE :À l'étape 22, j'ai posté une mise à jour, expliquant certains changements/améliorations récentes que j'ai faite, principalement au système électrique de K-9 et les capteurs qui peuvent vous être utiles.CaractéristiquesRobuste en bois (MDF)
Comment construire un 3D-imprimé jouet renne robot

Comment construire un 3D-imprimé jouet renne robot

impression 3D ! Fabrication de moule ! Rendu numérique ! Apoxie Sculpt!!! Woodshoppery ! Pour ce projet Tina et j'ai décidé d'essayer d'en savoir plus sur l'impression 3D et je vais vous montrer ce que nous avons appris et comment nous avons fini par
NRF24 module de jr pour jouet quadcopters

NRF24 module de jr pour jouet quadcopters

Nous allons construire un module pour ces quadcopters de jouets chinois comme le Eachine H8 ou Cheerson CX-10.Il se compose d'un arduino pro mini, un nrf24 2, 4GHz transmetteur et 3, 3V régulateur.Le module devrait s'insérer dans la baie de la tarani
Fabriquer votre propre jouet chien

Fabriquer votre propre jouet chien

voulez faire votre propre jouet pour chien pour jouer avec votre chien lorsque vous êtes à la droite instructableÉtape 1: matériel vieux t-shirtsacs d'épicerieciseauxcollier de perlesruban adhésifÉtape 2: manchon coupe prenez vos ciseaux et couper le
Lanceur de balle de chien Robot Dogzooka

Lanceur de balle de chien Robot Dogzooka

« Pixel », mon fidèle animal de compagnie Schnoodle (mélange de Schnauzer/caniche) est un faisceau d'énergie. Elle aime jouer fetch et s'exécutera fidèlement ses fonctions de récupération indéfiniment - si vous êtes prêt à lui livrer. Elle m'épuise !
Jouet pour chien « Indestructible »

Jouet pour chien « Indestructible »

chien de ma mère, Molly, aime à jouer - une activité qui, pour elle, implique généralement arrondi vers le haut tous ses jouets et les déchirer en lambeaux. Pour tenter de faire une sorte de jouet indestructible, ou au moins quelque chose qu'elle pou
Faire un jouet pour chien corde

Faire un jouet pour chien corde

notre chien Dodger déchirera jouets chien normal appart en 15 minutes environ. « Jouets indestructibles » prennent un peu plus;)J'ai appris comment faire un noeud de poing de singe lors d'un festival de jonglerie quelques années--juste pour le fun, q
Comment faire un jouet pour chien fil

Comment faire un jouet pour chien fil

mes chiens sont toujours déchirer par le biais de leurs jouets, alors je voulais voir si je pouvais faire pour eux après avoir vu le patron gratuit sur le Site de la marque du Lion.http://www.lionbrand.com/patterns/Craft-WEC-dogToy.html?noImageJ'ai f
J’espère que Indestructible en peluche jouet pour chien

J’espère que Indestructible en peluche jouet pour chien

mes chiens sont méchants monstres peu.  Les tueurs en série du monde jouet chien peluche, jouets en peluche qui couine tremblent de peur quand ils marchent dans l'animalerie... et ils le devraient.  Mes chiens ont détruit chaque jouet en peluche qu'i
Gros jouets pour grands chiens

Gros jouets pour grands chiens

j'ai des problèmes pour trouver des jouets pour mon gros chien qui durent depuis plus de cinq minutes. Il s'agit d'une collection de jouets et de mâcher, certains achetés et certains faits maison, que mon chien n'a pas rip appart ou manger pendant au