浏览代码

Added support for graphs

Also added small bits of code to center the name on the matrix display.
Kenneth van Ewijk 11 年之前
父节点
当前提交
eb3718cc0b
共有 12 个文件被更改,包括 311 次插入171 次删除
  1. 24 12
      AvgWindspeed.java
  2. 20 8
      CloudHeight.java
  3. 29 12
      GUIboard.java
  4. 4 0
      Grootheid.java
  5. 20 8
      InsideHum.java
  6. 20 8
      InsideTemp.java
  7. 20 8
      OutsideHum.java
  8. 20 8
      OutsideTemp.java
  9. 20 9
      RainRate.java
  10. 20 8
      UVLevel.java
  11. 93 81
      Weerstation.java
  12. 21 9
      WindChill.java

+ 24 - 12
AvgWindspeed.java

@@ -1,32 +1,44 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
-public class AvgWindspeed extends Grootheid{
+public class AvgWindSpeed extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
-    public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
+    public AvgWindSpeed(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
+
     
     
     public void updateRecent(Measurement measurement1){
     public void updateRecent(Measurement measurement1){
         setCurrent(measurement1.getAvgWindSpeed());
         setCurrent(measurement1.getAvgWindSpeed());
     }
     }
-    
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getAvgWindSpeed());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
     public void display(){
     public void display(){
         super.display();
         super.display();
-        GUIboard.writePageToMatrix("Windsnelheid in m/s", "Gemiddelde: " + getAvg(), "");
+        GUIboard.writePageToMatrix("Gem. Windsnelheid", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getAvgWindSpeed());
+        }
+    }
 }
 }

+ 20 - 8
CloudHeight.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class CloudHeight extends Grootheid{
 public class CloudHeight extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public CloudHeight(Measurement measurement1, ArrayList<Measurement> measurement2){
     public CloudHeight(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class CloudHeight extends Grootheid{
         setCurrent(measurement1.getCloudHeight());
         setCurrent(measurement1.getCloudHeight());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getCloudHeight());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class CloudHeight extends Grootheid{
         GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getCloudHeight());
+        }
+    }
 }
 }

+ 29 - 12
GUIboard.java

