kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Simplified Commands

(EN google-translate)

(PL google-translate)

Im folgenden werden die verfügbaren Befehle auf der Ebene der vereinfachten Anwenderprogrammierschicht aufgelistet und beschrieben.

Die Darstellung ist geordnet nach der mittels der Befehle ansteuerbaren internen Peripherie, also danach, welche der folgenden Komponenten durch die angegebenen Befehle manipuliert werden können:

  1. Display
  2. Touch
  3. IMU (Inertia Measurement Unit)
  4. RTC (Real Time Clock)
  5. WiFi
  6. Bluetooth
  7. Button
  8. Vibration
  9. Microphone
  10. Loudspeaker
  11. Light intensity sensor
  12. infrared data transmitter

Darüber hinaus existieren vordefinierte zusätzliche Hilfsobjekte und Variablen, die die Programmierung der Uhr erleichtern sollen:


EDITOR

Mit der Methode editor(...) können Zeichen, Zahlen und Texte an den Darstellungsbereich
des Touchscreens angehangen werden.
Zeilenumbrüche können mit editor("\n"); realisiert werden.

Mit der Methode curser(zeile,spalte) kann die Stelle gesetzt werden, ab der 
Zeichen in den Editor eingefügt werden.

editor(...) arbeitet etwas effizienter als die Funktion text(...)
Es wird ein monospace-Font verwendet.
Die Anzahl an Zeilen und Buchstaben pro Zeile ist abhängig von der mit
setFont(...) eingestellten Fontgröße.

BESCHLEUNIGUNGSWERTE

Wird die Funktion acceleration(); aufgerufen, werden die Sensorwerte des dreiachsigen
Beschleunigungssensors ausgelesen und in folgenden Variablen gespeichert:

int  accX;
int  accY;
int  accZ;
int  absaccX; //Absolutwerte der gleichen Sensorwerte...
int  absaccY;
int  absaccZ;

TOUCHPOSITION

Wird die Funktion touch(); aufgerufen, so wird die aktuelle Position 
der Berührung des Touchscreens in folgenden Variablen gespeichert:

int  mouseX=0;
int  mouseY=0;

UHRZEIT

Wird die Funktion updateTime(); aufgerufen, wird die aktuelle Funkzeit geholt
und ihre Anteile sind über folgende Funktionen abrufbar:

int getHour12() //12 stündiger Wert der aktuellen Stunde
int getHour()   //24 stündiger Wert der aktuellen Stunde
int getMinute() 
int getSecond() 

SERIELLER MONITOR

Während der Entwicklungszeit macht es Sinn, Variablen zur Laufzeit der Uhr auszulesen.
Die Variablen können dazu über eine über die USB-Verbindung zu PC emulierte Schnittstelle 
an den Seriellen Monitor der Arduino IDE übertragen werden.

setupSERIAL(115200); //aktiviert die serielle Verbindung zum PC mit einer Baudrate von 115200.
"Serial" ist das Objekt, das dann Befehle zur Datenübertragung bereitstellt.
Beispiele:
if(Serial) Serial.println("WiFi connected");
if(Serial) Serial.print("ip:");
if(Serial) Serial.println(WiFi.localIP());            
if(Serial) Serial.println();


Code 0-1: Zusätzliche Hilfsobjekte und Variablen.

Um leichter verstehbar zu machen, wie genau die Befehle benutzt werden können, ist an den Anfang jedes Bereichs ein kleiner Programmschnipsel gesetzt worden, der ein einfaches Anwendungsbeispiel der betreffenden Peripherie darstellt.

Vorgehen:
  • Erzeugen Sie eine Kopie des Referenzprojektes "TWATCH_PROC023", indem Sie es unter einem anderen Namen abspeichern.
  • Löschen Sie den ersten Tab und tragen Sie da die Beispielquelltexte ein, bzw. entwickeln dort Ihr eigenes Projekt.

Display

  • Das Display hat 240 mal 240 Pixel.
  • Koordinatenursprung ist die obere linke Ecke.
  • Die x-Achse weist nach rechts, die y-Achse weist nach UNTEN!
  • Die Farbauflösung pro Farbkanal beträgt nur 4 Bit (0..15).
  • Die Farbbefehle werden angepasst an Processing aber mit 8 Bit angegeben (0..255).
#include "twatch.h"
#include "variables.h"
#include "functions.h"

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

void loop() 
{
    text("Hello World!",width/4,height/4);
    delay(100);  
}

Code 0-2: Beispielcode.

