tatzemax Geschrieben December 25, 2013 at 19:04 Geschrieben December 25, 2013 at 19:04 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 } Zitieren
jan Geschrieben December 25, 2013 at 20:42 Geschrieben December 25, 2013 at 20:42 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. Zitieren
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.