@@ -125,7 +125,15 @@ public class GUIboard {
         char[] regel1CharArray = regel1.toCharArray();
         char[] regel1CharArray = regel1.toCharArray();
         char[] regel2CharArray = regel2.toCharArray();
         char[] regel2CharArray = regel2.toCharArray();
         char[] regel3CharArray  = (regel3 + nav).toCharArray();
         char[] regel3CharArray  = (regel3 + nav).toCharArray();
-
+        
+        double centerMargins = 20-regel1CharArray.length;
+        int centerLeft = (int) Math.floor(centerMargins/2.0);
+        
+        
+        for(int i=0; i<centerLeft; i++)
+        {
+            IO.writeShort(0x40, ' ');
+        }
         for(char ch : regel1CharArray)
         for(char ch : regel1CharArray)
         {
         {
             IO.writeShort(0x40, ch);
             IO.writeShort(0x40, ch);
@@ -150,34 +158,43 @@ public class GUIboard {
     
     
     public static void writeGraphToMatrix(ArrayList<Double> msList, double min, double max)
     public static void writeGraphToMatrix(ArrayList<Double> msList, double min, double max)
     {
     {
-        IO.init();
         clearBottom();
         clearBottom();
         createAxis(min,max);
         createAxis(min,max);
         
         
         int x,y;
         int x,y;
         double getal;
         double getal;
-        for(int i=0;i<1440;i++)
+        for(double i=0;i<msList.size();i++)
         {
         {
-            getal = msList.get(i);
-            x = ((i/1439)*127);
-            y = (int) ((getal - min)/(max-min))*31;
+            getal = msList.get((int)i);
+            x = (int)((i/msList.size())*127.0);
+            double temp = ((getal - min)/(max-min));
+            y = (int)(temp*31.0);
+            System.out.println(x + ", " + y + " <- " + getal + "/" + msList.size() + " " + i + " -> " + temp);
+            y = 31 - y;
             IO.writeShort(0x42, 1 << 12 | x << 5 | y );
             IO.writeShort(0x42, 1 << 12 | x << 5 | y );
         }
         }
     }
     }
     
     
     //Private functions
     //Private functions
-    private static void createAxis(double min, double max)
+    public static void createAxis(double min, double max)
     {        
     {        
+        //temp
+        
         int x,y;
         int x,y;
         double diff = max-min;
         double diff = max-min;
         double valpix = diff/32;
         double valpix = diff/32;
             
             
         if(min<=0){
         if(min<=0){
-            y = (int) ( (diff-max) / valpix);
-            System.out.println(y);
-            y = 32 - y;
-            System.out.println(y);
-            
+            if(min==0)
+            {
+                y = 31;
+            }
+            else
+            {
+                y = (int) ( (diff-max) / valpix);
+                y = 31 - y;
+                System.out.println("Y: " + y);
+            }
             for(int x2 = 0; x2 < 128; x2++)
             for(int x2 = 0; x2 < 128; x2++)
             {
             {
                 IO.writeShort(0x42, 1 << 12 | x2 << 5 | y );
                 IO.writeShort(0x42, 1 << 12 | x2 << 5 | y );

+ 4 - 0
Grootheid.java

@@ -83,4 +83,8 @@ public class Grootheid
         GUIboard.writeLeftDigits(getMax());
         GUIboard.writeLeftDigits(getMax());
         GUIboard.writeRightDigits(getMin());
         GUIboard.writeRightDigits(getMin());
     }
     }
+    
+    public void displayGraph()
+    {
+    }
 }
 }

+ 20 - 8
InsideHum.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class InsideHum extends Grootheid{
 public class InsideHum extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
     public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class InsideHum extends Grootheid{
         setCurrent(measurement1.getInsideHum());
         setCurrent(measurement1.getInsideHum());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getInsideHum());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class InsideHum extends Grootheid{
         GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getInsideHum());
+        }
+    }
 }
 }

+ 20 - 8
InsideTemp.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class InsideTemp extends Grootheid{
 public class InsideTemp extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public InsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
     public InsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class InsideTemp extends Grootheid{
         setCurrent(measurement1.getInsideTemp());
         setCurrent(measurement1.getInsideTemp());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getInsideTemp());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class InsideTemp extends Grootheid{
         GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getInsideTemp());
+        }
+    }
 }
 }

+ 20 - 8
OutsideHum.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class OutsideHum extends Grootheid{
 public class OutsideHum extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
     public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class OutsideHum extends Grootheid{
         setCurrent(measurement1.getOutsideHum());
         setCurrent(measurement1.getOutsideHum());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getOutsideHum());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class OutsideHum extends Grootheid{
         GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getOutsideHum());
+        }
+    }
 }
 }

+ 20 - 8
OutsideTemp.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class OutsideTemp extends Grootheid{
 public class OutsideTemp extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public OutsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
     public OutsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class OutsideTemp extends Grootheid{
         setCurrent(measurement1.getOutsideTemp());
         setCurrent(measurement1.getOutsideTemp());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getOutsideTemp());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class OutsideTemp extends Grootheid{
         GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getOutsideTemp());
+        }
+    }
 }
 }

+ 20 - 9
RainRate.java

@@ -1,9 +1,10 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class RainRate extends Grootheid{
 public class RainRate extends Grootheid{
-    
+    public ArrayList<Double> list;
     //constructor
     //constructor
     public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
     public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +14,7 @@ public class RainRate extends Grootheid{
         setCurrent(measurement1.getRainRate());
         setCurrent(measurement1.getRainRate());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getRainRate());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +23,21 @@ public class RainRate extends Grootheid{
         GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getRainRate());
+        }
+    }
 }
 }

+ 20 - 8
UVLevel.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class UVLevel extends Grootheid{
 public class UVLevel extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2){
     public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,14 +15,7 @@ public class UVLevel extends Grootheid{
         setCurrent(measurement1.getUVLevel());
         setCurrent(measurement1.getUVLevel());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getUVLevel());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
@@ -29,4 +24,21 @@ public class UVLevel extends Grootheid{
         GUIboard.writePageToMatrix("UV Level", "Gemiddelde: " + getAvg(), "");
         GUIboard.writePageToMatrix("UV Level", "Gemiddelde: " + getAvg(), "");
     }
     }
     
     
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
+    }
+    
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getUVLevel());
+        }
+    }
 }
 }

