Paso 4: El código para hacer que vaya!
El código para este proyecto bastante simple también.
Puesto que el sensor emite sus señales como X y Y valores. Todo lo que realmente necesitamos hacer es leer los valores y convertirlos en algo "mundo real" que podemos mostrar en nuestra pantalla de 5110.
El código establece la pantalla 5110. Dibuja un pequeño ojo de toros y luego comienza leyendo los datos de y, x de la memsic.
entonces hace un par de asignaciones para convertir la 3000 a 6000(ish) salida en 2 valores.
Primera etapa mapas memsic salida a escala de la pantalla en x y y (0-48) y (0-84) para que podamos mostrar y animar la burbuja alrededor de la pantalla.
También es una salida serial que envía los datos al usb. no tienes que usarlo. pero allí si es necesario.
La segunda etapa de asignación entonces escalas las escalas de pantalla a -90 a 90 para las etiquetas de texto de anuncio Y de X en la pantalla para los ángulos. (esto es un indicador de ángulo aproximado) no estamos preocupando de precisión sin nivel. sólo queremos una idea general.
Aquí está el código...
#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); }