Comment envoyer des signaux multiples de l'Arduino pour le traitement

La seule chose de mieux que d'envoyer des signaux à traitement envoie des signaux multiples, non? Envoyer des signaux multiples est souvent une pierre d'achoppement, cependant, parce que même si l'envoi de valeurs à partir de plusieurs capteurs est facile, de les manipuler dans le bon ordre sur l'autre extrémité peut souvent être difficile.

Sommaire

Tu as besoin:

  • Un Arduino Uno

  • Une maquette

  • Deux potentiomètres 10k ohms




  • Un bouton-poussoir

  • Une résistance de 10k ohms

  • Fils de saut

Le circuit est une combinaison de trois entrées distinctes. Bien qu'ils utilisent tous la même puissance et la masse, vous pouvez penser à des entrées individuellement. Deux potentiomètres fournissent deux valeurs. Ils sont câblés de la même manière que vous voulez brancher un capteur de température, avec un côté branché à 5V et l'autre câble à la broche d'entrée analogique qui est en train de lire aussi bien que à GND via une résistance.

image0.jpg

Celles-ci pourraient en réalité être remplacées par des entrées analogiques avec des résistances appropriées. Le bouton-poussoir fournit une entrée numérique ainsi. Un côté du bouton-poussoir est câblé à 5 V et l'autre est câblé à la broche lecture numérique ainsi que GND via une résistance.

image1.jpg

Comment mettre en place le code Arduino

Après vous assemblez votre circuit, vous avez besoin du logiciel approprié de l'utiliser. Dans le menu Arduino, choisissez Fichier-exemples-04.Communication-SerialCallResponse. Cette esquisse contient à la fois le code Arduino et le code de traitement pertinent pour l'esquisse de travailler. Le code de traitement sous le code Arduino est commenté pour éviter les interférences avec l'esquisse Arduino.

/ * Appel de série et ResponseLanguage: programme de câblage / ArduinoThis envoie un ASCII A (octet de valeur 65) sur startupand répète que jusqu'à ce qu'il obtienne certaines données in.Then il attend un octet dans le port série, andsends trois valeurs du capteur à chaque fois qu'il obtient Un octet in.Thanks à Greg Shakar et Scott Fitzgerald pour le circuit improvementsThe: * potentiomètres attachés à entrées analogiques 0 et 1 * bouton poussoir attachés aux E / S numérique 2Created 26 septembre 2005by Tom Igoemodified 24 Avril 2012by Tom Igoe et Scott FitzgeraldThis exemple de code est dans la domain.http publique: //arduino.cc/en/Tutorial/SerialCallResponse*/int firstSensor = 0- // premier capteur analogiqueint secondSensor = 0- // second capteur analogiqueint thirdSensor = 0- // capteur numériqueint inByte = 0- // configuration bytevoid série entrant () {// commencer port série à 9600 bps: Serial.begin (9600) -Alors que (de série!) {- // attendre pour le port série pour vous connecter. Nécessaire pour Leonardo seulement}pinMode(2, ENTRÉE) - // Capteur numérique est sur 2establishContact de broche numérique () - // envoyer un octet pour établir le contact jusqu'à ce que le récepteur répond //} void loop () {// si nous obtenons un octet valide, lire ins analogiques: si (série. disponible () 0>) {// obtenir octet entrant: inByte = Serial.read() - // Lire première entrée analogique, diviser par 4 pour faire la gamme 0-255: firstSensor = analogRead(A0) / 4 - // retard 10ms de laisser les ADC récupérer:retard(10) - // lire seconde entrée analogique, diviser par 4 pour faire la gamme 0-255: secondSensor = analogRead(1) / 4 - // lecture de commutation, le mapper à 0 ou 255LthirdSensor = carte(digitalRead(2), 0, 1, 0, 255) - envoyer // valeurs de capteur:Serial.write(firstSensor) -Serial.write(secondSensor) -Serial.write(thirdSensor) -}}vide establishContact () {while (Serial.available () lt; = 0) {Serial.print('UN') - // Envoyer un A majusculeretard(300) -}}

Ajouter ce code à votre Arduino.

Comment mettre en place le code de traitement

Vous trouverez le code de traitement au sein de commentaire multiligne marqueurs (/ * * /) Au bas de l'esquisse Arduino SerialCallResponse. Copiez le code dans les marqueurs de commentaire dans une nouvelle esquisse de traitement et économisez avec un nom approprié.

// Cet exemple de code est dans le domaine public.importation processing.serial *. -int bgcolor- // Couleur de fondint fgcolor- // Remplir colorSerial myPort- // Le port sérieint[] = SerialInArray new int[3] - // Où nous allons mettre ce que nous recevonsint serialCount = 0- // Un compte de combien d'octets que nous recevonsint xpos, ypos- // Position de départ de la ballebooléen FirstContact = faux- // Si nous avons entendu de la configuration // microcontrollervoid () {taille(256, 256) - // taille de la scènenoStroke() - // Pas de frontière sur la prochaine chose dessinée // Définir la position de départ de la balle (au milieu de la scène) xpos = largeur/ 2-ypos = hauteur/ 2 - // Imprimer une liste des ports série, à des fins de débogage:println(Série.liste()) - // Je sais que le premier port dans la liste de série sur mon mac // est toujours mon adaptateur FTDI, donc je ouvre Serial.list () [0] .// Sur les machines Windows, ce qui ouvre généralement COM1. // Ouvrir quel que soit le port est celui que vous utilisez.Chaîne portName = série.liste() [0] = -myPort nouveau (Serialce, portName, 9600) -} void draw () {Contexte(bgcolor) -remplir(fgColor) - // Dessine la formeellipse(XPos, ypos, 20, 20) -}vide serialEvent (myPort de série) {// lire un octet du port série:int inByte = myPort.read () - // si tel est le premier octet reçu, et il est un A, // effacer le tampon de série et notez que vous avez // avait premier contact du microcontrôleur .// Sinon, ajouter le octet arrivant au tableau:si (FirstContact == faux) {si (inByte == 'UN') {MyPort.clear () - // efface le port série bufferfirstContact = vrai- // Vous avez eu le premier contact de la microcontrollermyPort.write ('UN') - // Demander plus}} else {// Ajouter la dernière octet depuis le port série pour tableau: serialInArray [serialCount] = inByte-serialCount ++ - // Si nous avons 3 octets:si (serialCount> 2) {xpos = serialInArray [0] = serialInArray -ypos [1] = -fgcolor serialInArray [2] - // imprimer les valeurs (des fins de débogage):println(xpos + " t" + ypos + " t" + fgColor) - // Envoyer un A majuscule pour demander de nouvelles lectures du capteur: myPort.write ('UN') - // Réinitialiser serialCount: serialCount = 0-}}}

Cliquez sur le bouton Run pour exécuter l'esquisse de traitement, et une applet apparaît. L'applet a un fond noir, et chaque fois que vous appuyez sur le bouton-poussoir, un point blanc apparaît. Déplacer les potentiomètres pour déplacer le point horizontalement et verticalement. Lorsque vous relâchez le bouton, le point disparaît.


» » » » Comment envoyer des signaux multiples de l'Arduino pour le traitement