+ 93 - 81
Weerstation.java

@@ -6,86 +6,98 @@ import java.util.Timer;
 import java.util.TimerTask;
 import java.util.TimerTask;
 
 
 public class Weerstation {
 public class Weerstation {
-	WeerstationConnector weerstation1;
-	Measurement meting1;
-	ArrayList<Measurement> meting2;
-	int currentScreen;
-	boolean wait;
-	
-	public Weerstation(){
-		weerstation1 = new WeerstationConnector();
-		meting1 = weerstation1.getMostRecentMeasurement();
-		meting2 = weerstation1.getAllMeasurementsLast24h();
-		currentScreen = 0;
-		wait = true;
-		IO.init();
-		Timer timer = new Timer();
+    WeerstationConnector weerstation1;
+    Measurement meting1;
+    ArrayList<Measurement> meting2;
+    int currentScreen;
+    boolean wait;
+    boolean graph;
+    
+    public Weerstation(){
+        weerstation1 = new WeerstationConnector();
+        meting1 = weerstation1.getMostRecentMeasurement();
+        meting2 = weerstation1.getAllMeasurementsLast24h();
+        currentScreen = 0;
+        wait = true;
+        graph = false;
+        IO.init();
+        Timer timer = new Timer();
 
 
-		//All the different screen classes
-	
-		final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
-		lstScreens.add(new AvgWindspeed(meting1, meting2));
-		lstScreens.add(new RainRate(meting1, meting2));
-		lstScreens.add(new OutsideTemp(meting1, meting2));
-		lstScreens.add(new InsideTemp(meting1, meting2));
-		lstScreens.add(new OutsideHum(meting1, meting2));
-		lstScreens.add(new InsideHum(meting1, meting2));
-		lstScreens.add(new CloudHeight(meting1, meting2));
-		lstScreens.add(new WindChill(meting1, meting2));
-		lstScreens.add(new UVLevel(meting1, meting2));
-		
-		
-		//Screen switcher
-		timer.scheduleAtFixedRate(new TimerTask() {
-	        public void run() {
-	        	if(wait == false){
-		        	currentScreen++;
-	        	}
-	        	if(currentScreen == lstScreens.size()){
-	        		currentScreen = 0;
-	        	}
-	        	Grootheid obj = lstScreens.get(currentScreen);
-	        	obj.display();   	
-	        }
-	    }, 0, 5*1000);
-		
-		//Update recent measurement every 60 seconds
-		timer.scheduleAtFixedRate(new TimerTask() {
-	        public void run() {
-	        	
-	    		meting1 = weerstation1.getMostRecentMeasurement();
-	    		for(Grootheid obj : lstScreens){
-	    			obj.updateRecent(meting1);
-	    		}
-	        }
-	    }, 60*1000, 60*1000);
-		
-		
-		//Update 24hours every 60 seconds
-		timer.scheduleAtFixedRate(new TimerTask() {
-	        public void run() {
-	        	meting2 = weerstation1.getAllMeasurementsLast24h();
-	    		for(Grootheid obj : lstScreens){
-	    			obj.update24Hour(meting2);
-	    		}
-	        }
-	    }, 10*60*1000, 10*60*1000);
-		
-		
-		//Button checker
-		timer.scheduleAtFixedRate(new TimerTask() {
-	        public void run() {
-	        	if(IO.readShort(0x100) == 1){
-	    			if(IO.readShort(0x80) == 1){
-		    			wait = true;
-		    		}else if(IO.readShort(0x80) == 0){
-		    			wait = false;
-		    		}
-	    		}else if(IO.readShort(0x100) == 0){
-	    			wait = true;
-	    		}	    		
-	        }
-	    }, 0, 100);
-		
-	}
+        //All the different screen classes
+    
+        final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
+        lstScreens.add(new AvgWindSpeed(meting1, meting2));
+        lstScreens.add(new RainRate(meting1, meting2));
+        lstScreens.add(new OutsideTemp(meting1, meting2));
+        lstScreens.add(new InsideTemp(meting1, meting2));
+        lstScreens.add(new OutsideHum(meting1, meting2));
+        lstScreens.add(new InsideHum(meting1, meting2));
+        lstScreens.add(new CloudHeight(meting1, meting2));
+        lstScreens.add(new WindChill(meting1, meting2));
+        lstScreens.add(new UVLevel(meting1, meting2));
+        
+        
+        //Screen switcher
+        timer.scheduleAtFixedRate(new TimerTask() {
+            public void run() {
+                if(!wait){
+                    currentScreen++;
+                }
+                if(currentScreen == lstScreens.size()){
+                    currentScreen = 0;
+                }
+                
+                Grootheid obj = lstScreens.get(currentScreen);
+                if(graph)
+                {
+                    obj.displayGraph();    
+                }
+                else
+                {
+                    obj.display();      
+                }
+            }
+        }, 0, 5*1000);
+        
+        //Update recent measurement every 60 seconds
+        timer.scheduleAtFixedRate(new TimerTask() {
+            public void run() {
+                
+                meting1 = weerstation1.getMostRecentMeasurement();
+                for(Grootheid obj : lstScreens){
+                    obj.updateRecent(meting1);
+                }
+            }
+        }, 60*1000, 60*1000);
+        
+        
+        //Update 24hours every 60 seconds
+        timer.scheduleAtFixedRate(new TimerTask() {
+            public void run() {
+                meting2 = weerstation1.getAllMeasurementsLast24h();
+                for(Grootheid obj : lstScreens){
+                    obj.update24Hour(meting2);
+                }
+            }
+        }, 10*60*1000, 10*60*1000);
+        
+        
+        //Button checker
+        timer.scheduleAtFixedRate(new TimerTask() {
+            public void run() {
+                if(IO.readShort(0x100) == 1){
+                    if(IO.readShort(0x80) == 1){
+                        wait = true;   
+                        graph = true;
+                    }else if(IO.readShort(0x80) == 0){
+                        wait = false;
+                        graph = false;
+                    }
+                }else if(IO.readShort(0x100) == 0){
+                    wait = true;
+                }               
+            }
+        }, 0, 100);
+        
+    }
 }
 }

