Étape 4: Le code à faire aller !
Le code pour ce petit projet c’est assez simple aussi bien.
Étant donné que le détecteur émet des signaux c' est que X et Y les valeurs. Tout ce que nous devons vraiment faire c’est lire les valeurs et les convertir en quelque chose de « monde réel » que nous pouvons afficher sur notre écran LCD 5110.
Le Code met en place l’affichage 5110. Dessine un petit bulls eye et puis commence à lire les x, les données y de la memsic.
Il fait ensuite un couple de mappages de convertir les 3000 à 6000(ish) sortie en 2 valeurs.
Première étape mappe le memsic de sortie à une échelle pour l’affichage dans x et y (0-48) et (0-84) afin que nous puissions afficher et animer la bulle autour de l’écran.
Il y a également une sortie série qui envoie les données brutes à l’usb. vous n’avez pas à l’utiliser. mais il est là si nécessaire.
La deuxième étape de cartographie puis les échelles les échelles d’affichage de -90 à 90 pour les étiquettes de texte ad Y X sur l’écran pour les angles. (il s’agit d’un affichage de l’angle approximatif) nous ne sommes pas se soucier d’exactitude sans niveau. Nous voulons juste une idée générale !
Voici le code...
#include <SPI.h> //arduino micro led visual level #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> Adafruit_PCD8544 display = Adafruit_PCD8544(5, 6, 7, 8, 9); // pin 2 - Serial clock out (SCLK) 5 // pin 3 - Serial data out (DIN) 6 // pin 4 - Data/Command select (D/C) 7 // pin 12 - LCD chip select (CS) 8 // pin 11 - LCD reset (RST) 9 const int X = A4; //X pin on m2125 const int Y = A5; //Y pin on m2125 int i=0; int dist,inv=0; boolean stan=0; void setup() { //set up serial Serial.begin(9600); pinMode(X, INPUT); pinMode(Y, INPUT); display.begin(); display.setContrast(50); display.clearDisplay(); } void loop() { //read in the pulse data int pulseX, pulseY; int angleX, angleY; int accelerationX, accelerationY; pulseX = pulseIn(X,HIGH); pulseY = pulseIn(Y,HIGH); //map the data for the nokia display accelerationX = map(pulseX, 3740, 6286, 48, 0); accelerationY = map(pulseY, 3740, 6370, 84, 0); // map data to crude angles angleX = map(accelerationX,48,0,-90,90); angleY = map(accelerationY,0,84,-90,90); display.drawRect(0,0,84,48,BLACK); display.drawLine( 42, 0, 42, 48, BLACK); display.drawLine( 0, 24, 84, 24, BLACK); display.drawCircle(42,24,10,BLACK); // display bubble display.fillCircle(accelerationY,(accelerationX),4,BLACK); display.setCursor(4,4); display.println("X: "+ String(angleX)); display.setCursor(4,38); display.println("Y: "+ String(angleY)); display.display(); display.clearDisplay(); //Send the data to the serial in case we'd like to see what's being reported and //possible pc use later Serial.print("X"); Serial.print(pulseX); Serial.print("Y"); Serial.print(pulseY); Serial.println(""); // delay the data feed to we dont overrun the serial delay(90); }