Alias Namen

Bislang wurden die IOs in den Beispielen über die Seriennummer des ftSwarm und dem Portnamen angesprochen. Das ist praktisch in kleinen Modellen, aber in größeren Modellen verliert man schnell die Übersicht. Dort ist es einfacher, die IOs anhand deren Funktion anzusprechen:

  SwitchWithSN     = new FtSwarmSwitch( 4711, FTSWARM_A1 );  // Old style: with serial number and port
  SwitchWithAlias  = new FtSwarmSwitch( "MotorEndStop" );    // New style: call my alias name!

Das Beispiel nutzt den gleichen Aufbau wie zuvor:

Home

Es müssen nun zunächst Aliasnamen für den Switch und den Motor vergeben werden. Dazu muss die Standradfirmware geladen sein. Starten Sie eine serielle Konsole und wechseln mit setup in die Firmware. Wählen Sie dort “(i) IO-Konfiguration”.

***** IO-Konfiguration *****

     Name               Typ             Events Alias
( 1) A1                 DigitalInput    0        
( 2) A2                 DigitalInput    0        
( 3) A3                 DigitalInput    0        
( 4) A4                 DigitalInput    0        
( 5) A5                 DigitalInput    0        
( 6) A6                 DigitalInput    0        
( 8) PWRCTL             Powersensor     0        
( 9) ftSwarm1011.A1     DigitalInput    0        
(10) ftSwarm1011.A2     DigitalInput    0        
(11) ftSwarm1011.A3     DigitalInput    0        
(12) ftSwarm1011.A4     DigitalInput    0        
(13) ftSwarm1011.A5     DigitalInput    0        
(14) ftSwarm1011.A6     DigitalInput    0        
(15) ftSwarm1011.PWRCTL Powersensor     0   

(a)  Aktoren
(p)  Pixel/LEDs

(x)  Beenden

IO-Konfiguration>

Am zweiten Controller muss für A1 der Name switch eingestellt werden. Wählen Sie deshalb ”( 9) ftSwarm1011.A1” um den Port zu konfigurieren.

***** A1 *****

     Name:       A1
(t)  IO-Typ:     DigitalInput
(a)  Alias

(+)  neues Event
(s)  Konfiguration wechseln

(x)  Beenden

IO-Konfiguration/A1>

Wählen Sie ”(“a) Alias” und vergeben den Alias-Namen switch. Kehren Sie mit (x) Beenden in das Menu IO Konfiguration zurück.

Am ersten Controller muss nun der Motor M2 den Alias-Namen motor bekommen. Schalten Sie mit “(a) Aktoren” die Darstellung von den Sensoren auf die Aktoren um:

***** IO-Konfiguration *****

     Name               Typ             Events Alias
( 1) M1                 Motor           0        
( 2) M2                 Motor           0        
( 3) SERVO1             Servo           0        
( 4) SERVO2             Servo           0        
( 5) ftSwarm1011.M1     Motor           0        
( 6) ftSwarm1011.M2     Motor           0        
( 7) ftSwarm1011.SERVO1 Servo           0        
( 8) ftSwarm1011.SERVO2 Servo           0        

(i)  Eingänge
(p)  Pixel/LEDs

(x)  Beenden

IO-Konfiguration>

Wählen Sie mit ”( 1) M1” den Motor aus und vergeben den Alias-Namen motor. Beenden Sie mit zweimal (x) Beenden die Port- und die IO-Konfiguration. Beim Verlassen der IO-Konfiguration bestätigen Sie “Änderungen speichern? (J/N)?” mit “J.

#include <ftSwarm.h>

FtSwarmSwitch *sw;
FtSwarmSMotor *mot;

void setup( ) {

  // start the swarm
  FtSwarmSerialNumber_t local = ftSwarm.begin( );
  
  // get switch and motor instances
  sw  = new FtSwarmSwitch( "switch" );
  mot = new FtSwarmSMotor( "motor" );

}

void loop( ) {

  // check if switch is pressed or released
  if ( sw->isPressed() )
    mot->setSpeed(100);
  else
    mot->setSpeed(0);
  
  // wait some time
  delay(100);

}

Auf der Statusseite des Swarms werden die Aliasnamen ebenfalls angezeigt.

Wird das Modell nun verändert, z.B. indem der Motor auf den Anschluss M2 des ersten Controllers gesteckt wird, muss das Programm nicht verändert werden. Der Aliasname motor muss nur auf dem ersten Controller eingetragen werden.

Achten Sie darauf, die Aliasnamen im Schwarm eindeutig zu vergeben! In diesem Beispiel ist es egal, ob Sie motor doppelt vergeben. Die Firmware verwendet immer zunächst den lokalen Controller. Werden mehrere Remotecontroller verwendet, so hängt das Ergebnis von der Bootreihenfolge der Controller ab.