kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




1 Mehrerer aufeinander aufbauender Programme, die verschiedene Funktionen verwenden

(EN google-translate)

(PL google-translate)

1.1 Verwendung der Funktion editor(...)
#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    setFont(1, 255,255,255,  0,0,0);
    backlight(true); 
}

void loop() 
{
    cursor(0,0);     
    editor("Hello\n");
    editor("Editor\n");
    editor("01234567890123456\n");
    editor("17 Spalten\n");
    editor("9 Zeilen\n");
    editor("Zeile 6\n");
    editor("Zeile 7\n");
    editor("Zeile 8\n");
    editor("Zeile 9\n");
    delay(100);      
}

Code 0-1: 1.1 Verwendung der Funktion editor(...)


TWATCH_PROC023_B001.zip -- 1.1 Verwendung der Funktion editor(...)

Ansicht der Uhr -- 1.1 Verwendung der Funktion editor(...)

Bild 0-1: Ansicht der Uhr -- 1.1 Verwendung der Funktion editor(...)


1.2 Verwendung der Funktion button()
#include "twatch.h"
#include "variables.h"
#include "functions.h"

bool zeigeText = false;

void setup() 
{
    setupTWATCH();
    setFont(1, 255,255,255,  0,0,0);
    backlight(true); 
}

void loop() 
{
  
    if(button())
    {
         zeigeText=!zeigeText;
    }
    
    if(zeigeText)
    {
        cursor(50,100);     
        editor("Hello");
    }
    else
    {
        background(0,255,0);
    }
    
    delay(100);      
}

Code 0-2: 1.2 Verwendung der Funktion button()


TWATCH_PROC023_B002.zip -- 1.2 Verwendung der Funktion button()

1.2 Verwendung der Funktion button() ... nachdem der Knopf einmal gedrückt wurde.

Bild 0-2: 1.2 Verwendung der Funktion button() ... nachdem der Knopf einmal gedrückt wurde.


1.3 Verwendung der Funkuhr
#include "twatch.h"
#include "variables.h"
#include "functions.h"

bool zeigeText = false;

void setup() 
{
    setupTWATCH();
    setFont(1, 255,255,255,  0,0,0);
    updateTime(); //RTC Zeit holen    
    backlight(true); 
}

void loop() 
{
    int h = getHour();
    int m = getMinute();
    int s = getSecond();
    cursor(0,0);
    if(h<10)
    {
        editor('0');
    }
    editor(h);
    editor(':');
    if(m<10)
    {
        editor('0');
    }
    editor(m);
    editor(':');
    if(s<10)
    {
        editor('0');
    }
    editor(s);

    fill(255,0,0);
    noStroke();
    rect(0,120,s*4,120);
    fill(0,0,0);
    rect(s*4,120,239-s*4,120);    
    delay(100);      
}

Code 0-3: 1.3 Verwendung der Funkuhr


TWATCH_PROC023_B003.zip -- 1.3 Verwendung der Funkuhr

1.3 Verwendung der Funkuhr

Bild 0-3: 1.3 Verwendung der Funkuhr


1.4 Verwendung des Beschleunigungssensors und des Vibrationsmotors
#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    setupMotor();
    setFont(1, 255,255,255,  0,0,0);
    backlight(true); 
}

void loop() 
{
    acceleration();
    cursor(0,0);
    editor(absaccX);    
    editor('\n');
    editor(absaccY);    
    editor('\n');
    if(absaccZ<1000) editor('0');
    if(absaccZ<100) editor('0');
    if(absaccZ<10) editor('0');
    editor(absaccZ);    

    stroke(0,0,255);
    if(absaccZ<300)
    {
        motor();
        fill(255,0,0);
    }
    else
    {
        fill(0,255,0);        
    }
    circle(120,120,50);
    delay(100);      
}

Code 0-4: 1.4 Verwendung des Beschleunigungssensors und des Vibrationsmotors

TWATCH_PROC023_B004.zip -- 1.4 Verwendung des Beschleunigungssensors und des Vibrationsmotors

1.4 Verwendung des Beschleunigungssensors und des Vibrationsmotors während Alarm.

Bild 0-4: 1.4 Verwendung des Beschleunigungssensors und des Vibrationsmotors während Alarm.


Laborübung


Aufgabe 1

  • Schreiben Sie ein Programm, das bei jeder vollen Minute für eine Sekunde lang den Vibrationsmotor aktiviert.

Aufgabe 2

  • Bei 1.4 ist die Anzeige von absaccX und absaccY nicht perfekt:
  • Tauchen erst kleine, dann große Zahlen auf, so bleiben alte Ziffern im Display stehen.
  • Verbessern Sie das, indem Sie sich an der Darstellung von absaccZ orientieren.
  • Die Variablen accX, accY, accZ liefern die Beschleunigungswerte mit Vorzeichen, anstatt nur den Absolutbetrag.
  • Analysieren Sie, wie hier in "Code 4-4: Beispielcode" bei "IMU (Inertia Measurement Unit)" die Darstellung mit Vorzeichen umgesetzt wird:
06_TWATCH/04_Simplified_Commands -- siehe Code 4-4.

Aufgabe 3


  • Die Funktion millis() liefert die Anzahl verstrichener Millisekunden seit Einschalten der Uhr.
  • Versuchen Sie auf dieser Grundlage einen Timer zu programmieren, der 10 Sekunden nach Drücken des Knopfes einen Alarm auslöst.
  • Der Alarm soll durch erneutes Drücken des Knopfes quittiert und abgeschaltet werden.
  • Der Alarm soll sowohl durch Anzeige einer geeigneten Grafik, als auch durch Aktivieren der Vibration erfolgen.

Hinweis: Rufen Sie millis() mit einer Typumwandlung nach Integer hin auf, beispielsweise so: int t = (int)millis();



Aufgabe 4

  • Entwickeln Sie eine eigene kleine Anwendung für die Smartwatch.
  • Überlegen Sie sich mindestens zwei Fehlertoleranzkonzepte, die in Ihrem Projekt zum Einsatz kommen könnten.
  • Setzen Sie Ihre Idee so weit wie möglich um.