Pebble time watch Smartstrap Tutorial (3 / 4 stap)

Stap 3: Programmering pebble time


  1. Opzetten van een kiezelsteen-account op cloudpebble

  2. Zorg ervoor dat de PC en de Smartphone zijn op hetzelfde lokale netwerk dan de ontwikkelaar verbinding op uw smartphone Pebble time app Instellingen--> Developer Connection inschakelen
  3. Maak een nieuw leeg project, voeg een nieuwe bronbestand met de naam "main.c" dan plaats de volgende code aan het
 #include <pebble.h> #define TIMEOUT_MS 1000 #define MAX_READ_SIZE 100 static Window *s_main_window; static TextLayer *s_status_layer; static TextLayer *s_attr_text_layer; static char s_text_buffer1[20]; static SmartstrapAttribute *s_raw_attribute; static SmartstrapAttribute *s_attr_attribute; static void prv_update_text(void) { if (smartstrap_service_is_available(0x1001)) { text_layer_set_text(s_status_layer, "Connected!"); } else { text_layer_set_text(s_status_layer, "Connecting..."); } } static void prv_did_read(SmartstrapAttribute *attr, SmartstrapResult result, const uint8_t *data, size_t length) { char str[50] = " "; if (attr == s_attr_attribute) { APP_LOG(APP_LOG_LEVEL_DEBUG, "did_read(s_attr_attribute, %d, %d)", result, length); if (result == SmartstrapResultOk ) { memcpy(str, data, length); str[length] = '\0'; snprintf(s_text_buffer1, 50, "%s", str); text_layer_set_text(s_attr_text_layer, s_text_buffer1); APP_LOG(APP_LOG_LEVEL_DEBUG, "message: %s)", str); } }else { APP_LOG(APP_LOG_LEVEL_ERROR, "did_read(<%p>, %d)", attr, result); } } static void prv_did_write(SmartstrapAttribute *attr, SmartstrapResult result) { if (attr == s_attr_attribute) { APP_LOG(APP_LOG_LEVEL_DEBUG, "did_write(s_attr_attribute, %d)", result); } else { APP_LOG(APP_LOG_LEVEL_ERROR, "did_write(<%p>, %d)", attr, result); } } static void prv_write_button_action(uint8_t button_value, uint8_t click_type) { SmartstrapResult result; if (!smartstrap_service_is_available(smartstrap_attribute_get_service_id(s_attr_attribute))) { APP_LOG(APP_LOG_LEVEL_DEBUG, "s_attr_attribute is not available"); return; } // get the write buffer uint8_t *buffer = NULL; size_t length = 0; result = smartstrap_attribute_begin_write(s_attr_attribute, &buffer, &length); if (result != SmartstrapResultOk) { APP_LOG(APP_LOG_LEVEL_ERROR, "Write of s_attr_attribute failed with result %d", result); return; } // write the data into the buffer buffer[0] = button_value; buffer[1] = click_type; // send it off result = smartstrap_attribute_end_write(s_attr_attribute, 2, false); if (result != SmartstrapResultOk) { APP_LOG(APP_LOG_LEVEL_ERROR, "Write of s_attr_attribute failed with result %d", result); } } static void prv_availablility_status_changed(SmartstrapServiceId service_id, bool is_available) { APP_LOG(APP_LOG_LEVEL_DEBUG, "Availability for 0x%x is %d", service_id, is_available); prv_update_text(); } static void prv_notified(SmartstrapAttribute *attr) { SmartstrapResult result; if (attr == s_attr_attribute) { APP_LOG(APP_LOG_LEVEL_DEBUG, "notified(s_attr_attribute)"); result = smartstrap_attribute_read(s_attr_attribute); if(result != SmartstrapResultOk) { APP_LOG(APP_LOG_LEVEL_ERROR, "Error reading attribute (<%p>, %d)", attr, result); } } else { APP_LOG(APP_LOG_LEVEL_ERROR, "notified(<%p>)", attr); } } static void up_click_handler(ClickRecognizerRef recognizer, void *context) { prv_write_button_action(0x02, 0x01); } static void select_click_handler(ClickRecognizerRef recognizer, void *context) { prv_write_button_action(0x03, 0x01); } static void down_click_handler(ClickRecognizerRef recognizer, void *context) { prv_write_button_action(0x04, 0x01); } static void click_config_provider(void *context) { window_single_click_subscribe(BUTTON_ID_UP, up_click_handler); window_single_click_subscribe(BUTTON_ID_SELECT, select_click_handler); window_single_click_subscribe(BUTTON_ID_DOWN, down_click_handler); } static void prv_main_window_load(Window *window) { s_status_layer = text_layer_create(GRect(0, 15, 144, 40)); text_layer_set_font(s_status_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28)); prv_update_text(); text_layer_set_text_color(s_status_layer, GColorBlack); text_layer_set_background_color(s_status_layer, GColorClear); text_layer_set_text_alignment(s_status_layer, GTextAlignmentCenter); text_layer_set_overflow_mode(s_status_layer, GTextOverflowModeWordWrap); layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_status_layer)); s_attr_text_layer = text_layer_create(GRect(0, 60, 144, 40)); text_layer_set_font(s_attr_text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28)); text_layer_set_text(s_attr_text_layer, "-"); text_layer_set_text_color(s_attr_text_layer, GColorBlack); text_layer_set_background_color(s_attr_text_layer, GColorClear); text_layer_set_text_alignment(s_attr_text_layer, GTextAlignmentCenter); text_layer_set_overflow_mode(s_attr_text_layer, GTextOverflowModeWordWrap); layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_attr_text_layer)); } static void prv_main_window_unload(Window *window) { text_layer_destroy(s_status_layer); } static void prv_init(void) { s_main_window = window_create(); window_set_click_config_provider(s_main_window, click_config_provider); window_set_window_handlers(s_main_window, (WindowHandlers) { .load = prv_main_window_load, .unload = prv_main_window_unload }); window_stack_push(s_main_window, true); SmartstrapHandlers handlers = (SmartstrapHandlers) { .availability_did_change = prv_availablility_status_changed, .did_write = prv_did_write, .did_read = prv_did_read, .notified = prv_notified }; smartstrap_subscribe(handlers); smartstrap_set_timeout(50); s_raw_attribute = smartstrap_attribute_create(0, 0, 2000); s_attr_attribute = smartstrap_attribute_create(0x1001, 0x1001, 20); } static void prv_deinit(void) { window_destroy(s_main_window); smartstrap_unsubscribe(); smartstrap_attribute_destroy(s_raw_attribute); smartstrap_attribute_destroy(s_attr_attribute); }int main(void) { prv_init(); APP_LOG(APP_LOG_LEVEL_DEBUG, "STARTING APP"); if (s_attr_attribute && s_raw_attribute) { app_event_loop(); } APP_LOG(APP_LOG_LEVEL_DEBUG, "ENDING APP"); prv_deinit(); } 