+ 21 - 9
WindChill.java

@@ -1,9 +1,11 @@
 import java.util.ArrayList;
 import java.util.ArrayList;
 
 
 public class WindChill extends Grootheid{
 public class WindChill extends Grootheid{
+    public ArrayList<Double> list;
     
     
     //constructor
     //constructor
     public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
     public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
+        list = new ArrayList<Double>();
         updateRecent(measurement1);
         updateRecent(measurement1);
         update24Hour(measurement2);
         update24Hour(measurement2);
     }
     }
@@ -13,20 +15,30 @@ public class WindChill extends Grootheid{
         setCurrent(measurement1.getWindChill());
         setCurrent(measurement1.getWindChill());
     }
     }
     public void update24Hour(ArrayList<Measurement> measurement2){
     public void update24Hour(ArrayList<Measurement> measurement2){
-        
-        ArrayList<Double> list = new ArrayList<Double>();
-        
-        for(Measurement ms : measurement2)
-        {
-            list.add(ms.getWindChill());
-        }
-        
+        createList(measurement2);
         calculateMaxMinAvg(list);
         calculateMaxMinAvg(list);
     }
     }
     
     
     public void display(){
     public void display(){
         super.display();
         super.display();
-        GUIboard.writePageToMatrix("Gevoelstemperatuur", "Gemiddelde: " + getAvg(), "");
+        GUIboard.writePageToMatrix("Gevoelstemp", "Gemiddelde: " + getAvg(), "");
+    }
+    
+    public void displayGraph()
+    {
+        GUIboard.writeGraphToMatrix(list, getMin(), getMax());
     }
     }
     
     
+    private void createList(ArrayList<Measurement> measurement2)
+    {
+        if(!list.isEmpty())
+        {
+            list.clear();
+        }
+        
+        for(Measurement ms : measurement2)
+        {
+            list.add(ms.getWindChill());
+        }
+    }
 }
 }