From d7375205ee6750327fb78813499ad25b8b257535 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Fri, 17 Oct 2014 19:20:05 +0200 Subject: [PATCH] Fixed the fucked up shit --- Calculator.java | 129 +++++++++++++++++--------------------- Measurement.java | 2 +- Periode.java | 26 +++++++- README.TXT | 12 ++++ Weerstation.java | 22 ++++--- WeerstationConnector.java | 3 +- WindDirection.java | 91 +++++++++++++++++++++++++++ 7 files changed, 199 insertions(+), 86 deletions(-) create mode 100644 README.TXT create mode 100644 WindDirection.java diff --git a/Calculator.java b/Calculator.java index 09dd7b0..ef9781a 100644 --- a/Calculator.java +++ b/Calculator.java @@ -1,23 +1,23 @@ public class Calculator { - - // Luchtdruk in hPa - // Malek&Tom - public static double luchtdruk(short mval) + + // Luchtdruk in hPa + // Malek&Tom + public static double luchtdruk(short mval) { double luchtdruk = (mval / 1000f) * 33.86389; return luchtdruk; } - - // Temperatuur in graden Celcius + + // Temperatuur in graden Celcius // Malek&Tom public static double temperatuur(short mval) { double temperatuur = (((double)mval / 10) -32) / 1.8; return temperatuur; } - + // Relatieve luchtvochtigheid in % // Malek&Tom public static double luchtVochtigheid(short mval) @@ -27,15 +27,15 @@ public class Calculator { } // Windsnelheid in m/s - // Janco&Tim - public static double windSnelheid(short mval) - { - double windSpeed = mval * 0.44704; - return windSpeed; - } - - // Windrichting in noord, oost, zuid en west. - // Kenneth&Daniël + // Janco&Tim + public static double windSnelheid(short mval) + { + double windSpeed = mval * 0.44704; + return windSpeed; + } + + // Windrichting in noord, oost, zuid en west. + // Kenneth&Daniël public static String windRichting(short mval) { String direction = "Error"; @@ -111,16 +111,16 @@ public class Calculator { return direction; } - + // Regenmeter in mm // Kenneth&Daniël public static double regenmeter(short mval) - { - double rainAmount = (double)mval*0.2; - return rainAmount; - } + { + double rainAmount = (double)mval*0.2; + return rainAmount; + } - // uvIndex in index + // uvIndex in index // Kenneth&Daniël public static double uvIndex(short mval) { @@ -131,37 +131,37 @@ public class Calculator { // BatterySpanning in Volt // Janco&Tim public static double batterySpanning(short mval){ - double voltage = (((double)mval * 300)/512)/100; - return voltage; - } - + double voltage = (((double)mval * 300)/512)/100; + return voltage; + } + // sunRise en Sunset in tijdformaat hh:mm - // Janco&Tim + // Janco&Tim public static String sunRise(short mval){ - return sun(mval); + return sun(mval); } public static String sunSet(short mval){ - return sun(mval); + return sun(mval); } - private static String sun(short sunRaw){ - String tijd = ""; - for(int i = 0; i <= 3; i++){ - tijd = sunRaw % 10 + tijd; - sunRaw /= 10; - if(i == 1){ - tijd = ":" + tijd; - } - } - return tijd; - } - - public static double solarRad(short mval){ - double zonSterkte = mval; - return zonSterkte; + private static String sun(short sunRaw){ + String tijd = ""; + for(int i = 0; i <= 3; i++){ + tijd = sunRaw % 10 + tijd; + sunRaw /= 10; + if(i == 1){ + tijd = ":" + tijd; + } + } + return tijd; + } + + public static double solarRad(short mval){ + double zonSterkte = mval; + return zonSterkte; } //windchill in graden Celcius - //Janco en Keneth + //Janco en Keneth public static double windChill(short grdnFh, short mph) { double gradenFahrenheit = grdnFh; @@ -172,29 +172,12 @@ public class Calculator { } //Heatindex in celcius - //Tom met Malek - public static double heatIndex(short RH, short T2) - { - double T = T2/10; - double HI = -42.379 + 2.04901523*T + 10.14333127*RH - .22475541*T*RH - .00683783*T*T - .05481717*RH*RH + .00122874*T*T*RH + .00085282*T*RH*RH - .00000199*T*T*RH*RH; - - if (RH < 13 && T < 112 && T > 80) - { - HI =- ((13-RH)/4)*Math.sqrt((17-Math.abs(T-95.))/17); - } - - if (RH > 85 && T < 87 && T > 80) - { - HI =+ ((RH-85)/10) * ((87-T)/5); - } - - if (T > 80) - { - HI = 0.5 * (T + 61.0 + ((T-68.0)*1.2) + (RH*0.094)); - } - - double heatindex = Calculator.temperatuur( (short) (HI*10) ); - return heatindex; + //Tom met Malek + public static double heatIndex(double RH, double T) + { + double HI = -42.379 + 2.04901523*T + 10.14333127*RH - .22475541*T*RH - .00683783*T*T - .05481717*RH*RH + .00122874*T*T*RH + .00085282*T*RH*RH - .00000199*T*T*RH*RH; + double heatindex = Calculator.temperatuur( (short) (HI*10) ); + return heatindex; } //Dauwpunt in Celcius @@ -205,11 +188,11 @@ public class Calculator { double dauwpunt = Math.pow( hm, (1/8f)) * (112 + 0.9*omgevingsTemp) + (0.1*omgevingsTemp) - 112; return dauwpunt; } - + public static double cloudHeight(double temp, short luchtVochtigheid ){ - - double wolkhoogte = 125 * (temp-dewPoint(temp, luchtVochtigheid)); - return wolkhoogte; - } + + double wolkhoogte = 125 * (temp-dewPoint(temp, luchtVochtigheid)); + return wolkhoogte; + } } diff --git a/Measurement.java b/Measurement.java index c727b71..51ef152 100644 --- a/Measurement.java +++ b/Measurement.java @@ -88,7 +88,7 @@ public class Measurement // solarRad public void setRawSolarRad (short val) { this.solarRad = val;}; public short getRawSolarRad () { return solarRad; }; - public double getSolarRad () {return Calculator.solarRad(solarRad);} + public double getSolarRad () { return Calculator.solarRad(solarRad); }; // xmitBatt diff --git a/Periode.java b/Periode.java index 4ca4cad..99d4d30 100644 --- a/Periode.java +++ b/Periode.java @@ -1,7 +1,29 @@ +import java.util.GregorianCalendar; + public class Periode { + public GregorianCalendar beginPeriode; + public GregorianCalendar eindePeriode; + public Periode() { - } -} + + public Periode(int jaar, int maand, int dag, int eindjaar, int eindmaand, int einddag) + { + beginPeriode = new GregorianCalendar(); + eindePeriode = new GregorianCalendar(); + beginPeriode.set(jaar, maand, dag,0,0,0); + eindePeriode.set(eindjaar, eindmaand, einddag,23,59,59); + } + + public GregorianCalendar getBeginPeriode() + { + return beginPeriode; + } + + public GregorianCalendar getEindePeriode() + { + return eindePeriode; + } +} \ No newline at end of file diff --git a/README.TXT b/README.TXT new file mode 100644 index 0000000..2bea2dd --- /dev/null +++ b/README.TXT @@ -0,0 +1,12 @@ +------------------------------------------------------------------------ +This is the project README file. Here, you should describe your project. +Tell the reader (someone who does not know anything about this project) +all he/she needs to know. The comments should usually include at least: +------------------------------------------------------------------------ + +PROJECT TITLE: +PURPOSE OF PROJECT: +VERSION or DATE: +HOW TO START THIS PROJECT: +AUTHORS: +USER INSTRUCTIONS: diff --git a/Weerstation.java b/Weerstation.java index 69e3f04..959d207 100644 --- a/Weerstation.java +++ b/Weerstation.java @@ -4,10 +4,13 @@ import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; +import java.util.Calendar; public class Weerstation { WeerstationConnector weerstation1; + Calendar now; Measurement meting1; + Periode periodeDag; ArrayList meting2; Timer starter; int currentScreen; @@ -17,13 +20,16 @@ public class Weerstation { public Weerstation(){ weerstation1 = new WeerstationConnector(); + now = Calendar.getInstance(); + + periodeDag = new Periode(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH); GUIboard.init(); starter = new Timer(); startAnimatie(); meting1 = weerstation1.getMostRecentMeasurement(); - meting2 = weerstation1.getAllMeasurementsLast24h(); + meting2 = weerstation1.getAllMeasurementsBetween(periodeDag.getBeginPeriode(), periodeDag.getEindePeriode()); stopAnimatie(); while(startup) @@ -46,14 +52,12 @@ public class Weerstation { //All the different screen classes - final List lstScreens = new ArrayList(); - + final List lstScreens = new ArrayList(); + lstScreens.add(new WindDirection(meting1, meting2)); lstScreens.add(new OutsideTemp(meting1, meting2)); lstScreens.add(new WindChill(meting1, meting2)); - lstScreens.add(new HeatIndex(meting1, meting2)); lstScreens.add(new OutsideHum(meting1, meting2)); lstScreens.add(new Barometer(meting1, meting2)); - lstScreens.add(new Voorspellingen(meting1)); lstScreens.add(new AvgWindSpeed(meting1, meting2)); lstScreens.add(new RainRate(meting1, meting2)); lstScreens.add(new InsideTemp(meting1, meting2)); @@ -62,6 +66,7 @@ public class Weerstation { lstScreens.add(new UVLevel(meting1, meting2)); lstScreens.add(new Zonsterkte(meting1, meting2)); lstScreens.add(new DewPoint(meting1, meting2)); + lstScreens.add(new Sun(meting1)); @@ -93,7 +98,7 @@ public class Weerstation { meting1 = weerstation1.getMostRecentMeasurement(); for(Grootheid obj : lstScreens){ - obj.updateRecent(meting1); + obj.updateRecent(meting1); } } }, 60*1000, 60*1000); @@ -162,10 +167,11 @@ public class Weerstation { GUIboard.clearBottom(); - for(int i=0; i<128;i++) + for(int i=1; i<128;i+=2) { for(int n=0; n<32;n++) { + IO.writeShort(0x42, 1 << 12 | i-1 << 5 | n); IO.writeShort(0x42, 1 << 12 | i << 5 | n); IO.delay(1); } @@ -173,7 +179,7 @@ public class Weerstation { startup = false; } - }, 0, 64*2); + }, 0, 128*32); } public void stopAnimatie() diff --git a/WeerstationConnector.java b/WeerstationConnector.java index 9c4b75b..22e5242 100644 --- a/WeerstationConnector.java +++ b/WeerstationConnector.java @@ -25,7 +25,6 @@ public class WeerstationConnector //Start connection with Databse public WeerstationConnector(String host, String port, String dbName, String userName, String password) { - System.out.println("Verbinding maken met de database...\n"); try { String url = "jdbc:mysql://" + host + ":" + port + "/"+ dbName + "?user=" @@ -34,7 +33,7 @@ public class WeerstationConnector + password; Class.forName("com.mysql.jdbc.Driver").newInstance (); myConn = DriverManager.getConnection(url); - System.out.println("Verbonden met de database"); + System.out.println("Database connection established"); } catch( SQLException ex) { diff --git a/WindDirection.java b/WindDirection.java new file mode 100644 index 0000000..2519259 --- /dev/null +++ b/WindDirection.java @@ -0,0 +1,91 @@ +import java.util.ArrayList; + +public class WindDirection extends Grootheid{ + public ArrayList list; + + //constructor + public WindDirection(Measurement measurement1, ArrayList measurement2){ + list = new ArrayList(); + updateRecent(measurement1); + update24Hour(measurement2); + } + + + public void updateRecent(Measurement measurement1){ + setCurrent(measurement1.getRawWindDir()); + } + public void update24Hour(ArrayList measurement2){ + createList(measurement2); + calculateMaxMinAvg(list); + } + + public void display(){ + super.display(); + GUIboard.writePageToMatrix("Windrichting", "Gemiddelde: " + getAvg(), ""); + } + + public void displayGraph() + { + GUIboard.writePageToMatrix("", "West East", ""); + + int x,y; + int radius = 15; + double degree= getCurrent(); + int x2 = 0; + int y2 = 0; + + degree -= 90; + + if( degree < 0){ + degree += 360; + } + + for(double i = 0; i< 360; i+= 1) + { + x = (int)(64 + (radius*Math.cos(i * Math.PI / 180))); + y = (int)(16 + radius*Math.sin(i * Math.PI / 180)); + System.out.println("x: " + x + " Y: " + y); + if(i == degree){ + x2 = x; + y2 = y; + } + IO.writeShort(0x42, 1 << 12 | x << 5 | y); + } + line(64, 16, x2, y2); + } + + public static void line(int x1,int y1,int x2, int y2) { + + if(x1 > x2) + { + int x3 = x1; + x1 = x2; + x2 = x3; + int y3 = y1; + y1 = y2; + y2 = y3; + } + + + int x,y; + int deltax = x2 - x1 ; + int deltay = y2 - y1 ; + for (x=x1; x<=x2; x++) { + y = y1 + deltay * (x - x1) / deltax; + IO.writeShort(0x42, 1 << 12 | x << 5 | y); + } + } + + private void createList(ArrayList measurement2) + { + if(!list.isEmpty()) + { + list.clear(); + } + + for(Measurement ms : measurement2) + { + list.add( (double)ms.getRawWindDir()); + } + } +}