10.1 Kombiniert die Übung 6.4 Wenn sich jemand nähert, Lauflicht einschalten mit dem Yahoo Weather Dienst, dass bei Unterwarnungen das Lauflicht eingeschaltet wird.
Dependencies: EthernetInterface mbed-rtos mbed spxml
Fork of YahooWeather by
Diff: main.cpp
- Revision:
- 6:735d5412de0d
- Parent:
- 5:f81113cbe930
--- a/main.cpp Wed May 27 15:17:54 2015 +0000 +++ b/main.cpp Wed May 27 17:23:55 2015 +0000 @@ -1,4 +1,4 @@ -/** Beispiel Abfrage Yahoo Weather fuer Zuerich +/** 10.1 Kombiniert die Übung 6.4 Wenn sich jemand nähert, Lauflicht einschalten mit dem Yahoo Weather Dienst, dass bei Unterwarnungen das Lauflicht eingeschaltet wird. */ #include "mbed.h" #include "HTTPClient.h" @@ -15,6 +15,54 @@ char message[6000]; DigitalOut myled(LED1); +// Lauflicht +DigitalOut led1( D10 ); +DigitalOut led2( D11 ); +DigitalOut led3( D12 ); +DigitalOut led4( D13 ); +PwmOut buzzer( D7 ); // Buzzer + +/** Alarm: Lauflicht und Summer einschalten */ +void alarm() +{ + // 10x Lauflicht durchlaufen + for ( int t = 0; t < 10; t++ ) + { + // Buzzer bleibt eingeschaltet werden die LED ON sind + buzzer.period( 1.0 / 900.0) ; // 900hz period + buzzer = 0.5; // 50% duty cycle - max volume + for ( int i = 0; i < 5; i++ ) + { + switch ( i ) + { + case 0: + led1 = led2 = led3 = led4 = 0; + break; + case 1: + led1 = 1; + break; + case 2: + led1 = 0; + led2 = 1; + break; + case 3: + led2 = 0; + led3 = 1; + break; + case 4: + led3 = 0; + led4 = 1; + break; + } + // wait bis naechstes LED aktiviert wird + wait( 0.2 ); + } + // Ruhe und alle LED off + buzzer = 0; + led4 = 0; + wait ( 0.5 ); + } +} int main() { @@ -37,13 +85,14 @@ SP_XmlElementNode * node = rootHandle.getChild( "channel" ).toElement(); SP_XmlHandle handle(node); - SP_XmlElementNode * condition = handle.getChild( "item" ).getChild("yweather:condition").toElement(); - // Allgemeine Lage, Sonnig, Bewoelkt etc. - printf( "%s, ", condition->getAttrValue("text") ); - // Temperatur in Celsius - printf( "%sC, ", condition->getAttrValue("temp") ); - // Datum und Zeit letzte Aktualisierung - printf( "%s\n", condition->getAttrValue("date") ); + SP_XmlElementNode * wind = handle.getChild("yweather:wind").toElement(); + // Windgeschwindigkeit + printf( "Windgeschwindigkeit %s\n", wind->getAttrValue("speed") ); + float speed; + sscanf( wind->getAttrValue("speed"), "%f", &speed ); + // wenn Wind staerker als 60 Kmh Alarm ausloesen. + if ( speed > 60.0f ) + alarm(); } else printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());