Stap 4: De code om het gaan te maken!
De code voor dit kleine project vrij eenvoudig ook.
Omdat de sensor het signalen als X stuurt en Y-waarden. Alles wat we echt nodig om te doen is lezen de waarden en hen omzetten in iets "echte wereld", die we op onze 5110 LCD-scherm kan worden weergegeven.
De Code stelt het 5110 display. Tekent een beetje stieren oog en dan begint de x, y gegevens lezen uit de memsic.
het doet dan een paar van de toewijzingen aan de 3000 naar 6000(ish)-uitvoer converteren naar 2 waarden.
Fase één kaarten de output naar een schaal voor de weergave in zowel x en y (0-48) en (0-84) zodat we kunnen weergeven en de zeepbel animeren rond het display memsic.
Er is ook een seriële uitgang die de ruwe gegevens worden verzonden naar de usb. u hoeft niet te gebruiken. maar het is daar indien nodig.
De tweede fase toewijzen dan schalen de weergave geschaald uitbreidbaar tot-90 90 voor de tekstlabels van de X-ad Y op het display voor hoeken. (dit is een weergave van de geschatte hoek) we niet zorgen te maken over de nauwkeurigheid zonder niveau. We willen gewoon een algemeen idee!
Hier is de 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); }