Zum Hauptteil springen

Benutzerdefinierte Chip Definition (JSON)

Die Pinbelegung und die Eigenschaften der benutzerdefinierten Chips werden in einer Chip-Definitions-JSON-Datei definiert. Der Dateiname sollte <chipname>.chip.json sein. Beispiel: Wenn dein Chip i2c-sensor heißt, sollte die Datei ic2-sensor.chip.json heißen-

Die JSON Datei sollte ein einzelnes Objekt mit folgenden Eigenschaften enthalten:

EigenschaftTypBeschreibung
namestringDer Name des Chips (wird im Editor angezeigt)
authorstringDer Name vom Autor des Chips
pinsarray of stringsListe mit den Pins des Chips
controlsarray of objectsListe mit den Steuerelementen des Chips (optional)
displayobjectKonfiguration vom Display (optional)

Pins

Das pins Array sollte die Namen von allen Pins deines Chips, beginnend mit Pin 1, enthalten. Wenn du Pins auslassen willst (z.B. um nur Pins auf der linken Seite zu haben), nutze einen leeren String ("") als Name, um einen leeren Pin zu definieren.

Beispiel:

  "pins": ["VCC", "GND", "RST", "", "SCL", "SDA"],

Das obige Beispiel definiert einen Chip mit 5 Pins, die wie folgt angeordnet sind:

       ___
VCC -|⚬ |- SDA
GND -| |- SCL
RST -|___|-

Steuerung

Steuerelemente ermöglichen dem Nutzer die Interaktion mit dem Pin während der Simulation. Ein Temeratursensor kann z.B. ein Steuerelement haben, mit dem der Nutzer die Temperatur einstellen kann.

Die Eigenschaft controls sollte ein Array von Steuerelementen (Objekte) enthalten. Jedes Steuerelement sollte die folgenden Eigenschaften haben.

EigenschaftTypBeschreibungBeispiel
idstringID des Steuerelements, bitte camelCase nutzen (z.B.. relativeHumidity)"relativeHumidity"
labelstringDer Anzeigename des Steuerelements"Relative Feuchtigkeit"
typestringArt des Elements. Momentan gibt es nur "range" (Schiebregler)."range"
minnumberDer Minimale Wert des Steuerelements0
maxnumberDer Maximale Wert des Steuerelements100
stepnumberDie Schrittweite für den Schiebregler.1

Beispiel:

  "controls": [
{
"id": "relativeHumidity",
"label": "Releative Feuchtigkeit",
"type": "range",
"min": 0,
"max": 100,
"step": 1
}
],

Um den Wert des Steuerelements zu lesen, nutze bitte die Attribut API.

Display

Die Eigenschaft display lässt dich einen Bildschirm zum Chip hinzufügen. Nutze die Eigengschaft, um ein Benutzerdefiniertes LCD, OLED, or e-paper Display hinzuzufügen, oder um den Status deines Chips (z.B. ein Diagramm mit der Temperatur über die Zeit oder die Position eines Motors) anzuzeigen.

Die Eigenschaft display sollte ein Objekt mit folgenden Eigenschaften enthalten.

EigenschaftTypBeschreibungBeispiel
widthnumberDie Weite des Displays in Pixeln128
heightnumberDie Höhe des Displays in Pixeln64

Beispiel:

  "display": {
"width": 128,
"height": 64
},

Um auf das Display zu schreiben, benötigst du die Framebuffer API.