4. in het tabblad Instellingen deselecteren Build Apliet aangezien wij aan het opbouwen zijn om uit te voeren op Pebble time horloges

5. in het lusje van de compilatie Selecteer telefoon in plaats van de Emulator te programmeren van onze echte horloge

6. Voer de code door te klikken op de knop afspelen

Gerelateerde Artikelen

Pebble Time laadkabel van Pebble origineel

Pebble Time laadkabel van Pebble origineel

De Pebble Time heeft een verschillende oplaadkabel dan de originele Pebble Smartwatch, maar het is mogelijk om te wijzigen van de oorspronkelijke kabel om te werken met de Pebble Time.Verwijder de plastic barrière tussen de pinnen.(Ik heb het hele bl
Maak uw eigen Pebble Time charger

Maak uw eigen Pebble Time charger

Kreeg van de Pebble Time, maar vergat om te kopen een extra oplaadkabel voor uw auto?Uw originele oplaadkabel stierf op u en u moet onmiddellijk een andere kabel?Volg deze eenvoudige stappen om een lader van de Pebble Time gebruik van materialen gevo
DIY Pebble Time (staal) dok met behulp van karton

DIY Pebble Time (staal) dok met behulp van karton

Sommige schema's. Ik ben niet erg goed op dit maar in het geval je geïnteresseerd in de metingen bent ik gebruikt om te bouwen van een Pebble Time dok met behulp van karton. Kan gemakkelijk aan te passen dit hout of ander materiaal te:).Stap 1: Front
Arduino gebaseerde Auto Timer / Watch Timer stoppen voor het strijken van de tijd meting

Arduino gebaseerde Auto Timer / Watch Timer stoppen voor het strijken van de tijd meting

de noodzaak:Vorige week rond op het werk had ik een andere gebruikelijke un-gebruikelijke probleem geconfronteerd met.  Moetend maken allerlei mechanismen n componenten om te werken met-in seconden of FRAC op keer ik vriendelijk-van wist dat dit alti
Hacken van een auto met de Pebble Watch en 1Sheeld

Hacken van een auto met de Pebble Watch en 1Sheeld

Het idee achter het project was om het besturen van een auto zonder wordt in de auto, of fysiek te drukken dashboard knoppen/switches te kunnen.Met behulp van een draagbaar (Pebble watch), en 1Sheeld voor Android (hoffelijkheid van 1Sheeld), ik ben v
MongoDB tutorial, NoSQL tutorial, MongoDB introductie

MongoDB tutorial, NoSQL tutorial, MongoDB introductie

Watch MongoDB tutorial en leren NoSQL databasesysteem. Zie meer voorbeelden van MongoDB en ontdek hoe met document-georiënteerde gegevensmodel.
S0lRider - zonne-Knight Rider!

S0lRider - zonne-Knight Rider!

Hallo! mijn naam is Daniel, als een voorwoord wil ik noemen dat het uiteindelijke doel van dit project om geld in te zamelen voor een goed doel-reis naar Zambia ik deelneem dit najaar is te bouwen huizen voor verweesde kinderen. Maar laten we gaan na
DIY GSM Dangle Charms

DIY GSM Dangle Charms

Hoi allemaal! In deze gevraagde video, zullen we leren hoe te maken van uw eigen DIY GSM dangle charmes. Ik heb twee verschillende stijlen getoond: stof plug stijl en riem stijl. Beide stijlen worden weergegeven omdat men beter voor uw telefoon boven
Wijn fles Cactus (of sieraden Hanger)

Wijn fles Cactus (of sieraden Hanger)

Dit Instructable is voor een fles wijn cactus! Zodra u klaar bent met de Instructable, kunt u de cactus als een plant of een hanger sieraden voor kleine stukjes sieraden zoals armbanden.Het beste deel van dit project is dat het maakt gebruik van mate
Maak variabele DC Bench LABORATORIUMVOEDING die past In uw zak!

Maak variabele DC Bench LABORATORIUMVOEDING die past In uw zak!

Laten we maken Ultra klein formaat Dc variabele Lab Bench Power Supply met behulp van Buck Boost Converter Module en 1A Lithium-ionenbatterij opladen Board van ebay."Zijn zo klein dat je overal kunt dragen!"Deze variabele Power Supply Is uitstek
Spel van tronen thema LED Schaken vak

Spel van tronen thema LED Schaken vak

Hoi allemaal! In deze video ziet u mijn proces van het maken van een spel van tronen thema LED schaakbord voor mijn tiener zoon. Gebruikte ik een goedkope glas Schaken won vastgesteldop een arcade (maar kan worden gevonden op Amazon of EBay). Moet u
Geautomatiseerde gordijn met behulp van intel Edison & thethings. IO

Geautomatiseerde gordijn met behulp van intel Edison & thethings. IO

Keer gaat door en dingen krijgen oud en dus, ze eindelijk breken. Jaloezieën zijn een uitzondering niet.Dit is een van de redenen waarom we het kopen van gordijnen. Niet alleen voor esthetica maar ook voor het filtreren van de hoeveelheid licht in on
Werelds kleinste voeding!

Werelds kleinste voeding!

Heb je ooit wilde klein formaat power supply die nog pack veel macht, hier is's werelds kleinste voeding kunt u onder de 6$!!! Volgende functies zal indruk op je thats for sure dus waarom niet een maken?# Functies1. 3-25v Voltages regelbaar Output2.
"Don't Lose uw Sparkle" hars compacte spiegel

"Don't Lose uw Sparkle" hars compacte spiegel

Hoi allemaal! In deze video zullen we leren hoe te maken van uw eigen sparkly hars compacte spiegel met behulp van de methode gestempelde weefsel. (Soortgelijke methode wordt gebruikt in mijn andere video: weefsel gestempeld opslag potten, te vinden