Command Example Description Hints
setFont(FONT_NUMBER, RED,GREEN,BLUE, RED_B,GREEN_B,BLUE_B); setFont(1, 255,255,255, 255,0,0); Set used font. Size, Text Color, Background Color, RGB: 0..255
text("String",POS_X,POS_Y); text("Hello World!",width/4,height/4); Shows text text, position
backlight(BOOL) backlight(true); Turn background light on or off bool value: true or false
stroke(RED,GREEN,BLUE) stroke(0,0,255); sets pen color drawing command
fill(RED,GREEN,BLUE) fill(0,0,255); sets fill color drawing command
noStroke() noStroke(); no outline drawing command
noFill() noFill(); no fill color drawing command
rect(x,y,width,height) rect(30,40,70,20); draws a rectangle drawing command x,y left upper corner
circle(x,y,radius) circle(50,50,20); draws a circle drawing command x,y center coordinate
line(x1,y1,x2,y2) line(10,20,120,100); draws a line drawing command x1,y1 starting point, x2,y2 end point
triangle(x1,y1,x2,y2,x3,x4) triangle(10,10,40,10,25,25); draws a triangle drawing command

Tabelle 0-1: Befehle zur Manipulation des Displays.

Übung
  • Erweitern und verändern Sie das Hello World-Programm durch verwendung der bei Display angegebenen Befehle.

Touch

#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    backlight(true); 
}

void loop() 
{
    if(touch()) // updates mouseX and mouseY
    {    
       //red background if screen touched
       background(255,0,0);
    }
    else
    {
       //else green 
       background(0,255,0);
    }
    fill(0,0,255);
    //shows a circle at last touch-position, which always is saved in mouseX and mouseY.
    circle(mouseX,mouseY,20);
    delay(100);
}

Code 0-3: Beispielcode.

Command Example Description Hints
touch() : bool if(touch()){MODE++;} React on touch. function returns true if screen touched, else false. updates mouseX and mouseY.

Tabelle 0-2: Befehle zur Verwendung des Touchsensors.

IMU (Inertia Measurement Unit)

#include "twatch.h"
#include "variables.h"
#include "functions.h"

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

void loop() 
{
    bool res = acceleration();

    cursor(0,0);

    if(accX>=0) editor('+'); else editor('-');
    if(absaccX<1000) editor('0'); 
    if(absaccX<100) editor('0'); 
    if(absaccX<10) editor('0'); 
    editor(absaccX); 
    editor('\n');

    if(accY>=0) editor('+'); else editor('-');
    if(absaccY<1000) editor('0'); 
    if(absaccY<100) editor('0'); 
    if(absaccY<10) editor('0');         
    editor(absaccY); 
    editor('\n');

    if(accZ>=0) editor('+'); else editor('-');
    if(absaccZ<1000) editor('0'); 
    if(absaccZ<100) editor('0'); 
    if(absaccZ<10) editor('0');         
    editor(absaccZ); 
    editor('\n');

    delay(100);
}

Code 0-4: Beispielcode.

Command Example Description Hints
acceleration() acceleration(); Updates variables accX, accY, accZ, accabsX, accabsY, accabsZ. sensor values from IMU are saved in predefined variables.

Tabelle 0-3: Befehle zur Verwendung des IMU (Inertia Measurement Unit).

RTC (Real Time Clock)

#include "twatch.h"
#include "variables.h"
#include "functions.h"

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

void loop() 
{
    if(button())
       updateTime(); //RTC Zeit holen

    cursor(0,0);
    if(getHour()<10) editor('0');
    editor(getHour());
    editor('\n');
    if(getMinute()<10) editor('0');
    editor(getMinute());
    editor('\n');
    if(getSecond()<10) editor('0');
    editor(getSecond());
    editor('\n');

    delay(100);
}


Code 0-5: Beispielcode.

Command Example Description Hints
updateTime() updateTime(); gets realtime. sets the watch to actual time zone.
getHour() : int int h = getHour(); gets hours. gets hours of actual time.
getMinute() : int int m = getMinute(); gets minutes. gets minutes of actual time.
getSecond() : int int m = getSecond(); gets seconds. gets seconds of actual time.

Tabelle 0-4: Befehle zur Verwendung der Echtzeituhr.

WiFi

Bluetooth

Button

#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    backlight(true); 
}

void loop() 
{
    if(button()) 
    {    
       //red background if button pressed
       background(255,0,0);
    }
    else
    {
       //else green 
       background(0,255,0);
    }
    delay(100);
}

Code 0-6: Beispielcode.

Command Example Description Hints
button() : bool if(button()){MODE++;} React on button. function returns true if button pressed, else false.

Tabelle 0-5: Befehle zur Verwendung des physikalischen Knopfes (Button).

Vibration

#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    setupMotor();
    backlight(true); 
}

void loop() 
{
    if(button()) 
    {    
       //Motor running if button pressed.
       motor();
    }
    delay(100);
}

Code 0-7: Beispielcode.

Command Example Description Hints
setupMotor() setupMotor(); Make vibration possible. function initializes motor, used in setup()
motor() motor(); Runs motor for a short while. used in loop()

Tabelle 0-6: Befehle zur Verwendung des Motors.

Microphone

Loudspeaker

Light intensity sensor

infrared data transmitter