tatzemax Posted December 25, 2013 at 07:04 PM Share Posted December 25, 2013 at 07:04 PM Hallo und Frohe Weihnachten. An dieser Stelle wollte ich mal ein kleines Projekt vorstellen. Ich habe dafür das Segment Display 4x7 und das Temperature Bricklet genutzt, auf dem Segment Display lasse ich abwechseld die Systemuhrzeit und die Temperatur vom Temperature Bricklet anzeigen. Das ganze habe ich C++ geschrieben, denn Quellcode habe ich mal angefügt, falls jemand Tipps und Verbresserungen für den Code hat... ich würde mich freuen. (Ich bin Anfänger seih mir das zusammenkopiern der einzelnen Quellcode verziehen). #include <stdio.h> #include <time.h> #include "ip_connection.h" #include "bricklet_segment_display_4x7.h" #include "bricklet_temperature.h" #define HOST "localhost" #define PORT 4223 const uint8_t digits[] = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; // 0~9,A,b,C,d,E,F int main(void) { // Create IP connection IPConnection ipcon; ipcon_create(&ipcon); // Create device object SegmentDisplay4x7 sd4x7; segment_display_4x7_create(&sd4x7, "iX8", &ipcon); // Create device object Temperature t; temperature_create(&t, "dX3", &ipcon); // Connect to brickd if(ipcon_connect(&ipcon, HOST, PORT) < 0) { fprintf(stderr, "Keine Verbinung möglich\n"); exit(1); } while('a'=='a') { struct tm *newtime; time_t long_time; time( &long_time ); newtime = localtime( &long_time ); int stunde = newtime->tm_hour; int minute = newtime->tm_min; //Befehl an die Anzeige senden uint8_t segmentsuhr[4] = {digits[stunde/10], digits[stunde%10], digits[minute/10], digits[minute%10]}; segment_display_4x7_set_segments(&sd4x7, segmentsuhr, 1, true); usleep(10000000);//10 Sekunden // Temperatur auslesen (°C/100) int16_t temperature; if(temperature_get_temperature(&t, &temperature) < 0) { fprintf(stderr, "Kein Wert abrufbar\n"); exit(1); } temperature = temperature/100.0;//Temperatur auf 2 Ziffern vor dem Komma bringen // Temperatur auf Anzeige schreiben uint8_t segmentstemp[4] = {digits[temperature/10], digits[temperature%10],0x63, digits[12]}; segment_display_4x7_set_segments(&sd4x7, segmentstemp, 1, false); usleep(10000000);//10 Sekunden } ipcon_destroy(&ipcon); // Calls ipcon_disconnect internally } Quote Link to comment Share on other sites More sharing options...
jan Posted December 25, 2013 at 08:42 PM Share Posted December 25, 2013 at 08:42 PM sehr schick. ich habe bei mir die Zeitanzeige sekündlich gemacht. Damit konnte ich den ":" blicken lassen ich habe zwei Anzeigen nebeneinander. Die rechte "steht Kopf". Dafür die Zeichen (Python): DIGITS2= [0x3f,0x30,0x5b,0x79, 0x74,0x6d,0x6f,0x38, 0x7f,0x7d,0x7E,0x67, 0x0f,0x73,0x4f,0x4e] # // 0~9,A,b,C,d,E,F setz ich bei Zeit mal ins Wiki, bzw. @TF für die Doku. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.