peony3000

Gadgeteer Weather Servos

Apr 18th, 2012
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.50 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using System.Xml;
  4. using Microsoft.SPOT;
  5. using Microsoft.SPOT.Presentation;
  6. using Microsoft.SPOT.Presentation.Controls;
  7. using Microsoft.SPOT.Presentation.Media;
  8. using Microsoft.SPOT.Touch;
  9.  
  10. using Gadgeteer.Networking;
  11. using GT = Gadgeteer;
  12. using GTM = Gadgeteer.Modules;
  13. using Gadgeteer.Modules.GHIElectronics;
  14.  
  15. namespace Gadgeteer_Servo_Weather_01
  16. {
  17.  
  18.  
  19.     public partial class Program
  20.     {
  21.            
  22.         GT.Timer timer = new GT.Timer(1000, GT.Timer.BehaviorType.RunContinuously);
  23.         GT.Interfaces.PWMOutput servo;
  24.         GT.Interfaces.PWMOutput servo1;
  25.         GT.Interfaces.PWMOutput servo2;
  26.         GT.Interfaces.PWMOutput servo3;
  27.         GT.Interfaces.PWMOutput servo4;
  28.         GT.Interfaces.PWMOutput servo5;
  29.  
  30.         // This method is run when the mainboard is powered up or reset.  
  31.         void ProgramStarted()
  32.         {
  33.  
  34.             // jump to the StartWiFi method that starts the WiFi
  35.             StartWiFi();
  36.            
  37.             timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
  38.             timer.Start();
  39.  
  40.             servo = extender.SetupPWMOutput(GT.Socket.Pin.Seven);
  41.             extender.SetupPWMOutput(GT.Socket.Pin.Eight);
  42.             extender.SetupPWMOutput(GT.Socket.Pin.Nine);
  43.             extender1.SetupPWMOutput(GT.Socket.Pin.Seven);
  44.             extender1.SetupPWMOutput(GT.Socket.Pin.Eight);
  45.             extender1.SetupPWMOutput(GT.Socket.Pin.Nine);
  46.  
  47.             servo.Active = true;
  48.             servo1.Active = true;
  49.             servo2.Active = true;
  50.             servo3.Active = true;
  51.             servo4.Active = true;
  52.             servo5.Active = true;
  53.  
  54.             // print something so we know we have started
  55.             Debug.Print("Program Started");
  56.         }
  57.  
  58.         void timer_Tick(GT.Timer timer)
  59.         {
  60.            GetXmlFromWeb();
  61.         }
  62.  
  63.         void StartWiFi()
  64.         {
  65.             wifi.UseDHCP();
  66.             Gadgeteer.Modules.GHIElectronics.WiFi_RS21.WiFiNetworkInfo info = new WiFi_RS21.WiFiNetworkInfo();
  67.             info.SSID = "network_name";
  68.             info.SecMode = WiFi_RS21.SecurityMode.WEP;
  69.             info.networkType = WiFi_RS21.NetworkType.AccessPoint;
  70.             wifi.Join(info, "network_pass");
  71.             wifi.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkDown);
  72.             wifi.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(wifi_NetworkUp);
  73.         }
  74.  
  75.         void wifi_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  76.         {
  77.             Debug.Print("network down: connecting....");
  78.                
  79.         }
  80.  
  81.         void wifi_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
  82.         {
  83.             Debug.Print("network up");
  84.             Debug.Print(wifi.NetworkSettings.IPAddress);
  85.         }
  86.  
  87.         void printServoDisplay(int lineNumber, uint displaySetting)
  88.         {
  89.             //uint xPos = 0;
  90.             //oledDisplay.SimpleGraphics.DisplayText(displayMessage, Resources.GetFont(Resources.FontResources.NinaB), GT.Color.White, xPos, lineNumber*12);
  91.  
  92.             switch (lineNumber)
  93.             {
  94.                 case 0:
  95.                     servo.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  96.                     break;
  97.                 case 1:
  98.                     servo1.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  99.                     break;
  100.                 case 2:
  101.                     servo2.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  102.                     goto case 1;
  103.                 case 3:
  104.                     servo3.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  105.                     goto case 1;
  106.                 case 4:
  107.                     servo4.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  108.                     goto case 1;
  109.                 case 5:
  110.                     servo5.SetPulse(20 * 1000 * 1000, (displaySetting - 10) * 100 * 1000);
  111.                     goto case 1;
  112.                 default:
  113.                     break;
  114.             }
  115.        
  116.         }
  117.  
  118.         void GetXmlFromWeb()
  119.         {
  120.             WebClient.GetFromWeb("http://www.google.com/ig/api?weather=02903").ResponseReceived += new HttpRequest.ResponseHandler(Program_ResponseReceived);
  121.         }
  122.        
  123.         void Program_ResponseReceived(HttpRequest sender, HttpResponse response)
  124.         {
  125.             string elementHolder;
  126.  
  127.             XmlReader reader = XmlReader.Create(response.Stream);
  128.            
  129.             int lineNumberCount = 0;
  130.            
  131.             while (reader.Read())
  132.             {
  133.                
  134.                 switch (reader.NodeType)
  135.                 {
  136.                     case XmlNodeType.Element:
  137.                         //Debug.Print("Element: " + reader.Name);
  138.                         //if (reader.HasAttributes && reader.Name.Equals("current_conditions"))
  139.                         if (reader.Name.Equals("current_conditions"))
  140.                         {
  141.                             reader.ReadToFollowing("temp_f");
  142.                             reader.MoveToFirstAttribute();
  143.                             Debug.Print("Today: " + reader.Value);
  144.                             printServoDisplay(lineNumberCount, Convert.ToUInt32(reader.Value));
  145.                             lineNumberCount++;
  146.                         }
  147.                         else if (reader.Name.Equals("forecast_conditions"))
  148.                         {
  149.                             reader.ReadToFollowing("day_of_week");
  150.                             reader.MoveToFirstAttribute();
  151.                             elementHolder = reader.Value;
  152.                             reader.ReadToFollowing("high");
  153.                             reader.MoveToFirstAttribute();
  154.                             Debug.Print(elementHolder + ": " + reader.Value);
  155.                             //lineNumberCount++;
  156.                             //printServoDisplay(lineNumberCount, elementHolder + ": ");
  157.                             printServoDisplay(lineNumberCount, Convert.ToUInt32(reader.Value));
  158.                             lineNumberCount++;
  159.                            
  160.                         }
  161.                         break;
  162.  
  163.                     case XmlNodeType.EndElement:
  164.                         //Debug.Print("End of Element");
  165.                         break;
  166.                 }
  167.  
  168.             }
  169.  
  170.             //Debug.Print(response.StatusCode);
  171.  
  172.         }
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment