Ställa in en A100LK vindmätaren på en Arduino (6 / 7 steg)
Steg 6: Kod för Nano
#include < Adafruit_GFX.h >
#include < Adafruit_ST7735.h >
#include < SD.h >
#include < SPI.h >
#if defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif
D4 är frekvensen input.
D3 är tonen.
flyta kalibrering = 1.0047; (46.62 / 46,4)
#define SD_CS 4 / / Chip Välj linje för SD-kort
#define TFT_CS 10 / / Chip Välj linje för TFT-skärm
#define TFT_DC 8 / / Data/command line för TFT
#define TFT_RST -1 / / Reset linje för TFT (eller ansluta till + 5V)
Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);
int frekvens;
int z = 0;
flyta korrigering = 0;
flyta knop = 0;
flyta knotsMax = 0;
flyta knotsAv = 0;
flyta runningTotal = 0;
void setup(void)
{
Serial.BEGIN(9600);
Initiera 1.8" TFT
tft.initR(INITR_BLACKTAB); initiera en ST7735S chip, svart flik
Serial.println("OK!");
tft.setRotation(3); Rotera text TFT
tft.fillScreen(ST7735_BLACK);
tft.setTextSize(5);
tft.setTextColor(ST7735_RED);
Delay(20);
tft.setCursor (20, 10);
TFT.Print("Cat");
pinMode(4,INPUT);
}
void loop()
{
z = 0;
knotsMax = 0;
knotsAv = 0;
runningTotal = 0;
medan (z < 20)
{
z ++;
ton (3,500,100);
frekvens = 500000/pulseIn(4,HIGH,5000000);
om (frekvens < 0) {frekvens = 0;}
korrigering = 0;
adjustments();
knop = (frekvens * kalibrering /10) + rättelse;
om (knop > knotsMax) {knotsMax = knop.}
runningTotal = runningTotal + knop.
knotsAv = runningTotal / z;
Printing();
Delay(5000);
}
}
void adjustments()
{
om ((frekvens > = 1) & & (frekvens < = 100)) {korrigering = 0,20;}
om ((frequency >100) & & (frekvens < = 200)) {korrigering = 0.10;}
om ((frequency >200) & & (frekvens < = 300)) {korrigering =-0.25;}
om ((frequency >300) & & (frekvens < = 400)) {korrigering =-0.60;}
om ((frequency >400) & & (frekvens < = 500)) {korrigering = -1;}
om ((frequency >500) & & (frekvens < = 600)) {korrigering =-1.4;}
om ((frequency >600) & & (frekvens < = 700)) {korrigering =-1.75;}
om ((frequency >700) & & (frekvens < = 800)) {korrigering = -2;}
om ((frequency >800) & & (frekvens < = 900)) {korrigering =-2.20;}
om ((frequency >900) & & (frekvens < = 1000)) {korrigering =-2.35;}
om ((frequency >1000) & & (frekvens < = 1100)) {korrigering =-2.40;}
om ((frequency >1100) & & (frekvens < = 1200)) {korrigering =-2.50;}
om ((frequency >1200) & & (frekvens < = 1300)) {korrigering =-2.50;}
om ((frequency >1300) & & (frekvens < = 1400)) {korrigering =-2.50;}
om ((frequency >1400) & & (frekvens < = 1500)) {korrigering =-2.45;}
om ((frequency >1500) & & (frekvens < = 1600)) {korrigering =-2.40;}
}
void printing()
{
tft.fillScreen(ST7735_BLACK);
tft.setTextSize(2);
tft.setTextColor(ST7735_BLUE);
Delay(20);
tft.setCursor (20, 10);
TFT.Print("Windspeed");
tft.setTextSize(2);
tft.setCursor (0, 50);
tft.setTextColor(ST7735_YELLOW);
TFT.Print("Frequency:");
tft.setCursor (120, 50);
TFT.Print(Frequency);
tft.setCursor (0, 70);
TFT.Print("knots:");
tft.setCursor (80, 70);
TFT.Print(knots);
tft.setCursor (0, 90);
TFT.Print("Max:");
tft.setCursor (80, 90);
TFT.Print(knotsMax);
tft.setCursor (0, 110);
TFT.Print("av:");
tft.setCursor (80, 110);
TFT.Print(knotsAv);
Serial.Print ("frekvens =");
Serial.println(Frequency);
Serial.Print ("knop =");
Serial.println(knots,4);
Serial.Print (Max. = ");
Serial.println(knotsMax,4);
Serial.Print ("Av. =");
Serial.println(knotsAv,4);
Serial.Print ("z =");
Serial.println(z);
Serial.println("");
}