Intellekten Edison basic: vattenpass (2 / 3 steg)
Steg 2: Kodning och kalibrera
Först och främst låt oss börja med definitionen av komponenter och variabler.
MinVal och maxVal är för kalibrering. Detta är en nästan 99% säker sak som du måste ändra av dig själv.
Om du har några problem whit som bara meddelande mig och låt oss se att om kan jag hjälpa dig.
#include
#include "rgb_lcd.h"
rgb_lcd lcd;
Analog Läs pins
CONST int xPin = 0;
CONST int yPin = 1;
CONST int zPin = 2;
Ändra dessa för att kalibrera sensorn acceleration. Få värdena genom att läsa den (zRead)
int minVal = 274;
int maxVal = 450;
dubbel x;
dubbla y;
dubbel z;
Då är dags för installation. I denna behöver du bara starta LCD-skärm och följetong.
void setup() {
Serial.BEGIN(115200);
LCD.BEGIN (16, 2);
}
Slingan är här magin börjar hända.
Först måste du göra beräkningar för acceleration sensormätningar. (i koden tarvlig matten är inte gjort av mig. Jag suger på matte: P) men i grunden denna beräkning innebär att du måste konvertera radianer till grader genom att beräkna (atan2(-y,-z)+PI) att få x graden och så vidare... Här är mer information från ARCTAN2 och beräkning.
void loop() {
int xRead = analogRead(xPin);
int yRead = analogRead(yPin);
int zRead = analogRead(zPin);
konvertera Läs värden till grader -90 till 90 - behövs för ARCTAN2
int xAng = karta (xRead, minVal, maxVal, -90, 90);
int yAng = karta (yRead, minVal, maxVal, -90, 90);
int zAng = karta (zRead, minVal, maxVal, -90, 90);
Caculate 360deg värden som så: ARCTAN2 (-yAng, -zAng)
ARCTAN2 utgångar värdet av - π π (radianer)
Vi sedan konvertera radianer till grader
x = RAD_TO_DEG * (ARCTAN2 (-yAng, -zAng) + PI);
y = RAD_TO_DEG * (ARCTAN2 (-xAng, - zAng) + PI);
z = RAD_TO_DEG * (ARCTAN2 (-yAng, -xAng) + PI);
Resten av koden är ganska enkla och grundläggande saker. Ange RGB-färgen. Och valde att skriva ut eller skriva på skärmen.
Bilden visar hur man gör grundläggande symboler till LCD-skärmen. I exempel vilja göra en pil till höger kommer ni att hitta rätt bild från tabellen och skriva korrekt binära för symbolen (arrowright = 0111 för högre 4 bitar och 1110 nedre bitarna = 01111110 i binär.
Serial.Print ("x:");
Serial.Print(x);
Serial.Print("| y: ");
Serial.Print(y);
Serial.Print("| z: ");
Serial.println(z);
Om du vill ändra färgen helt enkelt ändra siffrorna nedan till något annat. Dvs (255,123,50)
lcd.setRGB (0, 0, 255);
lcd.setCursor(0,0);
LCD.Print("X:");
LCD.Print(x);
lcd.setCursor(7,0);
LCD.write(0b11011111);
lcd.setCursor(0,1);
LCD.Print("Y:");
LCD.Print(y);
lcd.setCursor(7,1);
LCD.write(0b11011111);
lcd.setCursor(15,0);
LCD.write(0b01011110);
lcd.setCursor(15,1);
pilen är den här.
LCD.write(0b01111110);
Delay(1000);
}