Jump to content

Hackerschool - Tinkerforge Java Library


yuna

Recommended Posts

Howdy,

 

da hier viele Ihre Projekte vorstellen, möchte ich hier meines ebenso beschreiben, auf Hoffnung das es euch gefällt. ;)

Ich bin ehrenamtliche Inspirieren (Lehrerin) in der Hackerschool für Berlin und gebe Java Kurse. Die Kids spielen sehr gern mit Tinkerforge! Echt tolle Hardware auf die man sich verlassen kann. So können wir uns super in ruhe um die Software kümmern. Mit der Zeit haben wir uns Hilfen um die Tinkerforge API herum gebaut. Somit kommen wir Stück für Stück schneller voran. Diese ist hier zu finden: https://github.com/YunaBraska/tinkerforge-sensor Neben weiterer Entwicklung ist es unser zu Hohes Ziel diese API in Frameworks wie Spring Boot mit Spring Boot messaging einzubauen. Die Bricks/Bricklets sind mittels Wrapper in dieser Library generisch gehalten. Daher braucht man nicht lange nachzudenken und kann jedes Brick/Bricklet auf gleichen Weg ansteuern. Egal ob es ein Display oder ein RGB Button ist. Die Library soll auch davor etwas schützen, die Bricks/Bricklets direkt voll zu spamen. Vieles generiert sich in der Library von selbst. So auch die Dokumentation über die Sensoren (Wrapper von Brick/Bricklets) (https://github.com/YunaBraska/tinkerforge-sensor/blob/master/SENSOR_README.md

 

Hier ein paar Beispiele:

 

Stack verbinden:

Stack stack = new Stack("localhost", 4223, true);

 

Mit Eventstream verbinden:

stack.sensorEventConsumerList.add(Class::myClientFunction);

 

Werte aus gesamten Stack holen

Long soundIntensity = stack.values().soundIntensity();

Long soundIntensityMax = stack.values().soundIntensity_Max();

Long soundIntensityMin = stack.values().soundIntensity_Min();

Long soundIntensityAverage = stack.values().soundIntensity_Avg();

Long soundIntensitySum = stack.values().soundIntensity_Sum();

 

Werte von Brick/Bricklets holen

Long stack.sensors().lightAmbient().values().lightLux();

 

Mehrere Bricks/Bricklets verwenden (Versionen sind egal - Port Reihenfolge gewinnt)

Sensor button_1 = stack.sensors().buttonRGB(0);

Sensor button_2 = stack.sensors().buttonRGB(1);

Sensor button_3 = stack.sensors().buttonRGB(2);

 

Bricks/Bricklet ansprechen

stack.sensors().buttonRGB().send(Color.MAGENTA);

stack.sensors().speaker().send(1000, 5000);

stack.sensors().displayLcd20x4().send("Howdy");

stack.sensors().io16().send(1);

stack.sensors().soundIntensity().refreshLimit(6);

 

Bricks/Bricklet mit limit von 2x pro Sekunde ansprechen - gut für loops oder wenn auf andere Events reagiert wird

stack.sensors().speaker().sendLimit(2, 100, 5000);

 

Mal schnell Decibel auf SegemtDisplay anzeigen lassen

Long decibel = stack.values().soundIntensity()

stack.sensors().displaySegment().send((decibel / 10) + "dB");

 

Mal schnell über alle Bricks/Bricklets loopen und status LEDs einschalten - super für KnightRider Effekte über die Bricks :D

for (Sensor sensor : stack.sensors()) {

    if (sensor.isPresent() && sensor.hasLedStatus() && sensor.isBrick()) {

        sensor.ledStatusOn();

    }

}

 

 

Bricks/Bricklet direkt ansprechen - falls wrapper nicht reicht

Device device = stack.sensors().buttonRGB().device;

 

Wir haben leider nur die Bricks/Bricklets in unsere Library angebunden, die wir auch wirklich besitzen und ins private Budget passen. Leider gehen reihenweise die alten Bricklets und Master Bricks kaputt, da auch die besten Kinder an den alten Steckverbindungen scheitern. Wäre ganz cool wenn die Master Bricks bald auch ein Update bekämen. Demnächst möchten wir ein Fahrzeug bauen. Einen einfachen, fahrbaren Untersatz zu finden, auf den man Tinkerforge bauen kann ist echt schwer zu finden. Zudem wir nur den Servo Brick haben und unsere 360 Grad Servos versuchen anzubinden... Wird spannend wie wir das auch Softwareseitig in die Library einfließen lassen.

Link to comment
Share on other sites

  • 4 weeks later...

Neu:

* Javadoc update

* Autogenerierte Readme.md Dokumentation readmeDoc

* Es gibt nun Listenelemente von allen Sensoren

stack.sensors().displayList(); 

* Das neue SegmentDisplay_V2 ist nun ebenfalls implementiert

display.send("1.2.:3.‘4.");

* Wie von der Hackerschool-API gewohnt kann das alte SegmentDisplay ebenfalls mit selben Werten umgehen und ignoriert die nicht anzeigbaren Elemente

* Tinkerforge API update (eigenes connection handling ist gelöscht)

* Unterschiede zwischen Bricks und Bricklets wurden entfernt

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...