diff --git a/docusaurus.config.js b/docusaurus.config.js index e8b3e52..9ccaadb 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -45,10 +45,6 @@ module.exports = { label: 'Docs', position: 'left', }, - { - type: 'localeDropdown', - position: 'left', - }, { href: 'https://blog.wokwi.com', label: 'Blog', @@ -141,20 +137,11 @@ module.exports = { ], i18n: { defaultLocale: 'en', - locales: ['en', 'pt-BR', 'zh-CN', 'de-DE'], + locales: ['en'], localeConfigs: { en: { label: 'English', }, - 'pt-BR': { - label: 'Português (Brasil)', - }, - 'zh-CN': { - label: 'Chinese', - }, - 'de-DE': { - label: 'Deutsch (German)', - }, }, }, }; diff --git a/i18n/de-DE/code.json b/i18n/de-DE/code.json deleted file mode 100644 index e167866..0000000 --- a/i18n/de-DE/code.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "theme.NotFound.title": { - "message": "Seite nicht gefunden", - "description": "The title of the 404 page" - }, - "theme.NotFound.p1": { - "message": "Die Seite, die du gesucht hast, konnten wir leider nicht finden.", - "description": "The first paragraph of the 404 page" - }, - "theme.NotFound.p2": { - "message": "Bitte informiere die Person, die diese Seite verlinkt hat, dass der Link nicht mehr funktioniert.", - "description": "The 2nd paragraph of the 404 page" - }, - "theme.AnnouncementBar.closeButtonAriaLabel": { - "message": "Schließen", - "description": "The ARIA label for close button of announcement bar" - }, - "theme.blog.post.readingTime.plurals": { - "message": "Eine Minute Lesezeit|{readingTime} Minuten Lesezeit", - "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.tags.tagsListLabel": { - "message": "Tags:", - "description": "The label alongside a tag list" - }, - "theme.blog.post.readMore": { - "message": "Mehr anzeigen", - "description": "The label used in blog post item excerpts to link to full blog posts" - }, - "theme.blog.paginator.navAriaLabel": { - "message": "Blog list page navigation", - "description": "The ARIA label for the blog pagination" - }, - "theme.blog.paginator.newerEntries": { - "message": "Neuere Einträge", - "description": "The label used to navigate to the newer blog posts page (previous page)" - }, - "theme.blog.paginator.olderEntries": { - "message": "Ältere Einträge", - "description": "The label used to navigate to the older blog posts page (next page)" - }, - "theme.blog.post.paginator.navAriaLabel": { - "message": "Blog post page navigation", - "description": "The ARIA label for the blog posts pagination" - }, - "theme.blog.post.paginator.newerPost": { - "message": "Neuerer Post", - "description": "The blog post button label to navigate to the newer/previous post" - }, - "theme.blog.post.paginator.olderPost": { - "message": "Älterer Post", - "description": "The blog post button label to navigate to the older/next post" - }, - "theme.tags.tagsPageTitle": { - "message": "Tags", - "description": "The title of the tag list page" - }, - "theme.blog.post.plurals": { - "message": "Ein Post|{count} Posts", - "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.blog.tagTitle": { - "message": "{nPosts} tagged with \"{tagName}\"", - "description": "The title of the page for a blog tag" - }, - "theme.tags.tagsPageLink": { - "message": "Alle Tags anzeigen", - "description": "The label of the link targeting the tag list page" - }, - "theme.CodeBlock.copyButtonAriaLabel": { - "message": "Code in Zwischenablage kopieren", - "description": "The ARIA label for copy code blocks button" - }, - "theme.CodeBlock.copied": { - "message": "Kopiert", - "description": "The copied button label on code blocks" - }, - "theme.CodeBlock.copy": { - "message": "Kopieren", - "description": "The copy button label on code blocks" - }, - "theme.docs.sidebar.expandButtonTitle": { - "message": "Seitenleiste erweitern", - "description": "The ARIA label and title attribute for expand button of doc sidebar" - }, - "theme.docs.sidebar.expandButtonAriaLabel": { - "message": "Seitenleiste erweitern", - "description": "The ARIA label and title attribute for expand button of doc sidebar" - }, - "theme.docs.paginator.navAriaLabel": { - "message": "Docs pages navigation", - "description": "The ARIA label for the docs pagination" - }, - "theme.docs.paginator.previous": { - "message": "Zurück", - "description": "The label used to navigate to the previous doc" - }, - "theme.docs.paginator.next": { - "message": "Weiter", - "description": "The label used to navigate to the next doc" - }, - "theme.docs.sidebar.responsiveCloseButtonLabel": { - "message": "Menü schließen", - "description": "The ARIA label for close button of mobile doc sidebar" - }, - "theme.docs.sidebar.responsiveOpenButtonLabel": { - "message": "Menü öffnen", - "description": "The ARIA label for open button of mobile doc sidebar" - }, - "theme.docs.sidebar.collapseButtonTitle": { - "message": "Seitenleiste einklappen", - "description": "The title attribute for collapse button of doc sidebar" - }, - "theme.docs.sidebar.collapseButtonAriaLabel": { - "message": "Seitenleiste einklappen", - "description": "The title attribute for collapse button of doc sidebar" - }, - "theme.docs.versions.unreleasedVersionLabel": { - "message": "Diese Dokumentation (für {siteTitle} {versionLabel}) ist noch nicht fertig.", - "description": "The label used to tell the user that he's browsing an unreleased doc version" - }, - "theme.docs.versions.unmaintainedVersionLabel": { - "message": "Diese Dokumentation ist für {siteTitle} {versionLabel} und wird nicht mehr gepflegt.", - "description": "The label used to tell the user that he's browsing an unmaintained doc version" - }, - "theme.docs.versions.latestVersionSuggestionLabel": { - "message": "Für die neueste Dokumentation, siehe {latestVersionLink} ({versionLabel}).", - "description": "The label userd to tell the user that he's browsing an unmaintained doc version" - }, - "theme.docs.versions.latestVersionLinkLabel": { - "message": "Neueste Version", - "description": "The label used for the latest version suggestion link label" - }, - "theme.common.editThisPage": { - "message": "Seite bearbeiten", - "description": "The link label to edit the current page" - }, - "theme.common.headingLinkTitle": { - "message": "Link zur Überschrift", - "description": "Title for link to heading" - }, - "theme.lastUpdated.atDate": { - "message": " am {date}", - "description": "The words used to describe on which date a page has been last updated" - }, - "theme.lastUpdated.byUser": { - "message": " von {user}", - "description": "The words used to describe by who the page has been last updated" - }, - "theme.lastUpdated.lastUpdatedAtBy": { - "message": "Letzte Änderung{atDate}{byUser}", - "description": "The sentence used to display when a page has been last updated, and by who" - }, - "theme.common.skipToMainContent": { - "message": "Zum Hauptteil springen", - "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" - }, - "theme.SearchPage.documentsFound.plurals": { - "message": "Ein Dokument gefunden|{count} Dokumente gefunden", - "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.SearchPage.existingResultsTitle": { - "message": "Ergebnisse für \"{query}\"", - "description": "The search page title for non-empty query" - }, - "theme.SearchPage.emptyResultsTitle": { - "message": "Dokumentation durchsuchen", - "description": "The search page title for empty query" - }, - "theme.SearchPage.inputPlaceholder": { - "message": "Suchbegriff hier eingeben", - "description": "The placeholder for search page input" - }, - "theme.SearchPage.inputLabel": { - "message": "Suche", - "description": "The ARIA label for search page input" - }, - "theme.SearchPage.algoliaLabel": { - "message": "Suche von Algolia", - "description": "The ARIA label for Algolia mention" - }, - "theme.SearchPage.noResultsText": { - "message": "Keine Ergebnisse gefunden", - "description": "The paragraph for empty search result" - }, - "theme.SearchPage.fetchingNewResults": { - "message": "Neue Ergebnisse werden gesucht...", - "description": "The paragraph for fetching new search results" - }, - "theme.SearchBar.label": { - "message": "Suche", - "description": "The ARIA label and placeholder for search button" - } -} diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current.json b/i18n/de-DE/docusaurus-plugin-content-docs/current.json deleted file mode 100644 index 503579c..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version.label": { - "message": "Next", - "description": "The label for version current" - }, - "sidebar.main.category.Getting Started": { - "message": "Erste Schritte", - "description": "The label for category Getting Started in sidebar main" - }, - "sidebar.main.category.Guides": { - "message": "Anleitungen", - "description": "The label for category Guides in sidebar main" - }, - "sidebar.main.category.Diagram Reference": { - "message": "Diagramm", - "description": "The label for category Diagram Reference in sidebar main" - } -} diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/analog.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/analog.md deleted file mode 100644 index 1461f70..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/analog.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Analoge API -sidebar_label: Analoge API ---- - -# Analoge API - -### float pin_adc_read(pin_t pin) - -Misst die aktuelle Spannung an dem angegebenen Pin und gibt sie zurück. Der Pin muss auf den Modus `ANALOG` eingestellt sein, damit der Rückgabewert nicht `undefined` ist. Beachten Sie, dass Wokwi ein digitaler Simulator mit grundlegender analoger Unterstützung ist, daher gibt es derzeit nur eine sehr begrenzte analoge Simulation. Einige Teile, die eine analoge Ausgabe unterstützen, sind das [Potentiometer](../parts/wokwi-slide-potentiometer), der [NTC-Temperatursensor](../parts/wokwi-ntc-temperature-sensor), der [Photowiderstand](../parts/wokwi-photoresistor-sensor) und der [Analog-Joystick](../parts/wokwi-analog-joystick). - - -### void pin_dac_write(pin_t pin, float voltage) - -Setzt die analoge Spannung an dem angegebenen Pin. Momentan ist die Referenzspannung für alle virtuellen ADCs 5 Volt (unabhängig von der MCU), sodass das Setzen der Spannung auf 0 den Minimalwert und das Setzen der Spannung auf 5 den Maximalwert (d.h. 1023 beim Arduino) zurückgibt. (ändert sich eventuell in der Zukunft) - -Diese Methode kann aufgerufen werden, bevor der Pin in den Modus `ANALOG` gesetzt wird, aber die Spannung wird erst aktualisiert, wenn der Pin-Modus auf `ANALOG` gesetzt wird. - -## Beispiele - -- [Beispielprojekt](https://wokwi.com/projects/330112801381024338) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/attributes.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/attributes.md deleted file mode 100644 index 173c511..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/attributes.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Attribute -sidebar_label: Attribute ---- - -# Attribute - -Attribute sin Parameter, die der Nutzer in der `diagram.json` einstellen kann. Du kannst auch einen [`controls` Abschnitt](./chip-json#controls) in der Datei `.chip.json` hinzufügen, um den Nutzer die Parameter während der Simulation ändern zu lassen. Die ist besonders für Sensoren nützlich (z.B. Temperatur, Feuchtigkeit, etc.). - -### Namensgebung - -Bitte beachte beim Benennen der Attribute folgende Richtlinien: - -- Für Attributnamen wird `camelCase` genutzt. -- Es wird amerikanisches Englich verwendet (z.B. `color` und nicht `colour`) - -### uint32_t attr_init(const char \*name, uint32_t default_value) - -Definiert ein Interger Attribut mit dem angegebenen Namen. Der Standardwert (`default_value`) wird genutzt, solange der Nutzer keinen anderen Wert in der `diagram.json` einstellt. (In der `attrs` Sektion vom custom Chip `part`). - -Die Funktion gibt ein Handle auf das Attribut zurück, auf das mit `attr_read()` zugegriffen werden kann. - -:::warning - -Info: `attr_init` kann nur von `chip_init()` aufgerufen werden. Bitte nicht zu einem späteren Zeitpunkt aufrufen. - -::: - -### uint32_t attr_init_float(const char \*name, float default_value) - -Definiert einen Float mit dem angegebenen Namen. Siehe `attr_init()` für mehr Informationen. - -:::warning - -Info: `attr_init_float` kann nur von `chip_init()` aufgerufen werden. Bitte nicht zu einem späteren Zeitpunkt aufrufen. - -::: - -### uint32_t attr_read(uint32_t attr) - -Gibt den aktuellen Wert vom Attribut zurück. `attr` sollte ein gültiges Attribut-Handle sein, das zuvor von `attr_init()` zurückgegeben wurde. - -### float attr_read_float(uint32_t attr) - -Gibt den aktuellen Wert vom Attribut zurück. `attr` sollte ein gültiges Attribut-Handle sein, das zuvor von `attr_init_float()` zurückgegeben wurde. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chip-json.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chip-json.md deleted file mode 100644 index 90881e4..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chip-json.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Benutzerdefiniertes Chip JSON Format -sidebar_label: Chip Definition (JSON) ---- - -# Benutzerdefinierte Chip Definition (JSON) - -Die Pinbelegung und die Eigenschaften der benutzerdefinierten Chips werden in einer Chip-Definitions-JSON-Datei definiert. Der Dateiname sollte `.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: - -| Eigenschaft| Typ | Beschreibung | -| ---------- | ---------------- | ----------------------------------------------------------------------- | -| `name` | string | Der Name des Chips (wird im Editor angezeigt) | -| `author` | string | Der Name vom Autor des Chips | -| `pins` | array of strings | Liste mit den Pins des Chips | -| `controls` | array of objects | Liste mit den Steuerelementen des Chips (optional) | -| `display` | object | Konfiguration 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: - -```json - "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. - -| Eigenschaft | Typ | Beschreibung | Beispiel | -| -------- | ------ | -------------------------------------------------------------------------------------------- | ------------------- | -| `id` | string | ID des Steuerelements, bitte `camelCase` nutzen (z.B.. `relativeHumidity`) | "relativeHumidity" | -| `label` | string | Der Anzeigename des Steuerelements | "Relative Feuchtigkeit" | -| `type` | string | Art des Elements. Momentan gibt es nur `"range"` (Schiebregler). | "range" | -| `min` | number | Der Minimale Wert des Steuerelements | 0 | -| `max` | number | Der Maximale Wert des Steuerelements | 100 | -| `step` | number | Die Schrittweite für den Schiebregler. | 1 | - -Beispiel: - -```json - "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](../chips-api/attributes). - -## 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. - -| Eigenschaft | Typ | Beschreibung | Beispiel | -| -------- | ------ | ------------------------------------ | ------- | -| `width` | number | Die Weite des Displays in Pixeln | 128 | -| `height` | number | Die Höhe des Displays in Pixeln | 64 | - -Beispiel: - -```json - "display": { - "width": 128, - "height": 64 - }, -``` - -Um auf das Display zu schreiben, benötigst du die [Framebuffer API](../chips-api/framebuffer). diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chips-console.png b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chips-console.png deleted file mode 100644 index b6c1b20..0000000 Binary files a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/chips-console.png and /dev/null differ diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md deleted file mode 100644 index 3e1d39b..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Framebuffer API -sidebar_label: Framebuffer API ---- - -# Framebuffer API - -Die Framebuffer API wird genutzt, um Displays zu implementieren (z.B. LCD, OLED, e-paper, etc.). Die Größe des Displays wird in der Datei `.chip.json` definiert. Der Buffer nutzt 32 Bit pro Pixel. Pixel werden im RGBA Format gespeichert. Die Gesamtgröße des Buffers ist `pixel_width * pixel_height * 4` bytes. - -### buffer_t framebuffer_init(uint32_t *pixel_width, uint32_t *pixel_height) - -Gibt den Framebuffer für den Chip und die Maße des Displays zurück. - -:::warning - -Info: `framebuffer_init` kann nur von der `chip_init()` Methonde aufgerufen werden. Bitte rufe es nicht zu einem späteren Zeitpunk auf. - -::: - -### void buffer_write(buffer_t buffer, uint32_t offset, void \*data, uint32_t data_len) - -Kopiert `data_len` bytes von `data` am gegebenen `offset` in den Buffer. - -### void buffer_read(buffer_t buffer, uint32_t offset, void \*data, uint32_t data_len) - -Kopiert `data_len` bytes am gegebenen `offset` vom Buffer nach `data`. - -## Beispiele - -- [Basic Framebuffer Chip Example](https://wokwi.com/projects/330503863007183442) -- [SSD1306 I2C OLED Display](https://wokwi.com/projects/371050937178768385) -- [IL9163 128x128 Color LCD Display Driver](https://wokwi.com/projects/333332561949360723) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/getting-started.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/getting-started.md deleted file mode 100644 index fa88c75..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/getting-started.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Erste Schritte mit der Wokwi Custom Chips C API -sidebar_label: Erste Schritte ---- - -import ChipsConsoleImage from './chips-console.png'; - -# Erste Schritte mit der Wokwi Custom Chips C API - -:::warning - -Die Chips API ist momentan in der Beta. Bitte teile deine Tests und gib im `#custom-chips` Kanal auf unserem [Discord Server](https://wokwi.com/discord) Feedback. - -::: - -## Einleitung - -Die Custom Chips API ermöglicht es dir, neue Simulationsmodelle zu erstellen und die Funktionalität von Wokwi zu erweitern. Du kannst neue Sensoren, Displays, Speicher, Testgeräte und sogar eigene Hardware simulieren. - -Benutzerdefinierte Chips werden normalerweise in C erstellt, aber du kannst jeder Sprache nutzen, die zu WebAssembly kompiliert wird (z.B. Rust). Zusätzlich gibt es experimentellen Support für Chips in Verilog. - -## Tutorials - -- [Video Tutorial](https://youtu.be/yzdCS3A4DvU) - Drei Beispiele in 15 Minuten -- [Step-by-step blog tutorial](https://link.wokwi.com/chips-api-tutorial) - 7-Segment Display Treiberchip von Anfang an - -## Erste Schritte - -Öffne ein beliebiges Wokwi Projekt (oder [erstelle ein neues Projekt](https://wokwi.com/projects/new)) und klicke auf das blaue "+" im Editor. Wähle "Custom Chip" in der Liste aus. - -Gib im Dialog den Namen des Chips sowie die Sprache ein. Als Sprache wird C empfohlen. Klicke anschließend auf "Create Chip", um den Chip zu erstellen. - -Der Chip wird zur Grafik hinzugefügt und diese beiden Dateien werden erstellt: - -- eine [JSON Datei](./chip-json) mit den Pins und Einstellungen des Chips (Name, Autor, etc.) -- eine C (bzw. Rust/Verilog) Datei mit dem Code für den Chip - -Die [JSON Datei](./chip-json) hat Standardmäßig vier Pins ("VCC", "GND", "IN", "OUT"). Die Name und Anzahl der Pins kannst du in der JSON Datei jederzeit ändern. - -Am Anfang besteht die C Datei nur aus Beispielcode. Du kannst deinen Code in der `chip_init()` Funktion hinzufügen. Jeder Chip ruft diese Funktion am Anfang auf und du kannst sie nutzen, um den Zustand, Timer oder Aktionen an Pins zu definieren. - -Der Beispielcode enthält auch die Struktur `chip_state_t`, in der du die Zustände speichern kannst, die dein Chip braucht. Du kannst das Feld `user_data` von `i2c_config_t`, `timer_config_t`, etc. nutzen, um Pointer zur Stuktur zu speichern. - -### Benutzerdefinierten Chip debuggen - -Du kannst mit der Standard C Funktion `printf()` Debug Nachrichten senden. Achte darauf, `stdio.h` einzubinden. Die Nachrichten werden im "Chips Console" Tab unter der Konsole erscheinen: - -Chips Console - -Zusätzlich kannst du den [Wokwi Logic Analyzer](../guides/logic-analyzer) nutzen, um die Kommunikation mit dem Chip zu debuggen. - -:::tip -Achte darauf, einen Zeilenumbruch ("\n") am Ende von jeder `printf()` Nachricht einzufügen. Der Simulator zeigt Nachrichten erst, wenn ein Zeilenumbruch kommt. -::: - -## Chips API reference 📖 - -- [GPIO pins API](gpio) -- [Analog API](analog) -- [Time simulation API](time) -- [UART API](uart) -- [I2C Device API](i2c) -- [SPI Device API](spi) -- [Attributes](attributes) -- [Framebuffer API](framebuffer) - -## Beispiele - -### Basics - -- [Digital Inverter](https://wokwi.com/projects/327458636089524820) - Inverts the input signal -- [XOR gate](https://wokwi.com/projects/329456176677782100) - Implements a XOR gate -- [Timer Chip](https://wokwi.com/projects/341265875285836370) - Showing how to use the Time API and create timers - -### Kommunikation - -- [SPI Chip](https://wokwi.com/projects/330669951756010068) - A basic ROT13 cipher over SPI -- [UART Chip](https://wokwi.com/projects/333638144389808723) - A basic ROT13 cipher over UART -- [I2C Chip](https://wokwi.com/projects/344061754973618771) - Simple counter with interrupt output -- [EEPROM Chip](https://wokwi.com/projects/329482717479567954) - Simple I2C memory with 256 kbits by Benny Meisels - -### Displays - -- [Framebuffer Chip](https://wokwi.com/projects/330503863007183442) - Shows how to implement a custom display driver chip -- [SSD1306 Display](https://wokwi.com/projects/371050937178768385) - 128x64 monochrome OLED display chip (using I2C) -- [IL9163 Display](https://wokwi.com/projects/333332561949360723) - 128x128 color LCD display chip (using SPI) - -### Sensoren - -- [LM75A Chip](https://wokwi.com/projects/344037885763125843) - I2C digitaler Temperatursensor -- [I2C Keypad Driver Example](https://wokwi.com/projects/344059749365449300) by Yewolf -- [DS18B20 Chip](https://wokwi.com/projects/349898396478210642) - Dallas Semi DS18B20 Temperature Sensor over OneWire by Bonny Rais - -### Komplexe Chips - -- [CD4051B Multiplexer Example](https://wokwi.com/projects/343522915673702994) - Analog Multiplexer by Chris Schmidt -- [PCA9685 Chip](https://wokwi.com/projects/348856116302578258) - 16-channel PWM driver over I2C by Bonny Rais diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/gpio.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/gpio.md deleted file mode 100644 index f0f570e..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/gpio.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: GPIO pins API -sidebar_label: GPIO API ---- - -# GPIO pins API - -Der Chip interagiert durch digitale Pins mit dem Simulator. Die Pins werden in der `{chipname}.chip.json` definiert. Das folgende Beispiel definiert einen Chip mit 4 Pins (`IN`, `OUT`, `VCC`, `GND`): - -```json -{ - "name": "Beispielchip", - "author": "Till", - "pins": ["OUT", "IN", "VCC", "GND"] -} -``` - -Die GPIO Pins API ermöglicht dem Implementierungscode, mit den Pins zu interagieren. - -### pin_t pin_init(const char \*name, uint32_t mode) - -Initialisiert den angegebenen Pin und gibt den Pin Identifier, welcher für andere Methoden benötigt wird, zurück. Der Parameter `mode` setzt den Anfangsstatus des Pins. Gültige Werte für `mode` sind: - -- `INPUT` - konfiguriert den Pin als digitalen Eingang -- `INPUT_PULLUP` - konfiguriert den Pin als digitalen Eingang und fügt einen Pullup Widerstand hinzu. -- `INPUT_PULLDOWN` - konfiguriert den Pin als digitalen Eingang und fügt einen Pulldown Widerstand hinzu. -- `OUTPUT` - konfigueriert den Pin als digitalen Ausgang -- `OUTPUT_LOW` - konfiguriert den Pin als digitalen Ausgang und setzt den Wert auf `LOW` -- `OUTPUT_HIGH` - konfiguriert den Pin als digitalen Ausgang und setzt den Wert auf `HIGH` -- `ANALOG` - konfiguriert den Pin als analogen Pin. Mehr Details gibt es unter "[Analoge API](analog)". - -:::warning - -Info: `pin_init()` kann nur von `chip_init()` aufgerufen werden. Rufe die Methode nicht zu einem späteren Zeitpunkt auf. Du kannst jederzeit `pin_mode()` nutzen, um den Modus zu ändern. - -::: - -### void pin_mode(pin_t pin, uint32_t mode) - -Konfiguriert den angegebenen `pin` als digitalen Eingang oder Ausgang. Gültige Werte für `mode` sind dieselben Werte wie bei `pin_init()`: `INPUT`, `INPUT_PULLUP`, `INPUT_PULLDOWN`, `OUTPUT`, `OUTPUT_LOW`, `OUTPUT_HIGH`, und `ANALOG`. - -### void pin_write(pin_t pin, uint32_t value) - -Setzt den Ausgabewert für einen Pin. `value` kann `HIGH` oder `LOW` sein. - -### uint32_t pin_read(pin_t pin) - -Liest den Wert vom Pin aus und gibt entweder `HIGH` oder `LOW` zurück. - -### bool pin_watch(pin_t pin, pin_watch_config_t \*config) - -Überwacht Änderungen vom Wert des Pins. Die Struktur `config` enthält folgende Felder: - -| Feld | Typ | Beschreibung | -| ------------ | ---------- | -------------------------------------------------------------------- | -| `edge` | `uint32_t` | Die Änderungen, die überwacht werden sollen (`RISING`, `FALLING` oder `BOTH`) | -| `pin_change` | callback | Wird bei Änderungen aufgerufen (siehe unten) | -| `user_data` | `void *` | Daten, die an das erste Argument von `pin_change` übergeben werden | - -Gültige Werte für `edge`: - -- `BOTH` - Jede Änderung wird überwacht -- `FALLING` - Die Änderung von `HIGH` auf `LOW` wird überwacht -- `RISING` - Die Änderung von `LOW` auf `HIGH` wird überwacht - -Du kannst nur einen `pin_watch` pro Pin haben. Die Funktion gibt bei richtiger Einrichtung `true` zurück. Wenn schon ein `pin_watch` für den Pin existiert, wird `false` zurückgegeben und kein neuer Listener erstellt. - -Die Signatur des `pin_change` Callbacks sieht folgendermaßen aus: - -```cpp -void chip_pin_change(void *user_data, pin_t pin, uint32_t value) { - // Wert wird entweder HIGH oder LOW sein -} -``` - -Beispiel: - -```cpp -const pin_watch_config_t watch_config = { - .edge = FALLING, - .pin_change = chip_pin_change, - .user_data = chip, -}; -pin_watch(pin, &watch_config); -``` - -### void pin_watch_stop(pin_t pin) - -Hört auf, Änderungen auf dem angegebenen Pin zu überwachen. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/i2c.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/i2c.md deleted file mode 100644 index e7ae105..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/i2c.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: I2C Geräte-API -sidebar_label: I2C API ---- - -# I2C Geräte-API - -Um ein I2C-Gerät zu erstellen rufe als erstes `i2c_init` und übergib die Struct `i2c_config_t`. Die Struct definiert die SCL/SDA Pins, die I2C Geräteadresse und die Callbacks `call`, `read`, `write` und `disconnect`. - -### i2c_dev_t i2c_init(i2c_config_t \*config) - -Initialisiert ein I2C-Gerät. Das Argument `config` definiert die Pins, Adressen, und Callbacks für das I2C-Gerät. Es enthält folgende Felder: - -| Feld | Typ | Beschreibung | -| ------------ | ---------- | ------------------------------------------------------------------------------------------------------- | -| `address` | `uint32_t` | Warten auf Anfragen, die der angegebenen I2C-Adresse entsprechen. (7-bit). `0` bedeutet "alle Anfragen" | -| `sda` | `pin_t` | Der SDA-Pin | -| `scl` | `pin_t` | Der SCL-Pin | -| `connect` | callback | Wird aufgerufen, wenn der Chip auf dem I2C-Bus angesteuert wird | -| `read` | callback | Wird aufgerufen, wenn der Microcontroller einen Byte vom Chip lesen will | -| `write` | callback | Wird aufgerufen, wenn der Microcontroller einen Byte auf den Chip schreibt | -| `disconnect` | callback | Wird aufgerufen, wenn der Microcontroller die Verbindung zum Chip trennt | -| `user_data` | `void *` | Data that will be passed in the first argument of the callbacks | - -Die Callbacks (`connect`, `read`, `write`, `disconnect`) sind optional. Alle Callbacks nutzen den `user_data` Pointer als erstes Argument. - -:::warning - -Info: `i2c_init` kann nur von `chip_init()` aufgerufen werden. Bitte rufe es nicht später auf.. - -::: - -Beispiel: - -```cpp -bool on_i2c_connect(void *user_data, uint32_t address, bool read) { - // `address` enthält die 7-bit Adresse, die vom I2C-Bus empfangen wurde. - // `read` gibt an, ob es eine read Anfrage (true) oder eine write Anfrage (false) ist. - return true; // true bedeutet ACK, false bedeutet NACK -} - -uint8_t on_i2c_read(void *user_data) { - return 0; // Byte, der zum Microcontroller zurückgegeben wird. -} - -bool on_i2c_write(void *user_data, uint8_t data) { - // `data` ist der vom Microcontroller empfangene Byte. - return true; // true bedeutet ACK, false bedeutet NACK -} - -void on_i2c_disconnect(void *user_data) { - // Diese Methode ist optional. Nützlich, wenn du wissen willst, ob die Übertragung abgeschlossen wurde. -} - -static const i2c_config_t i2c1 { - .address = 0x22, - .scl = pin_init("SCL", INPUT_PULLUP), - .sda = pin_init("SDA", INPUT_PULLUP), - .connect = on_i2c_connect, - .read = on_i2c_read, - .write = on_i2c_write, - .disconnect = on_i2c_disconnect, - .user_data = chip, -}; -``` diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/spi.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/spi.md deleted file mode 100644 index d05ba64..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/spi.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: SPI Geräte-API -sidebar_label: SPI API ---- - -# SPI Geräte-API - -Um ein SPI-Gerät zu erstellen, rufe zuerst `spi_init` auf und übergib die Struct `spi_config_t`. Die Struct definiert die Clock und MOSI/MISO Pins, den SPI Modus, und das `done` Callback. - -### spi_dev_t spi_init(spi_config_t \*config) - -Initialisiert eine SPI-Geräteschnittstelle. Das Argument `config` definiert Pins, Modi und Callbacks für das SPI-Gerät. Es enthält folgende Felder: - -| Field | Type | Description | -| ----------- | ---------- | ------------------------------------------------------------------ | -| `sck` | `pin_t` | Der Clock Pin | -| `mosi` | `pin_t` | Der MOSI data Pin (oder `NO_PIN` um MOSI zu deaktivieren) | -| `miso` | `pin_t` | Der MISO data Pin (oder `NO_PIN` um MISO zu deaktivieren) | -| `mode` | `uint32_t` | SPI Modus: `0`, `1`, `2`, oder `3` (Standard: `0`) | -| `done` | `callback` | Wird aufgerufen, wenn die SPI Übertragung fertig ist (siehe unten) | -| `user_data` | `void *` | Daten werden an das erste Argument vom `done` Callback übergeben | - -Die API unterstützt keine CS/SS Pins: die SPI-Schnittstelle durch das Aufrufen von `spi_start()` und `spi_stop()` zu aktivieren/deaktivieren ist dem Nutzer selbst überlassen. - -:::warning - -Info: `spi_init` kann nur von `chip_init()` aufgerufen werden. Bitte nicht zu einem späteren Zeitpunkt aufrufen. - -::: - -Example: - -```cpp -const spi_config_t spi1 = { - .sck = pin_init("SCK", INPUT), - .mosi = pin_init("MOSI", INPUT), - .miso = pin_init("MISO", INPUT), - .mode = 0, - .done = chip_spi_done, // Siehe Beispiel unten - .user_data = chip, -}; -``` - -### void spi_start(spi_dev_t spi, uint8_t \*buffer, uint32_t count) - -Startet eine SPI-Übertragung, wobei `count` Bytes zum/vom angegebenen `buffer` gesendet/empfangen werden. - -Normalerweise wird auf ein Signal auf dem CS (chip select) Pin mit `pin_watch` gewartet. Rufe `spi_start()` auf, wenn der Pin low ist und `spi_stop()`, wenn der Pin high ist. - -Wenn ein Gerät erstellt wird, das große Datenmengen überträgt (z.B. ein LCD Display), ist ein größerer Buffer (wenige Kilobytes) zu empfehlen. Der Simulator kann den größeren Buffer nutzen, um DMA-gesteuerte SPI-Übertragungen zu optimieren und die Simulation zu beschleunigen. - -Für einfache Geräte, die kleine Datenmengen übertragen, kannst du einen single-byte Buffer verwenden und jeden Byte einzeln verarbeiten, wenn er über das `done` Callback ankommt. - -### void spi_stop(spi_dev_t spi) - -Stoppt die SPI-Schnittstelle. Wird normalerweise aufgerufen, wenn der CS-Pin auf high ist. - -### Das `done` Callback - -Die Signatur für das `done` Callback sieht folgendermaßen aus: - -```cpp -static void chip_spi_done(void *user_data, uint8_t *buffer, uint32_t count) { - // 1. verarbeitet empfangene Daten (optional) - // 2. wenn der CS-Pin immer noch low ist, die Nächste Übertragung mit `spi_start` beginnen -} -``` - -Das `done` Callback wird aufgerufen, wenn eine SPI-Übertragung fertig ist: entweder wenn der in `spi_start` übergebene Buffer voll ist oder wenn `spi_stop` aufgerufen wurde. Der `buffer` enthält die empfangenen Daten (der Gleiche Buffer, der bei spi_start übergeben wurde `spi_start`), und `count` ist die Anzahl der Bytes, die übertragen wurden (oder `0`, wenn `spi_stop` aufgerufen wurde, bevor ein Byte empfangen wurde). - -Dein `done` Callback sollte den Status vom CS-Pin überprüfen und wenn er immer noch low ist, sollte `spi_start()` wieder aufgerufen werden, um das nächste Paket vom Microcontroller zu empfangen. - -## Beispiele - -- [SPI ROT13 Chip](https://wokwi.com/projects/330669951756010068) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/time.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/time.md deleted file mode 100644 index 8a834d3..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/time.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Time simulation API -sidebar_label: Time API ---- - -# Zeitsimulation - -### uint64_t get_sim_nanos() - -Gibt die Zeit vom aktuellen Simulator (virtuell) in Nanosekunden zurück. - -:::tip -Du kannst die aktuelle Zeit in Millisekunden durch das Aufrufen von `get_sim_nanos() / 1000000` bekommen. -::: - -### timer_t timer_init(timer_config_t \*config) - -Initialisiert einen neuen Timer. Gibt die ID vom Timer zurück. Rufe `timer_start()` auf, um den Timer zu starten und definiere ein `chip_timer_event()` Callback, um auf Timer-Events zu reagieren. - -Die Struct `timer_config_t` enthält folgende Felder: - -| Feld | Typ | Beschreibung | -| ----------- | -------- | -------------------------------------------------------------- | -| `callback` | callback | Wird aufgerufen, wenn der Timer ausgelöst wird | -| `user_data` | `void *` | Daten, die in das erste Argument vom Callback übergeben werden | - -Die Signatur der Callbackfunktion sieht folgendermaßen aus: - -```cpp -void chip_timer_callback(void *user_data) { - /* Wird aufgerufen, wenn der Timer ausgelöst wird */ -} -``` - -:::warning - -Info: `timer_init()` kann nur von `chip_init()` aufgerufen werden. Bitte nicht zu einem späteren Zeitpunkt aufrufen. - -::: - -### void timer_start(uint32_t timer_id, uint32_t micros, bool repeat) - -Startet den durch `timer_id` angegebenen Timer. Das `micros` Argument gibt an, wie lange gewartet werden soll, bis der Timer `chip_timer_event()` aufruft. Wenn `repeat` auf `false` gesetzt wurde, wird der Timer nur einmal aufgerufen (one-shot Timer). Wenn repeat auf `true` ist, wird der Timer alle `micros` Mikrosekunden aufgerufen, bis `timer_stop()` aufgerufen wird oder der Timer mit `timer_start` neu konfiguriert wird. - -### void timer_start_ns(uint32_t timer_id, uint64_t nanos, bool repeat) - -Ähnlich zu `timer_start`, aber gibt die Zeit in Nanosekunden statt in Mikrosekunden ab. Nutze sofern möglich `timer_start()`, um die Performance zu verbessern. - -### void timer_stop(uint32_t timer_id) - -Stoppt den Timer. Wenn der Timer noch nicht ausgelöst wurde, wird er erst wieder ausgelöst, wenn `timer_start()` nochmal aufgerufen wird. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md deleted file mode 100644 index c4373ed..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: 'Tutorial: 7-segment display' -sidebar_label: 'Tutorial: 7-segement display' ---- - -# Tutorial: 7-segment display - -## Introduction -The Custom Chips API allows you to create new simulation models and behaviors that extend the functionality of Wokwi. -You can create new sensors, displays, memories, testing instruments and even simulate your own hardware. - -Custom chips are usually written in C, and have an accompanying JSON file that describes the pinout, as well as any -input values for the chip (e.g. the current temperature for a temperature sensor chip). Other languages are also -available - more on that later. - -In this tutorial we'll learn how to get started with the Chips API by implementing a simple 7-segment controller chip. -The chip will get a character (0-9 or A-F) via UART interface, and will display it on a -[7-segment display](https://docs.wokwi.com/parts/wokwi-7segment#using-the-7-segment-display). - -Let's get started! - -## The pinout -Before we dive into the code, let's define the pinout for the chip: - -| Name | Type | Function | -| :- | :- | :- | -| VCC | Power | Supply voltage | -| GND | Power | Ground | -| RX | Input | UART | -| SEG_A | Output | 7-segment | -| SEG_B | Output | 7-segment | -| SEG_C | Output | 7-segment | -| SEG_D | Output | 7-segment | -| SEG_E | Output | 7-segment | -| SEG_F | Output | 7-segment | -| SEG_G | Output | 7-segment | - -Our chip will have a total of 10 pins: two power supply pins, one UART input pin (RX), and 7 output pins to drive the -7-segment display. For simplicity, we'll assume that the 7-segment display is a common anode display, which is the -default on Wokwi. - -## The chip JSON file -Now we're ready to start writing code! We'll start from an empty ESP32-C3 project: -[wokwi.com/projects/new/esp32-c3](https://wokwi.com/projects/new/esp32-c3). - -The first thing we need to do is to create a custom chip. The easiest way to go about this is to press the blue "+" -button and serach for "Custom Chip". After selecting this option, type "sevseg-controller" for the chip name. Select -the "C" language option. - -Wokwi will add a green breakout board for your custom chip, and create two new files in your project: -- `sevseg-controller.chip.json` - defines the pinout -- `sevseg-controller.chip.c` - defines the logic for the chip - -We'll start by editing the `sevseg-controller.chip.json` as follows: -1. Change the `name` of the chip to "7 Segment Controller" -2. Change the `author` of the chip to your name -3. Change the `pins` array of the chip to include all the pin names: - ```json - ["VCC", "GND", "RX", "SEG_A", "SEG_B", "SEG_C", "SEG_D", "SEG_E", "SEG_F", "SEG_G"] - ``` - -You'll see the green breakout board updating as you make changes to the JSON file. - -## Implementing the chip's logic -Next, go to `sevseg-controller.chip.c`. This file implements the chip logic. The two important parts are: -1. The `chip_state_t` struct - use it to store all the state information of your chip, together with all the objects - that you create for your chips: IO pins, timers, etc. -2. The `chip_init` function - Wokwi will call this function for every instance (copy) of your chip. The function should - allocate memory for a new `chip_state_t` struct, initialize all the IO pins, the chip's state, and create any - relevant objects (we'll see an example in a minute). - -The default implementation does not include any state or initialization - it only prints a message saying "Hello from -custom chip!". You will see this message when you start the simulation - it'll appear in a new "Chips Console" tab -below the diagram. - -We'll modify `chip_init` to perform the following actions: -1. Initialize all the `SEG_x` pins as outputs -2. Listen for UART data on the `RX` pin, and call a function that will update the `SEG_x` according to the character we - received. - -### Initializing the 7-segment outputs -Start by adding a `segment_pins` array to the `chip_state_t` struct. This array will store a reference to the `SEG_x` -output pins, so we'll need to allocate 7 items: -```C -typedef struct { - pin_t segment_pins[7]; -} chip_state_t; -``` - -Next, add the following code to `chip_init` (after the line that defines `chip`): -```C -chip->segment_pins[0] = pin_init("SEG_A", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_B", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_C", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_D", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_E", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_F", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_G", OUTPUT_HIGH); -``` - -The code initializes each of the segment pins as an output, and sets the initial value to digital high. The 7-segment -display has a common annode, so setting a segment pin high will turn that segment off. You can learn more about the -`pin_init` function in the [GPIO API reference](../chips-api/gpio.md). - -### Listening to UART data -Add the following code to `chip_init`, right after the code that initializes the segment pins: -```C -const uart_config_t uart_config = { - .tx = NO_PIN, - .rx = pin_init("RX", INPUT), - .buad_rate = 115200, - .rx_data = on_uart_rx_data, - .user_data = chip, -}; -uart_init(&uart_config); -``` - -The code configures the `RX` pin as an input (in the third line), and sets up a `uart_config_t` structure. This -structure configures the baud rate, as well as a function that will get called whenever there is new data, -`on_uart_rx_data`. - -Also note how we set `.user_data` to `chip` - this is important, as this value will be passed as a parameter to the -`on_uart_rx_data` function, providing it access to our chip's state. - -In our case, we are only interested in receiving data, so we set `.tx` to the special `NO_PIN` value. - -:::tip - -To learn more about using UART in Wokwi, check out the [UART API reference](../chips-api/uart.md). - -::: - -### From UART to 7-segment -For the final part of the show, we'll implement the `on_uart_rx_data` callback. Paste the following code above the -definition of `chip_init`: -```C -const uint8_t font[] = { - ['0'] = 0b11000000, - ['1'] = 0b11111001, - ['2'] = 0b10100100, - ['3'] = 0b10110000, - ['4'] = 0b10011001, - ['5'] = 0b10010010, - ['6'] = 0b10000010, - ['7'] = 0b11111000, - ['8'] = 0b10000000, - ['9'] = 0b10010000, - ['A'] = 0b10001000, - ['B'] = 0b10000011, - ['C'] = 0b11000110, - ['D'] = 0b10100001, - ['E'] = 0b10000110, - ['F'] = 0b10001110, -}; - -static void on_uart_rx_data(void *user_data, uint8_t byte) { - chip_state_t *chip = user_data; - uint8_t font_char = font[byte]; - if (font_char) { - for (int bit = 0; bit < 7; bit++) { - uint8_t bit_value = font_char & (1 << bit); - pin_write(chip->segment_pins[bit], bit_value ? HIGH : LOW); - } - } -} -``` - -This part simply defines the "font" - it maps between a character that we receive from UART and the corresponding -segments that need to be turned on. Our 7-segment display has a common anode, so 0 will ligh a segment, and 1 will turn -it off. - -The `on_uart_rx_data` is where the actual magic happens. We use the `font` array to lookup the `byte` we received over -UART. If we find a match (when `font_char` is not 0), we iterate over the bits of the `font_char`, and update each -segment to its corresponding bit in `font_char`. - -That's it - we created a simple 7-segment controller chip for Wokwi! - -## Testing the chip -You can test the chip by adding a 7-segment display to the diagram, and writing it to the chip. Don't forget to write -the common pin of the 7-segment display to the 3.3V or 5V pin of the ESP32-C3 board! - -Next, wire the `RX` pin of the chip to the `TX` pin of the ESP32-C3 board. You can also wire the GND/VCC pins of the -chip for good measures, even though the chip will be functional even without these pins. - -Finally, pase the following code into `sketch.ino`: -```C -void setup() { - Serial.begin(115200); -} - -int i = 0; -void loop() { - Serial.println(i, HEX); - i++; - if (i > 0xf) { - i = 0; - } - delay(500); -} -``` - -It's a simple program that outputs all the hexadecimal values between 0 and F to the ESP32-C3's serial port - all the -characters that are included in our custom chip's font. If you prefer plain C code, you can change the first line in -`loop` to use `printf()` instead. -```C -printf("%X\n", i); -``` - -When you start the simulation, you should see the 7-segment display counting from 0 to F repeatedly. Hooray! - -Doesn't work? No worries, here's the link to the final result, so you can compare it with yours: -[wokwi.com/projects/371252876830114817](https://wokwi.com/projects/371252876830114817). - -## Under the hood -How do custom chips work? What happens with the C code you write? Behind the scenes, Wokwi takes this code and compiles -it into a Web Assembly module using LLVM (if you are curious, here's the -[Docker container](https://github.com/wokwi/wokwi-builders/blob/main/clang-wasm/Dockerfile) that does all the magic). - -When you run the simulation, Wokwi creates an instance of the Web Assembly module, and calls `chip_init` once for -every instance of the chip in your diagram. - -Using Web Assembly means you can write your code in a variety of languages. Currently, only C is officially supported, -there are some examples of how to write custom chips with Rust, AssemblyScript and even Zig. - -There's even a hack where we use Custom Chips to simulate Verilog: we use Yosys CXXRTL to convert your Verilog code -into C++, and then -[use emscripten to compile](https://github.com/wokwi/wokwi-builders/blob/main/verilog-cxxrtl/project/compile.sh) -the result along with [some glue code](https://github.com/wokwi/wokwi-builders/blob/main/verilog-cxxrtl/project/main.cpp) -into Web Assembly. Scary cool? - -## Next steps -If you want to dive deeper into the Custom Chips API, here are some ideas how to build on the chip we created in this -tutorial: - -- **Fix the bug!**
- Unfortunately, our code has a bug - some values will cause it to display garbage on the 7-segment display (try sending - it a 'b'). Some bound checking can help! - -- **Add support for common cathode 7-segment displays**
- You can use an additional input pin to select between common anode/cathode, or use the [Attributes API](../chips-api/attributes.md) - to allow the user to define the type of display by editing the chip attributes in `diagram.json`. - -- **Add another communication protocol**
- You can turn our 7-segment display into an [I2C](../chips-api/i2c.md) or an [SPI](../chips-api/spi.md) device. - -- **Support multiple digits**
- Control a two or four digital 7-segment display! Use the [Time API](../chips-api/time.md) to create a timer that will quickly - alternate between the digits. - -- **Add analog input**
- Use the [Analog API](../chips-api/analog.md) to read and display an analog input value. This makes the 7-segment controller chips - useful even without a microcontroller - you can connect it directly to a potentiometer or an analog sensor, and - display the reading directly. - -- **Share your chip on GitHub**
- By sharing your chip's code on GitHub, you can make it easy for other users to include it in their project. You can - use the [inverter-chip repo](https://github.com/wokwi/inverter-chip) as a starting point - it has a - [GitHub action](https://github.com/wokwi/inverter-chip/blob/main/.github/workflows/build.yaml) that automatically - compiles the chips and creates a release whenever you push a tag. - - Here's an [example for a Wokwi project](https://wokwi.com/projects/350946636543820370) that uses this chip. Note the - "dependencies" section in `diagram.json` - it tells Wokwi where to look for the chip implementation on GitHub. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/uart.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/uart.md deleted file mode 100644 index 98f645d..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/chips-api/uart.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: UART API -sidebar_label: UART API ---- - -# UART API - -Um ein UART-Gerät zu erstellen, rufe als erstes `uart_init` auf und Übergib die Struct `uart_config_t`. Die Struct definiert die RX/TX Pins, Baudrate und die `rx`/`write_done` Callbacks. - -### uart_dev_t uart_init (const uart_config_t \*config) - -Initialisiert ein UART-Gerät. Das Argument `config` definiert die Pins, Konfiguration und Callbacks für das UART-Gerät. Es enthält folgende Felder: - -| Feld | Typ | Beschreibung | -| ------------ | ---------- | --------------------------------------------------------------- | -| `rx` | `pin_t` | Der RX Pin (oder `NO_PIN` um RX zu deaktivieren) | -| `tx` | `pin_t` | Der TX Pin (oder `NO_PIN` um TX zu deaktivieren) | -| `baud_rate` | `uint32_t` | Die Baudrate (z.B. 115200) | -| `rx_data` | callback | Wird für jeden empfangenen Byte am RX-Pin aufgerufen | -| `write_done` | callback | Wird aufgerufen, wenn die Übertragung am TX-Pin fertig ist | -| `user_data` | `void *` | Daten, die in das erste Argument der Callbacks übergeben werden | - -Die beiden Callbacks (`rx_data` und `write_done`) sind optional. Sie nutzen einen Pointer auf `user_data` als erstes Argument. - -Beispiel: - -```cpp -static void on_uart_rx_data(void *user_data, uint8_t byte) { - // `byte` ist der vom "RX" Pin empfangene Byte -} - -static uint8_t on_uart_write_done(void *user_data) { - // Hier kannst du zu übertragende Pakete senden, indem du uart_write aufrufst. -} - -// ... - -const uart_config_t uart1 = { - .tx = pin_init("TX", INPUT_PULLUP), - .rx = pin_init("RX", INPUT), - .baud_rate = 115200, - .rx_data = on_uart_rx_data, - .write_done = on_uart_write_done, - .user_data = chip, -}; -``` - -### bool uart_write (uart_dev_t uart, uint8_t \*buffer, uint32_t count) - -Sendet `count` Bytes vom Speicher, auf den vom `buffer` gezeigt wird an das angegebene `uart`-Gerät. -Gibt `true` bei Erfolg zurück oder `false`, wenn das UART-Gerät schon Daten überträgt (die neuen Daten werden nicht übertragen). - -Die Daten werden nach der Rückgabe von `uart_write` übertragen. Sobald Wokwi die Daten fertig übertragen hat, wird das `write_done` Callback aufgerugen. - -## Beispiele - -- [UART ROT13 Chip](https://wokwi.com/projects/333638144389808723) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/faq.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/faq.md deleted file mode 100644 index 9e8d9e2..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/faq.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -slug: /faq -title: Frequently Asked Questions ---- - -## Was bedeutet Wokwi? - -Wir haben nach einem kurzen Wort gesucht, das leicht auszusprechen ist und noch keine Bedeutung hat. Wir haben eine Liste von möglichen Namen gemacht und dann Wokwi ausgesucht, weil wir den Namen am meisten mochten. Hier sind ein paar andere Namen, die es nicht geschafft haben: Duvav, Hajuu, Chipine, Zeprr. - -## Wie finde ich ein Projekt, das ich gespeichert habe? - -Wenn du dich nicht angemeldet hast aber das gleiche Gerät nutzt, findest du die Projekte unter [https://wokwi.com/dashboard/projects](https://wokwi.com/dashboard/projects). Wenn du dich vor dem Speichern angemeldet hast, werden dort alle Projekte von allen Geräten angezeigt. Du kommst auch zu deinen Projekten, wenn du auf dein Profilbild und dann auf "My Projects" klickst. - -## Wie funktioniert Wokwi? - -Wokwi kompiliert deinen Code zu einer binären Firmware und führt diese dann Anweisung für Anweisung aus, genau wie ein echter Microcontrolle es auch macht. Hier findest du noch mehr Infos darüber, die Infos sind jedoch auf englisch: - -- [Raspberry Pi Pico and RP2040 Deep Dive](https://www.youtube.com/watch?v=Duel_Oaases&list=PL_tws4AXg7auiZHZsL-qfrXoMiUONBB0U&index=2) - This 5 hours course will give you good understanding of the RP2040 architecture, and how it works. -- [Live-coding Raspberry Pi Pico Simulator from Scratch](https://www.youtube.com/watch?v=POCUbWhBXVA&list=PLLomdjsHtJTxT-vdJHwa3z62dFXZnzYBm&index=1&t=0s) - 70 hours long live-coding series where you'll see how we built the Pi Pico simulator, along with explanations about the architecture and design decisions. -- [AVR8js: Simulate Arduino in JavaScript](https://blog.wokwi.com/avr8js-simulate-arduino-in-javascript/) - Blog post covering the basics of the Arduino simulation engine. -- [Let's Code Arduino Simulator from Scratch](https://www.youtube.com/watch?v=fArqj-USmjA) - Create a simple Arduino simulator app using Wokwi's [AVR8js](https://github.com/wokwi/avr8js) open-source AVR simulation engine (16 minutes). -- [Reversing the ESP32 WiFi](https://www.youtube.com/watch?v=XmaT8bMssyQ) - Learn how we prepared the ground for the ESP32 WiFi simulation by reverse engineering the WiFi hardware (32 minutes). diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/supported-hardware.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/supported-hardware.md deleted file mode 100644 index 84d8c50..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/getting-started/supported-hardware.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Unterstützte Hardware ---- - -Wokwi unterstützt eine Vielzahl an Hardwarekomponenten, z.B. Mikrocontroller, Sensoren, Displays und viele weitere Komponenten. Folgende Architekturen werden unterstützt: ARM, AVR, RISC-V und Xtensa. - -:::warning - -Einige Bauteile wurden nicht übersetzt, da es keine gute Übersetzung gibt oder nur Teile der Beschreibung wurden übersetzt. - -::: - -## Microcontroller - -The following microcontrollers are currently supported: - -| Familie | Microcontroller | -| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| AVR | ATmega328P ([Arduino Uno](../parts/wokwi-arduino-uno)), ATmega2560 ([Arduino Mega](../parts/wokwi-arduino-mega)), [ATtiny85](../parts/wokwi-attiny85) | -| [ESP32](../guides/esp32) | **Xtensa**: ESP32, ESP32-S2, ESP32-S3
**RISC-V**: ESP32-C3, ESP32-C6, ESP32-H2\*
| -| STM32 | [STM32C031](../parts/board-st-nucleo-c031c6), [STM32L031](../parts/board-st-nucleo-l031k6) | -| [Pi Pico](../parts/wokwi-pi-pico) | RP2040 (Raspberry Pi Pico), ein Dual-Core ARM Cortex-M0+ microcontroller | - -\* ESP32-C6 Support ist in der Beta, ESP32-H2 Support ist in der Alpha. - -## Sensoren - -| Teil | Beschreibung | -| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- | -| [HC-SR04](../parts/wokwi-hc-sr04) | HC-SR04 Ultraschall Entfernungssensor | -| [DHT22](../parts/wokwi-dht22) | Digitaler Feuchtigkeits- und Temeratursensor | -| [DS1307 RTC](../parts/wokwi-ds1307) | RTC (Real Time Clock) Modul mit I2C interface und 56 Bytes NV SRAM | -| [PIR Motion Sensor](../parts/wokwi-pir-motion-sensor) | Passiver Infrarot Bewegungssensor | -| [Analog Temperature Sensor (NTC)](../parts/wokwi-ntc-temperature-sensor) | Analoger Temeratursensor: NTC (negative temperature coefficient) Thermistor | -| DS18B20 Temperature Sensor | One-Wire digitaler Temperatursensor | -| [MPU6050](../parts/wokwi-mpu6050) | Integrierter Sensor mit 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop und einem Temperatursensor mit I2C-Schnittstelle | -| [Photoresistor](../parts/wokwi-photoresistor-sensor) | Photowiderstand (LDR) Sensor | -| [HX711 Load Cell](../parts/wokwi-hx711) | HX711 Load Cell Amplifier with 5kg/50kg/gauge load cell | - -## Input devices - -| Teil | Beschreibung | -| --------------------------------------------------------- | --------------------------------------------------------------------------------- | -| [Pushbutton](../parts/wokwi-pushbutton) | 12mm Tastschalter (Drucktaster) | -| [Slide switch](../parts/wokwi-slide-switch) | Standard-Schiebeschalter (SPDT), einpolig und zweistufig | -| [DIP Switch 8](../parts/wokwi-dip-switch-8) | Set von 8 Schaltern | -| [Keypad](../parts/wokwi-membrane-keypad) | Standard 4x4 Keypad (für die Eingabe von Zahlen) | -| [Analog Joystick](../parts/wokwi-analog-joystick) | Analoger Joystick mit zwei Achsen (horizontal/vertical) and integriertem Taster | -| [Potentiometer](../parts/wokwi-potentiometer) | Regelbarer Widerstand mit Drehknopf (lineares Potentiometer) | -| [Slide Potentiometer](../parts/wokwi-slide-potentiometer) | Variabler Schiebwiderstand (lineares Potentiometer) | -| [Rotary Encoder (KY-040)](../parts/wokwi-ky-040) | KY-040 Rotary Encoder Modul mit 20 Schritten pro Umdrehung. | - -## LEDs - -| Part | Description | -| --------------------------------------------- | -------------------------------------------------- | -| [LED](../parts/wokwi-led) | Standard 5mm LED (Light Emitting Diode) | -| [RGB LED](../parts/wokwi-rgb-led) | 5mm Red, Green and Blue (RGB) LED | -| [LED Bar Graph](../parts/wokwi-led-bar-graph) | 10-segment LED Bar Graph | -| WS2812 LED | NeoPixel kombatible LED | -| WS2812 LED Ring | NeoPixel kompatibler LED Ring | -| WS2812 LED Strip | NeoPixel kompatibler LED Streifen | -| WS2812 LED Matrix | NeoPixel kompatible LED Matrix | -| NeoPixel Meter | Misst NeoPixel Framerate und Energieverbrauch | -| [NLSF595 LED Driver](../parts/wokwi-nlsf595) | Serieller (SPI) Tri-Color LED-Treiber | - -## Display - -| Teil | Beschreibung | -| -------------------------------------------------------------- | ---------------------------------------------------------- | -| [LCD 1602](../parts/wokwi-lcd1602) | LCD mit 2 Zeilen, 16 Zeichen pro Zeile | -| [LCD 2004](../parts/wokwi-lcd2004) | LCD mit 4 Zeilen, 20 Zeichen pro Zeile | -| [ILI9341 2.8" TFT-LCD display](../parts/wokwi-ili9341) | Full color 240x320 2.8" LCD-TFT Display mit SPI interface | -| ILI9341 2.8" Touch Screen LCD | ILI9341 LCD with FT6206 I2C capacitive touch controller | -| [SSD1306 OLED](../parts/board-ssd1306) | Monochrome 128x64 OLED display mit I2C Interface | -| [MAX7219 LED Dot Matrix](../parts/wokwi-max7219-matrix) | 8x8 LED Punktmatrix mit MAX7219 Controller | -| [Seven Segment Display](../parts/wokwi-7segment) | 7-Segment Display (eine bis vier Ziffern) | -| [TM1637 Seven Segment Display](../parts/wokwi-tm1637-7segment) | 4 Ziffern 7-Segment Display mit TM1637 4-wire Interface | -| 2.9" e-Paper Display | 2.9" e-Paper Display | -| [PAL TV](../parts/wokwi-tv) | Analoger Schwarzweiß PAL-TV Bildschirm | - -## Motors - -| Teil | Beschreibung | -| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | -| [Servo](../parts/wokwi-servo) | Standard micro Servomotor | -| [Bipolar Stepper Motor](../parts/wokwi-stepper-motor) | Standard bipolarer Steppermotor | -| [A4988](../parts/wokwi-a4988) | A4988 Stepper Motor Driver | -| [Biaxial Stepper Motor](../parts/wokwi-biaxial-stepper) | A concentric biaxial stepper motor, containing two stepper motors packaged in a single enclosure | - -## Kommunikation - -| Teil | Beschreibung | -| ----------------------------------------- | ------------------------------------------- | -| [IR Receiver](../parts/wokwi-ir-receiver) | 38KHz Infrarotempfänger | -| [IR Remote](../parts/wokwi-ir-remote) | 38KHz Infrarotfernbedienung mit 20 Tasten | - -## Logik - -| Teil | Beschreibung | -| ------------------------------------------------------ | ---------------------------------------------------------- | -| NOT gate | NOT gate | -| AND gate | AND gate | -| OR gate | OR gate | -| XOR gate | XOR gate | -| NAND gate | NAND gate | -| MUX | MUX | -| Flip-Flop D | Flip-Flop D | -| Flip-Flop DSR | Flip-Flop DSR | -| [74HC595 Shift Register](../parts/wokwi-74hc595) | 8-bit Serial-In Parallel-Out (SIPO) Shift Register | -| [74HC165 Input Shift Register](../parts/wokwi-74hc165) | 8-bit Parallel-In Serial-Out (PISO) Shift Register (Input) | - -## Andere Teile - -| Teil | Beschreibung | -| ----------------------------------------------- | --------------------------------------- | -| [Resistor](../parts/wokwi-resistor) | Widerstand | -| [Buzzer](../parts/wokwi-buzzer) | Piezoelektrischer Buzzer | -| [Relay Module](../parts/wokwi-relay-module) | Relay Modul | -| [DPDT Relay](../parts/wokwi-ks2e-m-dc5) | Double Pole Double Throw (DPDT) Relay | -| Breadboard | Standard, halbgroß und mini verfügbar | -| [Logic Analyzer](../parts/wokwi-logic-analyzer) | 8-Kanal Digital Logic Analyzer | -| [microSD card](../parts/wokwi-microsd-card) | microSD Karte mit SPI interface | diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/welcome.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/welcome.md deleted file mode 100644 index 7ed1784..0000000 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/welcome.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -slug: / -title: Willkommen auf Wokwi! ---- - -import { LEDBullet } from '@site/src/components/LEDBullet' - -Wokwi ist ein Online-Simulator für Elektronik. Du kannst Arduino, ESP32, STM32 und viele andere beliebte Boards, Teile und Sensoren simulieren. - -Hier sind ein paar Beispiele, was du mit Wokwi machen kannst: - -- [Arduino Uno "Hallo Welt"](https://wokwi.com/projects/322062421191557714) -- [Mit einem ESP32 eine LED blinken lassen](https://wokwi.com/projects/305566932847821378) -- [Das Wetter mit einem ATtiny85 aufzeichnen](https://wokwi.com/projects/292900020514980360) -- [32 Servos mit einem Arduino Mega steuern](https://wokwi.com/projects/305336312628511297) -- [Eine Matrix mit FastLED steuern](https://wokwi.com/projects/320579687608746578) -- [oder vielleicht doch ein 7-Segment Zähler mit MicroPython für den ESP32?](https://wokwi.com/projects/300210834979684872) - -## Warum Wokwi? - - - Normalerweise musst du warten, bis Bauteile ankommen oder große Downloads fertig sind. Mit Wokwi kannst du direkt loslegen und dein nächstes IoT Projekt innerhalb von Sekunden starten. - - - - Du kannst machen was du willst, denn die Hardware ist unzerstörbar. Wir sprechen aus Erfahrung. Und wenn etwas nicht funktioniert, kannst du es einfach rückgängig machen. - - - - Wenn du einen Freund um Hilfe bitten willst, musst du ihm einfach nur den Link zu deinem Projekt senden. - - - - Softwarefehler und Hardwarefehler sind voneinander getrennt. - - - - Dir wird nie wieder eine LED fehlen, dann du hast unendlich viele Bauteile. Und das sogar kostenlos. - - - - Wir haben einen Discord Server, wo du Fragen stellen, Projekte teilen und Projekte von anderen anschauen kannst. - - -## Einzigartige Features - -- [WLAN Simulation](guides/esp32-wifi) - Verbinde dein Projekt mit dem Internet. Du kannst MQTT, HTTP, NTP und viele andere Protokolle nutzen. -- [Virtuell Logik analysieren](guides/logic-analyzer) - Du kannst digitale Signale in deiner Simulation (z.B. UART, I2C, SPI) aufnehmen und dann auf deinem Computer analysieren. -- [Fortgeschrittenes Debugging mit GDB](gdb-debugging) - Ein mächtiger Arduino und Raspberry P Pico Debugger für fortgeschrittene Nutzer. -- [SD-Karten Simulation](parts/wokwi-microsd-card) - Speichern und Abrufen von Dateien und Verzeichnissen aus deinem Code. [Club](https://wokwi.com/pricing?ref=docs_sdcard)-Mitglieder können sogar Medien (wie z.B. Bilder) hochladen. -- [Chips API](chips-api/getting-started) - Erstelle deine eigenen Chips und Bauteile und teile sie mit der Community. -- [VS Code integration](vscode/getting-started) - Simuliere deine Projekte direkt in VS Code. - -## Wie viel kosted das ganze? - -Wokwi ist für den persönlichen Gebrauch kostenlos. Für kommerzielle Nutzer und Profis, bitte schauen Sie sich unsere kostenpflichtigen Pläne auf der [Preisseite](https://wokwi.com/pricing?ref=docs_welcome) an. diff --git a/i18n/de-DE/docusaurus-theme-classic/footer.json b/i18n/de-DE/docusaurus-theme-classic/footer.json deleted file mode 100644 index 2c059ca..0000000 --- a/i18n/de-DE/docusaurus-theme-classic/footer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "link.title.Docs": { - "message": "Dokumentation", - "description": "The title of the footer links column with title=Docs in the footer" - }, - "link.title.Community": { - "message": "Community", - "description": "The title of the footer links column with title=Community in the footer" - }, - "link.title.More": { - "message": "Mehr", - "description": "The title of the footer links column with title=More in the footer" - }, - "link.item.label.Welcome": { - "message": "Willkommen", - "description": "The label of footer link with label=Welcome linking to /" - }, - "link.item.label.diagram.json": { - "message": "diagram.json", - "description": "The label of footer link with label=diagram.json linking to /diagram-format" - }, - "link.item.label.Discord": { - "message": "Discord", - "description": "The label of footer link with label=Discord linking to https://wokwi.com/discord" - }, - "link.item.label.Twitter": { - "message": "Twitter", - "description": "The label of footer link with label=Twitter linking to https://twitter.com/WokwiMakes" - }, - "link.item.label.Blog": { - "message": "Blog", - "description": "The label of footer link with label=Blog linking to https://blog.wokwi.com" - }, - "link.item.label.GitHub": { - "message": "GitHub", - "description": "The label of footer link with label=GitHub linking to https://github.com/wokwi/wokwi-docs" - } -} diff --git a/i18n/de-DE/docusaurus-theme-classic/navbar.json b/i18n/de-DE/docusaurus-theme-classic/navbar.json deleted file mode 100644 index 20f218d..0000000 --- a/i18n/de-DE/docusaurus-theme-classic/navbar.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": { - "message": "Wokwi", - "description": "The title in the navbar" - }, - "item.label.Docs": { - "message": "Dokumentation", - "description": "Navbar item with label Docs" - }, - "item.label.Blog": { - "message": "Blog", - "description": "Navbar item with label Blog" - }, - "item.label.Simulator": { - "message": "Simulator", - "description": "Navbar item with label Simulator" - } -} diff --git a/i18n/pt-BR/code.json b/i18n/pt-BR/code.json deleted file mode 100644 index be71581..0000000 --- a/i18n/pt-BR/code.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "theme.NotFound.title": { - "message": "Página não encontrada", - "description": "O título da página 404" - }, - "theme.NotFound.p1": { - "message": "Não foi possível encontrar o que você estava procurando.", - "description": "O primeiro parágrafo da página 404" - }, - "theme.NotFound.p2": { - "message": "Entre em contato com o proprietário do site que vinculou a URL original e informe a ele que o link está quebrado.", - "description": "O segundo parágrafo da página 404" - }, - "theme.AnnouncementBar.closeButtonAriaLabel": { - "message": "Fechar", - "description": "O rótulo ARIA para o botão Fechar da barra de anúncios" - }, - "theme.blog.post.readingTime.plurals": { - "message": "Um minuto lido|{readingTime} minutos lidos", - "description": "Rótulo pluralizado para \"{readingTime} minutos lidos\". Use o máximo de formas plurais (separado por \"|\") como seu suporte de idioma (veja https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.tags.tagsListLabel": { - "message": "Tags:", - "description": "O rótulo ao lado de uma lista de tags" - }, - "theme.blog.post.readMore": { - "message": "Leia Mais", - "description": "O rótulo usado nos trechos do item da postagem do blog para vincular a postagens completas do blog" - }, - "theme.blog.paginator.navAriaLabel": { - "message": "Navegação da página da lista de blogs", - "description": "O rótulo ARIA para a paginação do blog" - }, - "theme.blog.paginator.newerEntries": { - "message": "Novas Entradas", - "description": "O rótulo usado para navegar para a página de postagens mais recentes do blog (página anterior)" - }, - "theme.blog.paginator.olderEntries": { - "message": "Entradas Antigas", - "description": "O rótulo usado para navegar para a página de postagens mais antigas do blog (próxima página)" - }, - "theme.blog.post.paginator.navAriaLabel": { - "message": "Navegação na página de postagem do blog", - "description": "O rótulo ARIA para a paginação das postagens do blog" - }, - "theme.blog.post.paginator.newerPost": { - "message": "Postagem mais recente", - "description": "O rótulo do botão de postagem do blog para navegar para a postagem mais recente/anterior" - }, - "theme.blog.post.paginator.olderPost": { - "message": "Postagem mais antiga", - "description": "O rótulo do botão de postagem do blog para navegar para a próxima postagem/anterior" - }, - "theme.tags.tagsPageTitle": { - "message": "Tags", - "description": "O título da página da lista de tags" - }, - "theme.blog.post.plurals": { - "message": "Uma postagem|{count} postagens", - "description": "Rótulo pluralizado para \"{count} postagens\". Use o máximo de formas plurais (separado por \"|\") como seu suporte de idioma (veja https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.blog.tagTitle": { - "message": "{nPosts} tagged with \"{tagName}\"", - "description": "The title of the page for a blog tag" - }, - "theme.tags.tagsPageLink": { - "message": "Exibir todas as tags", - "description": "O rótulo do link que direciona a página da lista de tags" - }, - "theme.CodeBlock.copyButtonAriaLabel": { - "message": "Copiar o código para a área de transferência", - "description": "O rótulo ARIA para copiar o botão de blocos de código" - }, - "theme.CodeBlock.copied": { - "message": "Copiado", - "description": "O rótulo do botão copiado em blocos de código" - }, - "theme.CodeBlock.copy": { - "message": "Copiar", - "description": "O rótulo do botão de cópia em blocos de código" - }, - "theme.docs.sidebar.expandButtonTitle": { - "message": "Expandir barra lateral", - "description": "O rótulo ARIA e o atributo de título para o botão de expansão da barra lateral de documentos" - }, - "theme.docs.sidebar.expandButtonAriaLabel": { - "message": "Expandir barra lateral", - "description": "O rótulo ARIA e o atributo de título para o botão de expansão da barra lateral de documentos" - }, - "theme.docs.paginator.navAriaLabel": { - "message": "Navegação nas páginas do Documentos", - "description": "O rótulo ARIA para a paginação de documentos" - }, - "theme.docs.paginator.previous": { - "message": "Anterior", - "description": "O rótulo usado para navegar para o documento anterior" - }, - "theme.docs.paginator.next": { - "message": "Próximo", - "description": "O rótulo usado para navegar para o próximo documento" - }, - "theme.docs.sidebar.responsiveCloseButtonLabel": { - "message": "Fechar menu", - "description": "O rótulo ARIA para o botão Fechar da barra lateral de documentos móveis" - }, - "theme.docs.sidebar.responsiveOpenButtonLabel": { - "message": "Abrir menu", - "description": "O rótulo ARIA para o botão abrir da barra lateral de documentos móveis" - }, - "theme.docs.sidebar.collapseButtonTitle": { - "message": "Recolher barra lateral", - "description": "O atributo de título para o botão de recolhimento da barra lateral de documentos" - }, - "theme.docs.sidebar.collapseButtonAriaLabel": { - "message": "Recolher barra lateral", - "description": "O atributo de título para o botão de recolhimento da barra lateral de documentos" - }, - "theme.docs.versions.unreleasedVersionLabel": { - "message": "Esta é uma documentação não lançada para {siteTitle} na versão {versionLabel}.", - "description": "O rótulo usado para informar ao usuário que ele está navegando em uma versão de documento não lançada" - }, - "theme.docs.versions.unmaintainedVersionLabel": { - "message": "Esta é a documentação para {siteTitle} {versionLabel}, que não é mais mantido ativamente.", - "description": "O rótulo usado para informar ao usuário que ele está navegando em uma versão de documento não mantida" - }, - "theme.docs.versions.latestVersionSuggestionLabel": { - "message": "Para documentação atualizada, consulte a {latestVersionLink} ({versionLabel}).", - "description": "O rótulo userd para informar ao usuário que ele está navegando em uma versão de documento não mantida" - }, - "theme.docs.versions.latestVersionLinkLabel": { - "message": "última versão", - "description": "O rótulo usado para o rótulo do link de sugestão da versão mais recente" - }, - "theme.common.editThisPage": { - "message": "Editar essa página", - "description": "O rótulo do link para editar a página atual" - }, - "theme.common.headingLinkTitle": { - "message": "Link direto para o título", - "description": "Título para link para cabeçalho" - }, - "theme.lastUpdated.atDate": { - "message": " em {date}", - "description": "As palavras usadas para descrever em que data uma página foi atualizada pela última vezd" - }, - "theme.lastUpdated.byUser": { - "message": " por {user}", - "description": "As palavras usadas para descrever por quem a página foi atualizada pela última vez" - }, - "theme.lastUpdated.lastUpdatedAtBy": { - "message": "Ultima atualização{atDate}{byUser}", - "description": "A frase usada para exibir quando uma página foi atualizada pela última vez e por quem" - }, - "theme.common.skipToMainContent": { - "message": "Ir para o conteúdo principal", - "description": "O salto para o rótulo de conteúdo usado para acessibilidade, permitindo navegar rapidamente para o conteúdo principal com a navegação do teclado tab/enter" - }, - "theme.SearchPage.documentsFound.plurals": { - "message": "Um documento encontrado|{count} documentos encontrados", - "description": "Rótulo pluralizado para \"{count} documentos encontrados\". Use o máximo de formas plurais (separados por \"|\") como seu suporte de idioma (veja https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.SearchPage.existingResultsTitle": { - "message": "Resultados da busca por \"{query}\"", - "description": "O título da página de pesquisa para consulta não vazia" - }, - "theme.SearchPage.emptyResultsTitle": { - "message": "Pesquise a documentação", - "description": "O título da página de pesquisa para consulta vazia" - }, - "theme.SearchPage.inputPlaceholder": { - "message": "Digite sua pesquisa aqui", - "description": "O espaço reservado para a entrada da página de pesquisa" - }, - "theme.SearchPage.inputLabel": { - "message": "Procurar", - "description": "O rótulo ARIA para entrada da página de pesquisa" - }, - "theme.SearchPage.algoliaLabel": { - "message": "Pesquisa por Algolia", - "description": "O rótulo ARIA para menção Algolia" - }, - "theme.SearchPage.noResultsText": { - "message": "Nenhum resultado foi encontrado", - "description": "O parágrafo para o resultado da pesquisa vazio" - }, - "theme.SearchPage.fetchingNewResults": { - "message": "Buscando novos resultados...", - "description": "O parágrafo para buscar novos resultados de pesquisa" - }, - "theme.SearchBar.label": { - "message": "Procurar", - "description": "O rótulo ARIA e o espaço reservado para o botão de pesquisa" - }, - "theme.Tip.label": { - "message": "Dica", - "description": "O rótulo ARIA e o espaço reservado para a dica de mensagem" - } -} diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current.json b/i18n/pt-BR/docusaurus-plugin-content-docs/current.json deleted file mode 100644 index ea0cb97..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version.label": { - "message": "Próximo", - "description": "O rótulo para a versão atual" - }, - "sidebar.main.category.Getting Started": { - "message": "Começando", - "description": "O rótulo da categoria Introdução na barra lateral principal" - }, - "sidebar.main.category.Guides": { - "message": "Guias", - "description": "O rótulo para a categoria Guias na barra lateral principal" - }, - "sidebar.main.category.Diagram Reference": { - "message": "Referência do Diagrama", - "description": "O rótulo para a categoria Referência de Diagrama na barra lateral principal" - } -} diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/analog.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/analog.md deleted file mode 100644 index 56eeb59..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/analog.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: API Analógica -sidebar_label: API Analógica ---- - -# API Analógica - -### float pin_adc_read(pin_t pin) - -Mede a tensão atual no pino fornecido e a retorna. O pino deve ser definido para o modo `ANALOG`, caso contrário, o valor de retorno desta função é indefinido. Observe que o Wokwi é um simulador digital com suporte analógico básico, portanto, atualmente, a simulação analógica é muito limitada. Algumas peças que suportam saída analógica incluem o [potenciômetro](../parts/wokwi-slide-potentiometer), [sensor de temperatura NTC](../parts/wokwi-ntc-temperature-sensor), [fotoresistor](../parts/wokwi-photoresistor-sensor) e [joystick analógico](../parts/wokwi-analog-joystick). - -### void pin_dac_write(pin_t pin, float voltage) - -Define a tensão analógica no pino fornecido. Atualmente, a tensão de referência para todos os ADCs virtuais é de 5 volts (independentemente do MCU), portanto, definir a tensão como 0 retornará o valor mínimo e definir a tensão como 5 retornará o valor máximo (que é 1023 no Arduino). Isso pode mudar no futuro. - -Este método pode ser chamado antes de definir o pino para o modo `ANALOG`, mas a tensão só será atualizada quando o modo do pino for definido para `ANALOG`. - -## Exemplos no simulator - -- [Exemplo da API Analógica](https://wokwi.com/projects/330112801381024338) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/attributes.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/attributes.md deleted file mode 100644 index 73ce3c4..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/attributes.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Atributos -sidebar_label: Atributos ---- - -# Atributos - -Atributos são parâmetros de entrada que o usuário pode definir em `diagram.json`. Você também pode definir uma seção `controls` no arquivo `.chip.json` para permitir que o usuário edite esses parâmetros interativamente durante a simulação. Isso é particularmente útil para entradas de sensores (por exemplo, temperatura, umidade, etc.). - -### Nomenclatura - -Ao nomear seus atributos, siga as seguintes convenções: - -- Use `camelCase` para nomes de atributos -- Use a ortografia do Inglês Americano (por exemplo, `color` e não `colour`) - -### uint32_t attr_init(const char \*name, uint32_t default_value) - -Define um novo atributo inteiro com o nome fornecido. O `default_value` será usado quando o usuário não definir um valor para o atributo em `diagram.json` (na seção `attrs` da `parte` do chip personalizado). - -A função retorna um identificador para o atributo, que pode ser acessado usando `attr_read()`. - -:::warning AVISO - -Nota: `attr_init` só pode ser chamado através de `chip_init()`. Não chame isso mais tarde. - -::: - -### uint32_t attr_init_float(const char \*name, float default_value) - -Define um novo atributo de ponto flutuante com o nome fornecido. Veja `attr_init()` para mais informações. - -:::warning AVISO - -Nota: `attr_init_float` só pode ser chamado de `chip_init()`. Não chame isso mais tarde. - -::: - -### uint32_t attr_read(uint32_t attr) - -Retorna o valor atual do atributo. `attr` deve ser um identificador de atributo válido, previamente retornado por `attr_init()`. - -### float attr_read_float(uint32_t attr) - -Retorna o valor atual do atributo. `attr` deve ser um identificador de atributo válido, previamente retornado por `attr_init_float()`. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/chip-debug.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/chip-debug.png deleted file mode 100644 index 12d6cdb..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/chip-debug.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md deleted file mode 100644 index c94fa90..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/framebuffer.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: API Framebuffer -sidebar_label: API Framebuffer ---- - -# API Framebuffer - -Use a API Framebuffer para implementar displays (LCD, OLED, e-paper, etc.). O tamanho de exibição é definido no arquivo `.chip.json`. O framebuffer usa 32 bits por pixel. Os pixels são armazenados no formato RGBA. O tamanho total do buffer é `pixel_width * pixel_height * 4` bytes. - -### buffer_t framebuffer_init(uint32_t *pixel_width, uint32_t *pixel_height) - -Retorna o framebuffer para o chip atual e as dimensões em pixel (largura/altura) do frame buffer. - -:::warning AVISO - -Nota: `framebuffer_init` só pode ser chamado de `chip_init()`. Não chame isso mais tarde. - -::: - -### void buffer_write(buffer_t buffer, uint32_t offset, void \*data, uint32_t data_len) - -Copia os bytes `data_len` de `data` para o frame buffer, no `offset` fornecido. - -### void buffer_read(buffer_t buffer, uint32_t offset, void \*data, uint32_t data_len) - -Copia os bytes `data_len` no `offset` fornecido do frame buffer em `data`. - -## Exemplos no simulator - -- [Exemplo Básico de Chip Framebuffer](https://wokwi.com/projects/330503863007183442) -- [Display LCD colorido IL9163 128x128](https://wokwi.com/projects/333332561949360723) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/getting-started.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/getting-started.md deleted file mode 100644 index b7f051a..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/getting-started.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Introdução à API Wokwi Custom Chips C -sidebar_label: Começando ---- - -# Introdução à API Wokwi Custom Chips C - -:::warning AVISO - -A API de chips está atualmente em versão beta. Por favor, compartilhe suas experiências e forneça feedback no canal `#custom-chips` no [chat do Discord](https://wokwi.com/discord). - -::: - -## Começando - -Abra o [Custom Chip Playground](https://wokwi.com/projects/327144279206003284), vá para o editor de código, pressione `F1` e selecione _Create a custom C chip (alpha)_. - -Isso criará um novo arquivo chamado `i2c-counter.chip.c`. Este arquivo contém um exemplo de um dispositivo [I2C](i2c) simples com um contador de 8 bits que aumenta para cada byte que você lê. A gravação no dispositivo substituirá o valor. - -O dispositivo também fornece um pino `INT` que fica baixo quando o contador é maior que `127`. Caso contrário, o pino `INT` está no estado de entrada (alta impedância). - -Inicie a simulação para observar o comportamento do chip customizado: o código do Arduino deve ler o valor do contador, e o LED acenderá quando o contador ultrapassar `127`. - -## Adicionando seu chip personalizado à simulação - -O [Custom Chip Playground](https://wokwi.com/projects/327144279206003284) já tem o chip conectado, mas você pode seguir as instruções abaixo para conectar um chip personalizado a um projeto diferente. - -Adicione o seguinte snippet ao seu diagram.json: - -`{ "type": "chip-i2c-counter", "id": "chip1", "top": 0, "left": 0, "attrs": {} },` - -O Wokwi gera automaticamente uma **placa de expansão (breakout board)** para o seu chip. Edite `i2c-counter.chip.json` para definir os pinos para sua peça. O array `pins` deve conter os nomes dos pinos do seu chip, começando pelo pino número `1`. Se você deseja pular alguns pinos (por exemplo, deseja que o quadro de acesso tenha apenas pinos no lado esquerdo), use uma string vazia (`""`) para o nome do pino. - -## Usando a API - -Primeiro, certifique-se de `#include "wokwi-api.h"`. -O chip deve declarar um método `chip_init`. Este método será chamado para cada nova instância do chip. Se o chip tiver algum estado interno, `chip_init` deve alocar memória para o estado interno e salvar um ponteiro para esta memória no campo `void *user_data` das estruturas de configuração do dispositivo (por exemplo, `i2c_config_t`, `timer_config_t`, etc .). - -Aqui está um exemplo de um arquivo chip mínimo: - -```cpp -#include "wokwi-api.h" - -void chip_init() { - /* - Este método é executado quando a simulação é iniciada. É chamado uma vez para cada instância do chip. - Você normalmente alocaria alguma memória para armazenar o estado do chip, inicializar um monte de pinos com pin_init(), - e configurar relógios de pinos, temporizadores e protocolos como UART, I2C e SPI. - */ -} -``` - -### Depurando seu chip personalizado - -Você pode imprimir mensagens de depuração usando a função padrão C `printf()`. Certifique-se de também `#include ` em seu programa. As mensagens de depuração aparecerão no console do desenvolvedor do navegador (para visualizar no Chrome: `Ctrl`+`Shift`+`J` ou `Option`+`⌘`+`J`). - -As mensagens de depuração do seu chip serão impressas na cor verde: - -Mensagens de depuração de chip exibidas em verde - -Além disso, você pode usar o [Analisador Lógico Wokwi](../guides/logic-analyzer) para depurar a comunicação com seu chip personalizado. - -:::tip Dica -Certifique-se de incluir uma nova linha ("\n") no final de suas mensagens `printf()`. O simulador mostra as mensagens somente quando possuí um caractere de nova linha. -::: - -## Referência da API dos chips 📖 - -- [API de pinos GPIO](gpio) -- [API Analógica](analog) -- [API de simulação de tempo](time) -- [API da UART](uart) -- [API do dispositivo I2C](i2c) -- [API do dispositivo SPI](spi) -- [Atributos](attributes) -- [API Framebuffer](framebuffer) - -## Exemplos de Chip - -- [Digital Inverter](https://wokwi.com/projects/327458636089524820) -- [XOR gate](https://wokwi.com/projects/329456176677782100) -- [SPI Chip](https://wokwi.com/projects/330669951756010068) - Implementa uma cifra ROT13 básica -- [I2C Chip](https://wokwi.com/projects/344061754973618771) - Saída simples de interrupção do contador -- [UART Chip](https://wokwi.com/projects/333638144389808723) - Implementa uma cifra ROT13 básica -- [Timer Chip](https://wokwi.com/projects/341265875285836370) - Mostrando como usar a API Timer -- [LM75A Chip](https://wokwi.com/projects/344037885763125843) - Sensor digital de temperatura I2C -- [Framebuffer Chip](https://wokwi.com/projects/330503863007183442) - Mostra como implementar um chip de driver de exibição personalizado -- [IL9163 Display Driver](https://wokwi.com/projects/333332561949360723) - Chip de exibição LCD colorido de 128x128 -- [I2C Keypad Driver Example](https://wokwi.com/projects/344059749365449300) (por Yewolf) -- [CD4051B Multiplexer Example](https://wokwi.com/projects/343522915673702994) (por Chris Schmidt) -- [EEPROM Chip](https://wokwi.com/projects/329482717479567954) (por Benny Meisels) -- [PCA9685 Chip](https://wokwi.com/projects/348856116302578258) (por Bonny Rais) -- [DS18B20 Chip](https://wokwi.com/projects/349898396478210642) (por Bonny Rais) - Sensor de temperatura Dallas Semi DS18B20 através do OneWire diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/gpio.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/gpio.md deleted file mode 100644 index c7ab8af..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/gpio.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: API de pinos GPIO -sidebar_label: API GPIO ---- - -# API de pinos GPIO - -Os chips interagem com o simulador usando pinos digitais. Os pinos são definidos em um arquivo JSON, chamado `{chip-name}.chip.json` (substitua `{chip-name}` pelo nome real do chip). Por exemplo, o seguinte arquivo JSON define um chip com 4 pinos (`IN`, `OUT`, `VCC`, `GND`): - -```json -{ - "name": "Inverter", - "author": "Uri Shaked", - "pins": ["OUT", "IN", "VCC", "GND"] -} -``` - -A API de pinos GPIO permite que seu código de implementação de chip interaja com os pinos GPIO: - -### pin_t pin_init(const char \*name, uint32_t mode) - -Inicializa o pino fornecido e retorna um identificador de pino para uso com os outros métodos de pino. Os parâmetros `mode` configuram o estado inicial do pino. Estão disponíveis os seguintes valores: - -- `INPUT` - configura o pino como uma entrada digital -- `INPUT_PULLUP` - configura o pino como uma entrada digital e anexa um registrador pull-up ao pino. -- `INPUT_PULLDOWN` - configura o pino como uma entrada digital e anexa um registrador pull-down ao pino. -- `OUTPUT` - configura o pino como uma saída digital -- `OUTPUT_LOW` - configura o pino como uma saída digital, define o valor do pino como LOW -- `OUTPUT_HIGH` - configura o pino como uma saída digital, define o valor do pino para ALTO -- `ANALOG` - configura o pino como um pino analógico. Consulte a seção [API analógica](analog) para obter mais detalhes. - -:::warning AVISO - -Nota: `pin_init()` só pode ser chamado de `chip_init()`. Não ligue mais tarde. Você pode usar `pin_mode()` para alterar o modo de um pino a qualquer momento. - -::: - -### void pin_mode(pin_t pin, uint32_t mode) - -Configura o `pin` fornecido como entrada ou saída digital. Os valores válidos para `mode` são os mesmos de `pin_init()`: `INPUT`, `INPUT_PULLUP`, `INPUT_PULLDOWN`, `OUTPUT`, `OUTPUT_LOW`, `OUTPUT_HIGH` e `ANALOG`. - -### void pin_write(pin_t pin, uint32_t value) - -Defina o valor de saída para um pino digital. Use as constantes `LOW` e `HIGH` para `value`. - -### uint32_t pin_read(pin_t pin) - -Lê o valor digital atual do pino, retorna `LOW` ou `HIGH`. - -### bool pin_watch(pin_t pin, pin_watch_config_t \*config) - -Escuta as mudanças no valor digital do pino fornecido. A estrutura de configuração contém os seguintes campos: - -| Campo | Tipo | Descrição | -| ------------ | ---------- | -------------------------------------------------------------------------- | -| `edge` | `uint32_t` | Quais mudanças de valor de pinos escutamos (`RISING`, `FALLING` ou `BOTH`) | -| `pin_change` | callback | Chamado quando o valor do pino muda (Veja abaixo) | -| `user_data` | `void *` | Dados que serão passados no primeiro argumento para `pin_change` | - -Os valores válidos para borda são: - -- `BOTH` - Escuta qualquer mudança de valor -- `FALLING` - Escuta as mudanças de `HIGH` a `LOW` -- `RISING` - Escuta as mudanças de `LOW` a `HIGH` - -Você só pode ter um relógio para um pino a qualquer momento. A função retorna `true` se o relógio foi ajustado com sucesso, ou `false` caso já exista um relógio definido para este pino (e assim o novo relógio não foi ajustado). - -A assinatura de callback `pin_change` é a seguinte: - -```cpp -void chip_pin_change(void *user_data, pin_t pin, uint32_t value) { - // value will either be HIGH or LOW -} -``` - -### void pin_watch_stop(pin_t pin) - -Pára de observar as alterações no pino fornecido. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/i2c.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/i2c.md deleted file mode 100644 index 1f28561..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/i2c.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: API do dispositivo I2C -sidebar_label: API I2C ---- - -# API do dispositivo I2C - -Para criar um dispositivo I2C, primeiro chame `i2c_init`, passando uma estrutura `i2c_config_t`. Esta estrutura define os pinos SCL/SDA, o endereço do dispositivo I2C e os callbacks `connect`/`read`/`write`/`disconnect`. - -### i2c_dev_t i2c_init(i2c_config_t \*config) - -Inicializa um dispositivo I2C. O argumento `config` define os pinos, endereço e callbacks para o dispositivo I2C. Contém os seguintes campos: - -| Campo | Tipo | Descrição | -| ------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `address` | `uint32_t` | Escuta as solicitações correspondentes ao endereço I2C fornecido (7 bits). Para ouvir todas as solicitações, defina como `0` | -| `sda` | `pin_t` | O pino SDA | -| `scl` | `pin_t` | O pino SCL | -| `connect` | callback | Chamado quando o chip é endereçado no barramento I2C | -| `read` | callback | Chamado quando o microcontrolador quer ler um byte de dados do seu chip | -| `write` | callback | Chamado quando o microcontrolador escreve um byte no seu chip | -| `disconnect` | callback | Chamado quando o microcontrolador se desconecta do seu chip | -| `user_data` | `void *` | Dados que serão passados no primeiro argumento dos callbacks | - -Todos os callbacks (`connect`, `read`, `write`, `disconnect`) são opcionais. Todos eles usam o ponteiro `user_data` como seu primeiro argumento. - -:::warning AVISO - -Nota: `i2c_init` só pode ser chamado de `chip_init()`. Não chame isso mais tarde. - -::: - -Exemplo: - -```cpp -bool on_i2c_connect(void *user_data, uint32_t address, bool read) { - // O parâmetro `address` contém o endereço de 7 bits que foi recebido no barramento I2C. - // `read` indica se esta é uma solicitação de leitura (true) ou uma solicitação de gravação (false). - return true; // verdadeiro significa ACK, falso NACK -} - -uint8_t on_i2c_read(void *user_data) { - return 0; // O byte a ser retornado ao microcontrolador -} - -bool on_i2c_write(void *user_data, uint8_t data) { - // `data` é o byte recebido do microcontrolador - return true; // verdadeiro significa ACK, falso NACK -} - -void on_i2c_disconnect(void *user_data) { - // Este método é opcional. Útil se você precisar saber quando a transação I2C foi concluída. -} - -static const i2c_config_t i2c1 { - .address = 0x22, - .scl = pin_init("SCL", INPUT_PULLUP), - .sda = pin_init("SDA", INPUT_PULLUP), - .connect = on_i2c_connect, - .read = on_i2c_read, - .write = on_i2c_write, - .disconnect = on_i2c_disconnect, - .user_data = chip, -}; -``` diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/spi.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/spi.md deleted file mode 100644 index 739635e..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/spi.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: API do dispositivo SPI -sidebar_label: API SPI ---- - -# API do dispositivo SPI - -Para criar um dispositivo SPI, primeiro chame `spi_init`, passando uma estrutura `spi_config_t`. Essa estrutura define o relógio e os pinos MOSI/MISO, o modo SPI e o callback `done`. - -### spi_dev_t spi_init(spi_config_t \*config) - -Inicializa uma interface de dispositivo SPI. O argumento `config` define os pinos, modo e callbacks para o dispositivo SPI. Contém os seguintes campos: - -| Campo | Tipo | Descrição | -| ----------- | ---------- | ----------------------------------------------------------------- | -| `sck` | `pin_t` | O pino de clock | -| `mosi` | `pin_t` | O pino de dados MOSI (ou `NO_PIN` para desabilitar o MOSI) | -| `miso` | `pin_t` | O pino de dados MISO (ou `NO_PIN` para desabilitar o MISO) | -| `mode` | `uint32_t` | Modo SPI: `0`, `1`, `2` ou `3` (padrão: `0`) | -| `done` | `callback` | Chamado quando uma transação SPI termina (veja abaixo) | -| `user_data` | `void *` | Dados que serão passados no primeiro argumento do callback `done` | - -A API não suporta um pino CS/SS: cabe ao usuário selecionar/desmarcar a interface SPI chamando `spi_start()` e `spi_stop()`. - -:::warning AVISO - -Nota: `spi_init` só pode ser chamado de `chip_init()`. Não ligue mais tarde. - -::: - -Exemplo: - -```cpp -const spi_config_t spi1 { - .sck = pin_init("SCK", INPUT), - .mosi = pin_init("MOSI", INPUT), - .miso = pin_init("MISO", INPUT), - .mode = 0, - .write_done = chip_spi_done, // Veja o exemplo abaixo - .user_data = chip, -}; -``` - -### void spi_start(spi_dev_t spi, uint8_t \*buffer, uint32_t count) - -Inicia uma transação SPI, enviando e recebendo bytes `count` de/para o `buffer` fornecido. - -Normalmente, você escutará o pino CS (seleção de chip) com `pin_watch`. Chame `spi_start()` quando o pino CS for baixo, e `spi_stop()` quando o pino CS for alto. - -Ao criar um dispositivo que transfere grandes quantidades de dados (por exemplo, uma tela LCD), é recomendável usar um tamanho de buffer grande (alguns kilobytes). O simulador pode usar o buffer maior para otimizar a transferência SPI controlada por DMA e acelerar a simulação. - -Para dispositivos simples que transferem pequenas quantidades de dados, você pode usar um buffer de byte único e processar cada byte à medida que chega no callback `done`. - -### void spi_stop(spi_dev_t spi) - -Pára a interface SPI. Normalmente, você chamaria esse método quando o pino CS fosse alto. - -### O callback `done` - -A assinatura para o callback `done` é a seguinte: - -```cpp -static void chip_spi_done(void *user_data, uint8_t *buffer, uint32_t count) { - // 1. processa os dados recebidos (opcional) - // 2. se o pino CS ainda estiver baixo, agende a próxima transação SPI usando `spi_start` -} -``` - -O retorno de chamada `done` é executado quando uma transação SPI termina: quando o buffer fornecido para `spi_start` está cheio ou quando `spi_stop` foi chamado. O `buffer` contém os dados recebidos (é o mesmo buffer dado para `spi_start`), e `count` é o número de bytes que foram transferidos (ou `0` se `spi_stop` foi chamado antes de um byte completo ter sido foi transferido). - -Seu retorno de chamada `done` deve verificar o status do pino CS e, se ainda estiver baixo, deve chamar `spi_start()` novamente para receber o próximo bloco de dados do microcontrolador. - -## Exemplos no simulator - -- [Exemplo de chip SPI ROT13](https://wokwi.com/projects/330669951756010068) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/time.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/time.md deleted file mode 100644 index ad8f4bc..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/time.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: API de simulação de tempo -sidebar_label: API Time ---- - -# API de simulação de tempo - -### uint64_t get_sim_nanos() - -Retorna o tempo atual (virtual) do simulador em nanossegundos. - -:::tip Dica -Você pode obter a hora atual em microssegundos chamando `get_sim_nanos() / 1000`, ou em milissegundos chamando `get_sim_nanos() / 1000000`. -::: - -### timer_t timer_init(timer_config_t \*config) - -Inicializa um novo temporizador. Retorna o identificador do temporizador. Chame `timer_start()` para iniciar o cronômetro e defina o retorno de chamada `chip_timer_event()` para responder aos eventos do cronômetro. - -A estrutura `timer_config_t` contém os seguintes campos: - -| Campo | Tipo | Descrição | -| ----------- | -------- | -------------------------------------------------------------- | -| `callback` | callback | Chamado quando o timer dispara | -| `user_data` | `void *` | Dados que serão passados no primeiro argumento para o callback | - -A assinatura para a função callback é a seguinte: - -```cpp -void chip_timer_callback(void *user_data) { - /* Chamado quando o timer dispara */ -} -``` - -:::warning AVISO - -Nota: `timer_init()` só pode ser chamado de `chip_init()`. Não chame isso mais tarde. - -::: - -### void timer_start(uint32_t timer_id, uint32_t micros, bool repeat) - -Agenda o timer dado por `timer_id`. O argumento `micros` determina quantos microssegundos passarão até que o timer chame `chip_timer_event()`. Se `repeat` for `false`, o evento do timer será chamado uma vez (one-shot timer). Se repeat for `true`, o evento timer continuará sendo chamado a cada microssegundos `micros`, até que você chame `timer_stop()` ou reconfigure o timer com `timer_start`. - -### void timer_start_ns(uint32_t timer_id, uint64_t nanos, bool repeat) - -Semelhante a `timer_start`, mas especifica a duração do cronômetro em nanossegundos em vez de microssegundos. Prefira `timer_start()` quando possível, para melhorar o desempenho. - -### void timer_stop(uint32_t timer_id) - -Interrompe o cronômetro fornecido. Se o timer ainda não disparou, ele não disparará até que você chame `timer_start()` novamente. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md deleted file mode 100644 index c4373ed..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/tutorial-7seg.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: 'Tutorial: 7-segment display' -sidebar_label: 'Tutorial: 7-segement display' ---- - -# Tutorial: 7-segment display - -## Introduction -The Custom Chips API allows you to create new simulation models and behaviors that extend the functionality of Wokwi. -You can create new sensors, displays, memories, testing instruments and even simulate your own hardware. - -Custom chips are usually written in C, and have an accompanying JSON file that describes the pinout, as well as any -input values for the chip (e.g. the current temperature for a temperature sensor chip). Other languages are also -available - more on that later. - -In this tutorial we'll learn how to get started with the Chips API by implementing a simple 7-segment controller chip. -The chip will get a character (0-9 or A-F) via UART interface, and will display it on a -[7-segment display](https://docs.wokwi.com/parts/wokwi-7segment#using-the-7-segment-display). - -Let's get started! - -## The pinout -Before we dive into the code, let's define the pinout for the chip: - -| Name | Type | Function | -| :- | :- | :- | -| VCC | Power | Supply voltage | -| GND | Power | Ground | -| RX | Input | UART | -| SEG_A | Output | 7-segment | -| SEG_B | Output | 7-segment | -| SEG_C | Output | 7-segment | -| SEG_D | Output | 7-segment | -| SEG_E | Output | 7-segment | -| SEG_F | Output | 7-segment | -| SEG_G | Output | 7-segment | - -Our chip will have a total of 10 pins: two power supply pins, one UART input pin (RX), and 7 output pins to drive the -7-segment display. For simplicity, we'll assume that the 7-segment display is a common anode display, which is the -default on Wokwi. - -## The chip JSON file -Now we're ready to start writing code! We'll start from an empty ESP32-C3 project: -[wokwi.com/projects/new/esp32-c3](https://wokwi.com/projects/new/esp32-c3). - -The first thing we need to do is to create a custom chip. The easiest way to go about this is to press the blue "+" -button and serach for "Custom Chip". After selecting this option, type "sevseg-controller" for the chip name. Select -the "C" language option. - -Wokwi will add a green breakout board for your custom chip, and create two new files in your project: -- `sevseg-controller.chip.json` - defines the pinout -- `sevseg-controller.chip.c` - defines the logic for the chip - -We'll start by editing the `sevseg-controller.chip.json` as follows: -1. Change the `name` of the chip to "7 Segment Controller" -2. Change the `author` of the chip to your name -3. Change the `pins` array of the chip to include all the pin names: - ```json - ["VCC", "GND", "RX", "SEG_A", "SEG_B", "SEG_C", "SEG_D", "SEG_E", "SEG_F", "SEG_G"] - ``` - -You'll see the green breakout board updating as you make changes to the JSON file. - -## Implementing the chip's logic -Next, go to `sevseg-controller.chip.c`. This file implements the chip logic. The two important parts are: -1. The `chip_state_t` struct - use it to store all the state information of your chip, together with all the objects - that you create for your chips: IO pins, timers, etc. -2. The `chip_init` function - Wokwi will call this function for every instance (copy) of your chip. The function should - allocate memory for a new `chip_state_t` struct, initialize all the IO pins, the chip's state, and create any - relevant objects (we'll see an example in a minute). - -The default implementation does not include any state or initialization - it only prints a message saying "Hello from -custom chip!". You will see this message when you start the simulation - it'll appear in a new "Chips Console" tab -below the diagram. - -We'll modify `chip_init` to perform the following actions: -1. Initialize all the `SEG_x` pins as outputs -2. Listen for UART data on the `RX` pin, and call a function that will update the `SEG_x` according to the character we - received. - -### Initializing the 7-segment outputs -Start by adding a `segment_pins` array to the `chip_state_t` struct. This array will store a reference to the `SEG_x` -output pins, so we'll need to allocate 7 items: -```C -typedef struct { - pin_t segment_pins[7]; -} chip_state_t; -``` - -Next, add the following code to `chip_init` (after the line that defines `chip`): -```C -chip->segment_pins[0] = pin_init("SEG_A", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_B", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_C", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_D", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_E", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_F", OUTPUT_HIGH); -chip->segment_pins[0] = pin_init("SEG_G", OUTPUT_HIGH); -``` - -The code initializes each of the segment pins as an output, and sets the initial value to digital high. The 7-segment -display has a common annode, so setting a segment pin high will turn that segment off. You can learn more about the -`pin_init` function in the [GPIO API reference](../chips-api/gpio.md). - -### Listening to UART data -Add the following code to `chip_init`, right after the code that initializes the segment pins: -```C -const uart_config_t uart_config = { - .tx = NO_PIN, - .rx = pin_init("RX", INPUT), - .buad_rate = 115200, - .rx_data = on_uart_rx_data, - .user_data = chip, -}; -uart_init(&uart_config); -``` - -The code configures the `RX` pin as an input (in the third line), and sets up a `uart_config_t` structure. This -structure configures the baud rate, as well as a function that will get called whenever there is new data, -`on_uart_rx_data`. - -Also note how we set `.user_data` to `chip` - this is important, as this value will be passed as a parameter to the -`on_uart_rx_data` function, providing it access to our chip's state. - -In our case, we are only interested in receiving data, so we set `.tx` to the special `NO_PIN` value. - -:::tip - -To learn more about using UART in Wokwi, check out the [UART API reference](../chips-api/uart.md). - -::: - -### From UART to 7-segment -For the final part of the show, we'll implement the `on_uart_rx_data` callback. Paste the following code above the -definition of `chip_init`: -```C -const uint8_t font[] = { - ['0'] = 0b11000000, - ['1'] = 0b11111001, - ['2'] = 0b10100100, - ['3'] = 0b10110000, - ['4'] = 0b10011001, - ['5'] = 0b10010010, - ['6'] = 0b10000010, - ['7'] = 0b11111000, - ['8'] = 0b10000000, - ['9'] = 0b10010000, - ['A'] = 0b10001000, - ['B'] = 0b10000011, - ['C'] = 0b11000110, - ['D'] = 0b10100001, - ['E'] = 0b10000110, - ['F'] = 0b10001110, -}; - -static void on_uart_rx_data(void *user_data, uint8_t byte) { - chip_state_t *chip = user_data; - uint8_t font_char = font[byte]; - if (font_char) { - for (int bit = 0; bit < 7; bit++) { - uint8_t bit_value = font_char & (1 << bit); - pin_write(chip->segment_pins[bit], bit_value ? HIGH : LOW); - } - } -} -``` - -This part simply defines the "font" - it maps between a character that we receive from UART and the corresponding -segments that need to be turned on. Our 7-segment display has a common anode, so 0 will ligh a segment, and 1 will turn -it off. - -The `on_uart_rx_data` is where the actual magic happens. We use the `font` array to lookup the `byte` we received over -UART. If we find a match (when `font_char` is not 0), we iterate over the bits of the `font_char`, and update each -segment to its corresponding bit in `font_char`. - -That's it - we created a simple 7-segment controller chip for Wokwi! - -## Testing the chip -You can test the chip by adding a 7-segment display to the diagram, and writing it to the chip. Don't forget to write -the common pin of the 7-segment display to the 3.3V or 5V pin of the ESP32-C3 board! - -Next, wire the `RX` pin of the chip to the `TX` pin of the ESP32-C3 board. You can also wire the GND/VCC pins of the -chip for good measures, even though the chip will be functional even without these pins. - -Finally, pase the following code into `sketch.ino`: -```C -void setup() { - Serial.begin(115200); -} - -int i = 0; -void loop() { - Serial.println(i, HEX); - i++; - if (i > 0xf) { - i = 0; - } - delay(500); -} -``` - -It's a simple program that outputs all the hexadecimal values between 0 and F to the ESP32-C3's serial port - all the -characters that are included in our custom chip's font. If you prefer plain C code, you can change the first line in -`loop` to use `printf()` instead. -```C -printf("%X\n", i); -``` - -When you start the simulation, you should see the 7-segment display counting from 0 to F repeatedly. Hooray! - -Doesn't work? No worries, here's the link to the final result, so you can compare it with yours: -[wokwi.com/projects/371252876830114817](https://wokwi.com/projects/371252876830114817). - -## Under the hood -How do custom chips work? What happens with the C code you write? Behind the scenes, Wokwi takes this code and compiles -it into a Web Assembly module using LLVM (if you are curious, here's the -[Docker container](https://github.com/wokwi/wokwi-builders/blob/main/clang-wasm/Dockerfile) that does all the magic). - -When you run the simulation, Wokwi creates an instance of the Web Assembly module, and calls `chip_init` once for -every instance of the chip in your diagram. - -Using Web Assembly means you can write your code in a variety of languages. Currently, only C is officially supported, -there are some examples of how to write custom chips with Rust, AssemblyScript and even Zig. - -There's even a hack where we use Custom Chips to simulate Verilog: we use Yosys CXXRTL to convert your Verilog code -into C++, and then -[use emscripten to compile](https://github.com/wokwi/wokwi-builders/blob/main/verilog-cxxrtl/project/compile.sh) -the result along with [some glue code](https://github.com/wokwi/wokwi-builders/blob/main/verilog-cxxrtl/project/main.cpp) -into Web Assembly. Scary cool? - -## Next steps -If you want to dive deeper into the Custom Chips API, here are some ideas how to build on the chip we created in this -tutorial: - -- **Fix the bug!**
- Unfortunately, our code has a bug - some values will cause it to display garbage on the 7-segment display (try sending - it a 'b'). Some bound checking can help! - -- **Add support for common cathode 7-segment displays**
- You can use an additional input pin to select between common anode/cathode, or use the [Attributes API](../chips-api/attributes.md) - to allow the user to define the type of display by editing the chip attributes in `diagram.json`. - -- **Add another communication protocol**
- You can turn our 7-segment display into an [I2C](../chips-api/i2c.md) or an [SPI](../chips-api/spi.md) device. - -- **Support multiple digits**
- Control a two or four digital 7-segment display! Use the [Time API](../chips-api/time.md) to create a timer that will quickly - alternate between the digits. - -- **Add analog input**
- Use the [Analog API](../chips-api/analog.md) to read and display an analog input value. This makes the 7-segment controller chips - useful even without a microcontroller - you can connect it directly to a potentiometer or an analog sensor, and - display the reading directly. - -- **Share your chip on GitHub**
- By sharing your chip's code on GitHub, you can make it easy for other users to include it in their project. You can - use the [inverter-chip repo](https://github.com/wokwi/inverter-chip) as a starting point - it has a - [GitHub action](https://github.com/wokwi/inverter-chip/blob/main/.github/workflows/build.yaml) that automatically - compiles the chips and creates a release whenever you push a tag. - - Here's an [example for a Wokwi project](https://wokwi.com/projects/350946636543820370) that uses this chip. Note the - "dependencies" section in `diagram.json` - it tells Wokwi where to look for the chip implementation on GitHub. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/uart.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/uart.md deleted file mode 100644 index 3934461..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/chips-api/uart.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: API da UART -sidebar_label: API UART ---- - -# API da UART - -Para criar um dispositivo UART, primeiro chame `uart_init`, passando uma estrutura `uart_config_t`. Essa estrutura define os pinos RX/TX, a taxa de transmissão e os retornos de chamada `rx`/`write_done`. - -### uart_dev_t uart_init (const uart_config_t \*config) - -Inicializa o dispositivo UART. O argumento `config` define os pinos, configuração e retornos de chamada para o dispositivo UART. Contém os seguintes campos: - -| Campo | Tipo | Descrição | -| ------------ | ---------- | ------------------------------------------------------------ | -| `rx` | `pin_t` | O pino RX (ou `NO_PIN` para desabilitar RX) | -| `tx` | `pin_t` | O pino TX (ou `NO_PIN` para desabilitar TX) | -| `baud_rate` | `uint32_t` | A taxa de transmissão (por exemplo, 115200) | -| `rx_data` | callback | Chamado para cada byte recebido no pino RX | -| `write_done` | callback | Chamado quando a transmissão de dados no pino TX finalizar | -| `user_data` | `void *` | Dados que serão passados no primeiro argumento dos callbacks | - -Ambos os retornos de chamada (`rx_data`, `write_done`) são opcionais. Todos eles usam o ponteiro `user_data` como seu primeiro argumento. - -Exemplo: - -```cpp -static void on_uart_rx_data(void *user_data, uint8_t byte) { - // `byte` é o byte recebido no pino TX -} - -static uint8_t on_uart_write_done(void *user_data) { - // Você pode gravar o bloco de dados a ser transmitido aqui (chamando o uart_write). -} - -// ... - -const uart_config_t uart1 { - .tx = pin_init("TX", INPUT_PULLUP), - .rx = pin_init("RX", INPUT), - .baud_rate = 115200, - .rx_data = on_uart_rx_data, - .write_done = on_uart_write_done, - .user_data = chip, -}; -``` - -### bool uart_write (uart_dev_t uart, uint8_t \*buffer, uint32_t count) - -Escreve o `count` bytes da memória apontada por `buffer` para o dispositivo `uart` fornecido. -Retorna `true` em caso de sucesso, ou `false` se o dispositivo UART já estiver ocupado transmitindo dados de uma chamada `uart_write` anterior (e os novos dados não serão transmitidos). - -Os dados começam a ser transmitidos após o retorno de `uart_write`. Assim que o Wokwi termina de transmitir os dados, o callback `write_done` é chamado (da estrutura `uart_config_t` que você passou para `uart_init`). - -## Exemplos no simulator - -- [Exemplo de chip UART ROT13](https://wokwi.com/projects/333638144389808723) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format-connections.gif b/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format-connections.gif deleted file mode 100644 index 89abd07..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format-connections.gif and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format.md deleted file mode 100644 index e0f3e59..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/diagram-format.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Formato do diagram.json -sidebar_label: diagram.json ---- - -Cada projeto de simulação contém um arquivo diagram.json. Este arquivo define os componentes -que serão usados para a simulação, suas propriedades e as conexões entre os componentes. - -## Estrutura do arquivo - -O arquivo de diagrama é um arquivo JSON com várias seções. A estrutura básica do arquivo é a seguinte: - -```json -{ - "version": 1, - "author": "Uri Shaked", - "editor": "wokwi", - "parts": [], - "connections": [] -} -``` - -`"version"` é sempre 1, `"author"` é o nome da pessoa que criou o -arquivo, e `"editor"` é o nome do aplicativo que foi usado para editar o -arquivo ("wokwi"). - -Além disso, você pode adicionar uma seção `"serialMonitor"` para [Configurando o Monitor Serial](guides/serial-monitor#configuring-the-serial-monitor). - -## Componentes - -As seção `"parts"` define a lista de componentes da simulação. -É um array de objetos com as seguintes propriedades: - -| Nome | Tipo | Descrição | -| ------ | ------- | ----------------------------------------------- | -| id | string | o identificador único da peça (e.g. "led1") | -| type | string | o tipo do componente (e.g. "wokwi-led") | -| left | number | coordenada x da tela (em pixels) | -| top | number | coordenada y da tela (em pixels) | -| attrs | object | atributos do componente (ex: "color") | -| rotate | number | rotação em decréscimo (ex: 90) | -| hide | boolean | se for true, o componente não será visível | - -`id` e `type` são obrigatórios, os outros campos são opcionais. - -Por exemplo, aqui está como você define um LED vermelho chamado `"led1"` na posição (x=100, y=50): - -```json -{ - "id": "led1", - "type": "wokwi-led", - "left": 100, - "top": 50, - "attrs": { - "color": "red" - } -} -``` - -:::warning AVISO -Cada componente deve ter uma única propriedade "id". Se dois componentes têm o mesmo "id", -a simulação pode não funcionar corretamente. -::: - -Uma lista parcial dos tipos de componentes (por exemplo, [wokwi-led](parts/wokwi-led)) pode ser encontrada na seção "Referência do diagrama" deste guia. No momento, estamos trabalhando para expandir esta lista. Enquanto isso, algumas das partes também estão documentadas em [Wokwi Elements](https://elements.wokwi.com). - -Cada diagrama deve incluir um componente do microcontrolador. Os seguintes microcontroladores são atualmente suportados: - -- [`wokwi-attiny85`](parts/wokwi-attiny85) - ATtiny85 -- [`wokwi-arduino-nano`](parts/wokwi-arduino-nano) - Arduino Nano -- [`wokwi-arduino-mega`](parts/wokwi-arduino-mega) - Arduino Mega 2560 -- [`wokwi-arduino-uno`](parts/wokwi-arduino-uno) - Arduino Uno R3 -- [`wokwi-pi-pico`](parts/wokwi-pi-pico) - Raspberry Pi Pico -- `wokwi-esp32-devkit-v1` - ESP32 -- `board-esp32-s2-devkitm-1` - ESP32-S2 -- [`board-franzininho-wifi`](parts/board-franzininho-wifi) - ESP32-S2 -- `board-esp32-c3-devkitm-1` - ESP32-C3 -- `board-esp32-c3-rust-1` - ESP32-C3 - -:::tip DICA -Em vez de especificar manualmente as coordenadas esquerda/superior para cada item, você -pode arrastá-los com o mouse para a posição desejada. -::: - -## Conexões - -A seção `"connections"` define como os componentes são conectados. Cada conexão é uma matriz com quatro -elementos: - -- O ID do componente de origem e o nome do pino, separados por dois pontos. ex: `partId:pinName` -- A identificação do componente de destino e o nome do pino -- A cor do fio (ou uma string vazia para esconder o fio) -- Uma lista de instruções sobre como colocar o fio, como uma matriz de strings (opcional) - -Por exemplo, a seguinte definição conectará o pino A (ânodo) do `led1` -ao pino 13 do Arduino `uno`: - -```json - ["led1:A", "uno:13", "green", []], -``` - -Você pode encontrar o nome de um pino do componente movendo o mouse sobre ele. - -### Mini linguagem de colocação de fios - -Cada elemento na seção `"connections"` pode especificar uma lista de instruções -como desenhar as linhas para o fio. Os fios sempre vão em linha reta, também -horizontalmente ou verticalmente, e nunca diagonalmente. - -Existem três instruções: - -- "v" seguido por um número de pixels: move verticalmente (acima/abaixo) -- "h" seguido por um número de pixels: move horizontalmente (esquerda/direita) -- "\*" pode aparecer apenas uma vez. Todas as instruções que aparecem antes do "\*" - se aplicam ao pino de origem, e as instruções que aparecem após se aplicam - aos pinos de destino. - -Por exemplo: - -```json -["v10", "h5", "*", "v-15", "h10"] -``` - -O "v10" será movido 10 pixels para baixo do pino de origem, então "h5" se moverá -cinco pixels para a direita. - -As instruções que aparecem após o "\*" são aplicados na ordem inversa: "h10" Irá -mover 10 pixels para a direita do pino de destino, então "v-15" moverá 15 pixels para cima. - -Finalmente, o simulador conectará as duas extremidades do fio com uma combinação -de um fio horizontal e um vertical que cobrem a distância restante, conforme necessário. - -### Animação de colocação de fios - -Se você é um aprendiz visual, pode achar útil a seguinte animação GIF. -A animação foi criada por Steve Sigma. - -![diagram.json mini linguagem de colocação de fios](diagram-format-connections.gif) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md deleted file mode 100644 index 7b0ef84..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -slug: /faq -title: Perguntas Frequentes ---- - -## O que significa Wokwi? - -Ao escolher o nome para Wokwi, procurávamos uma palavra curta que fosse fácil de pronunciar e que ainda não tivesse nenhum significado. Fizemos uma lista de nomes possíveis e escolhemos o que mais gostamos, Wokwi. Aqui estão alguns dos nomes que não vieram: Duvav, Hajuu, Chipine, Zeprr. - -## Como encontro um projeto que salvei anteriormente? - -Se você não tiver feito login no Wokwi, use o mesmo dispositivo e navegador que salvou o projeto e visite [https://wokwi.com/dashboard/projects](https://wokwi.com/dashboard/projects). Se você entrar no Wokwi antes de salvar projetos, esse mesmo URL mostrará todos os projetos que você salvou em qualquer dispositivo/navegador. Você também pode navegar para seus projetos salvos clicando na sua foto de perfil e selecionando "My projects" no menu. - -## Como funciona o Wokwi? - -O Wokwi compila seu código em um firmware binário e, em seguida, executa o firmware binário uma instrução por vez, como faria um microcontrolador real. Se você quiser aprender sobre os componentes internos, confira os seguintes recursos: - -- [Mergulho profundo no Raspberry Pi Pico e RP2040](https://www.youtube.com/watch?v=Duel_Oaases&list=PL_tws4AXg7auiZHZsL-qfrXoMiUONBB0U&index=2) - Este curso de 5 horas lhe dará uma boa compreensão da arquitetura RP2040 e como ela funciona. -- [Live coding do simulador Raspberry Pi Pico do zero](https://www.youtube.com/watch?v=POCUbWhBXVA&list=PLLomdjsHtJTxT-vdJHwa3z62dFXZnzYBm&index=1&t=0s) - Série de codificação ao vivo com 70 horas de duração, onde você verá como construímos o simulador Pi Pico, juntamente com explicações sobre as decisões de arquitetura e design. -- [AVR8js: Simulando o Arduino em JavaScript](https://blog.wokwi.com/avr8js-simulate-arduino-in-javascript/) - Postagem no blog que cobre os fundamentos do mecanismo de simulação do Arduino. -- [Vamos codificar o Arduino Simulator do zero](https://www.youtube.com/watch?v=fArqj-USmjA) - Crie um aplicativo simples de simulador do Arduino usando o [AVR8js] do Wokwi (https://github.com/wokwi/ avr8js) mecanismo de simulação AVR de código aberto (16 minutos). -- [Engenharia reversa do WiFi ESP32](https://www.youtube.com/watch?v=XmaT8bMssyQ) - Saiba como preparamos o terreno para a simulação do WiFi do ESP32 fazendo engenharia reversa do hardware WiFi (32 minutos). \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/gdb-debugging.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/gdb-debugging.md deleted file mode 100644 index 3dc9b29..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/gdb-debugging.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Depurador GDB -sidebar_label: Depurador ---- - -GDB é um depurador de código-fonte poderoso. Você pode usá-lo para depurar seu código Arduino no Wokwi. - -## Usando o GDB no Wokwi - -Para iniciar uma sessão do GDB, vá para o editor de código e pressione **F1**. No prompt que foi aberto, digite "GDB", -e selecione **"Start Web GDB Session (debug build)"**. - -Isso abrirá uma nova guia do navegador com o prompt do GDB. Se esta é a primeira vez que você está usando este -recurso, pode levar até 30 segundos para o GDB carregar totalmente. - -## Exemplo de Sessão do Depurador - -Quando o GDB estiver pronto, você receberá o seguinte prompt de comando: - -``` -0x00000000 in __vectors () -(gdb) -``` - -Neste ponto, você pode digitar comandos GDB. Por exemplo, suponha que você deseja executar seu programa -linha por linha, a partir do `setup()`. Primeiro, digite `tbreak setup` e `c` para iniciar o programa -e executá-lo até o início do `setup()`: - -``` -(gdb) tbreak setup -Temporary breakpoint 1 at 0x2ca: file sketch.ino, line 28. -(gdb) c -Continuing. - -Temporary breakpoint 1, setup () at sketch.ino:28 -28 pinMode(LED_BUILTIN, OUTPUT); -(gdb) -``` - -Neste ponto, digite `layout src` para mostrar o código-fonte do seu programa e digite -`next` para executar a próxima linha do código-fonte. Você pode então digitar `next` repetidamente -para repassar o código linha por linha. - -Se você quiser imprimir o valor de alguma variável, use o comando `print`. Por exemplo, -se você tem uma variável chamada `ledIndex`, digite `print ledIndex` para imprimir o valor -dessa variável. - -## Guia de Referência Rápida - -Lista de comandos GDB mais comuns para depuração de código AVR. - -### Execução do programa - -| Comando | Forma curta | Descrição | -| ------------- | ----------- | ------------------------------------------------------| -| continue | c | Roda o programa | -| advance setup | adv setup | Roda o programa e para no início da função `setup()`* | -| next | n | Executa a próxima linha de código (passando por cima) | -| step | s | Avança para a próxima linha de código | -| finish | fin | Roda o programa até que a função atual retorne (sair) | -| nexti | n | Executa a próxima instrução (passando por cima) | -| stepi | si | Avança para a próxima instrução | -| until | u | Igual ao comando `next`, mas não fica em loop | -| Ctrl+C | | Quebra o programa na instrução atual | - -* O comando de avanço também irá parar se retornar na função atual - -### Pontos de interrupção - -| Comando | Forma curta | Descrição | -| ---------------- | ----------- | ------------------------------------------------------------- | -| info breakpoints | i b | Mostra uma lista de todos os pontos de interrupção | -| break loop | b loop | Define um ponto de interrupção no início do loop() | -| break 42 | b 42 | Define um ponto de interrupção na linha 42 | -| break *0x156 | `b *0x156` | Define um ponto de interrupção no endereço do programa 0x156 | -| tbreak loop | tb loop | Define um ponto de interrupção único (temporário) em `loop()` | -| clear loop | cl loop | Remove quaisquer pontos de interrupção que esteja em `loop()` | -| clear 42 | cl 42 | Remove ponto de interrupção que esteja na linha 42 | -| delete 1 | d 1 | Remove ponto de interrupção número 1 | -| disable | dis | Desativa todos os pontos de interrupção | -| disable 1 | dis 1 | Desativa ponto de interrupção número 1 | -| enable | en | Habilita todos os pontos de interrupção | -| enable 1 | en 1 | Habilita ponto de interrupção número 1 | -| enable once 1 | en once 1 | Habilita ponto de interrupção número 1 uma única vez | - -### Pilha de chamadas - -| Comando | Forma curta | Descrição | -| ---------------- | ----------- | --------------------------------------------------------------- | -| backtrace | bt | Mostra um backtrace da pilha de chamadas atual | -| backtrace -full | bt -fu | Exibe backtrace incluindo variáveis ​​locais | -| info args | i ar | Dump (despejo) dos argumentos da função atual | -| info locals | i lo | Dump das variáveis ​​locais e seus valores | -| info registers | i r | Dump dos registradores da MCU | -| faas info args | fa i ar | Dump dos argumentos de todas as funções na pilha de chamadas | -| frame 2 | f 2 | Seleciona o frame número 2 | -| up | | Vá um frame da pilha para cima (por exemplo, chamada de função) | -| down | do | Vá um frame da pilha para baixo | - -### Código de inspeção - -| Comando | Forma curta | Descrição | -| ---------------- | ----------- | ------------------------------------------------------ | -| list loop | l loop | Exibe o código fonte da função `loop()` | -| disassemble | disas | Disassemble (desmonte) a localização atual do programa | -| disassemble/s | disas/s | Disassemble incluindo o código-fonte | -| disassemble/r | disas/r | Disassemble incluindo opcodes (em hexadecimal) | -| disassemble loop | disas loop | Disassemble a função `loop()` | - -### Inspecionando dados - -| Comando | Forma curta | Descrição | -| -------------------- | ------------ | ------------------------------------------------------------------- | -| print $pc | p $pc | Imprime o valor do registrador PC (contador do programa) | -| print $r0 | p $r0 | Imprime o valor do registrador R0 | -| print i | p i | Imprime o valor da variável i | -| print PORTB | p PORTB | Imprime o valor de I/O do registrador PORTB | -| dprint loop,"Loop\n" | dp … | Imprime "Loop" sempre que o `loop()` começa | -| dprint loop,"%d\n",i | dp … | Imprime o valor de `i` toda vez que o `loop()` começa | -| x/16b $sp | | Despejo de 16 bytes da memória começando em $sp (ponteiro da pilha) | -| x/10w 0x800200 | | Despejo de 10 dwords começando no endereço do espaço de dados 0x200 | -| x/s 0x800151 | | Despejo de uma string no endereço do espaço de dados 0x151 | -| display someVar | disp someVar | Exibe o valor de `someVar` sempre que o programa parar | -| info display | i di | Lista as expressões ativas de exibição automática (watch) | -| delete display 1 | d d 1 | Excluí a expressão de exibição automática número 1 | - -### Modificando dados - -| Comando | Forma curta | Descrição | -| ----------------------- | ------------ | --------------------------------------------------------------------- | -| set i = 0 | s i=0 | Altera o valor da variável `i` para 0 | -| set $pc = 0 | s $pc=0 | Salta para o início do programa | -| set $r12 = 0x55 | s $r12=0x55 | Define r12 como 0x55 | -| set PORTB = 0xff | s PORTB=0xff | Define o (registro de I/O) do PORTB para 0xff | -| set \{int}0x800200 = 50 | s … | Define um número inteiro no endereço do espaço de dados 0x200 para 50 | - -### Interface de usuário de texto (TUI) - -| Comando | Forma curta | Descrição | -| ---------------- | ----------- | ----------------------------------------------- | -| tui enable | tu e | Ativa o modo TUI (também Ctrl X + A) | -| tui disable | tu d | Desativa o modo TUI (também Ctrl X + A) | -| tui reg all | tu r a | Exibe a janela de registradores | -| layout asm | la a | Muda para a visualização em Assembly | -| layout src | la sr | Muda para a visualização do Código-fonte | -| layout split | la sp | Divide a visualização (Assembly + Código-fonte) | -| update | upd | Mostra a linha atual na janela do Código Fonte | -| Ctrl+L | | Redesenha a tela | - -### Outros comandos - -| Comando | Forma curta | Descrição | -| ---------------- | ------------- | --------------------------------------------------------------- | -| (empty line) | | Repete o comando anterior | -| help continue | h c | Exibe a ajuda do comando "continue" | -| help break | h b | Exibe a ajuda do comando "break" | -| help breakpoints | h breakpoints | Exibe uma lista de todos os comandos relacionados ao breakpoint | -| quit | q | Saí do GDB (no Wokwi Web GDB, o GDB será reiniciado) | - -## Aprenda mais - -Se você quiser saber como fizemos o GDB funcionar no navegador, dê uma olhada em [Executando GDB no navegador](https://blog.wokwi.com/running-gdb-in-the-browser/). -Você não precisa saber disso para usar o GDB - são apenas os detalhes sangrentos que permitem que você dê uma olhada nos bastidores. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/circuitpython.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/circuitpython.md deleted file mode 100644 index 04494ee..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/circuitpython.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: CircuitPython no Wokwi -sidebar_label: CircuitPython ---- - -Você pode simular o CircuitPython no Wokwi usando a placa [Raspberry Pi Pico](../parts/wokwi-pi-pico). Para iniciar um novo projeto de simulação, abra o [modelo de projeto Raspberry Pi Pico com CircuitPython](https://wokwi.com/projects/new/circuitpython-pi-pico). - -## Estrutura do projeto - -Os projetos CircuitPython devem incluir um arquivo `code.py`. O código neste arquivo será executado quando você iniciar a simulação. - -Wokwi copia todos os arquivos do projeto para o sistema de arquivos flash do Pico. Isso significa que seu projeto pode incluir módulos Python adicionais e você pode importá-los do `code.py` ou do REPL interativo. Seu projeto também pode incluir dados personalizados dentro de arquivos de texto. - -Você pode obter uma lista de todos os arquivos no sistema de arquivos flash executando: - -```python -import os -print(os.listdir('/')) -``` - -## Usando bibliotecas - -Você pode usar qualquer biblioteca do [Adafruit CircuitPython Bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle). Crie um arquivo "requirements.txt" em seu projeto e escreva os nomes das bibliotecas que você usa, uma por linha. As linhas que começam com "#" são comentários. - -Por exemplo, se você deseja instalar ambos [adafruit_display_text](https://circuitpython.readthedocs.io/projects/display_text/en/latest/) and [adafruit_dht](https://circuitpython.readthedocs.io/projects/dht/en/latest/), crie um arquivo "requirements.txt" com o seguinte conteúdo: - -``` -# requirements.txt exemplo -adafruit_display_text -adafruit_dht -``` - -Ao iniciar a simulação, o Wokwi baixa todas as bibliotecas e suas dependências. Ele os copia para a pasta "lib" no sistema de arquivos flash. Você pode chamar `os.listdir ('/ lib')` para obter uma lista de todas as bibliotecas instaladas. Para um exemplo de código completo, consulte a [Lista da Biblioteca CircuitPython](https://wokwi.com/projects/309475039016649280). - -# CircuitPython REPL - -Quando o código em `code.py` termina (ou você o interrompe com Ctrl+C), você entrará no REPL do CircuitPython. O REPL é um prompt interativo onde você pode digitar comandos python e ver os resultados imediatamente. Para colar o código no REPL, digite Ctrl+E e entre no modo de colagem. - -## Exemplos no simulador - -- [Blink com CircuitPython](https://wokwi.com/projects/309474946192507458) -- [CircuitPython SSD1306 Exemplo](https://wokwi.com/projects/309427357921313345) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/diagram-editor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/diagram-editor.md deleted file mode 100644 index 4b09b1e..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/diagram-editor.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Editor de Diagrama Interativo -sidebar_label: Editor de Diagrama ---- - -O editor de diagramas fornece uma maneira interativa de editar seu diagrama: adicionar componentes à simulação e definir as conexões entre eles. É uma alternativa conveniente para editar o arquivo [diagram.json](../diagram-format) diretamente. - -## Editando peças - -### Adicionando uma peça - -Para adicionar uma nova peça, clique no botão roxo "+" na parte superior do editor de diagramas. - -Você verá um menu com uma lista de peças que você pode adicionar. Escolha uma peça para adicioná-la. A peça será adicionada na posição (0, 0), e então você pode arrastá-la para a posição desejada. - -Nem todas as peças estão disponíveis no menu. Por exemplo, placas MCU e microcontroladores como o [Arduino Nano](../parts/wokwi-arduino-nano) ou o [ATtiny85](../parts/wokwi-attiny85) estão faltando. Você ainda pode adicionar essas partes [editando o diagram.json](../diagram-format#parts) diretamente. - -### Movendo uma peça - -Mova uma parte clicando nela e arrastando-a com o mouse. - -### Rotacionando uma peça - -Gire uma peça clicando nela (para selecioná-la) e pressionando "R". A peça girará 90 graus no sentido horário. Se você precisar girar uma peça -com um valor diferente (por exemplo, 45 graus), você pode conseguir isso [editando o diagram.json](../diagram-format#parts). - -### Duplicando uma peça - -Crie uma nova cópia de uma peça clicando nela (para selecioná-la) e pressionando "D". Você pode pressionar "D" várias vezes para criar várias cópias da peça. - -### Removendo uma peça - -Exclua uma peça clicando nela (para selecioná-la) e em seguida pressionando a tecla Delete. - -### Selecionando várias peças - -Selecione várias peças clicando nas peças com a tecla Shift pressionada. Você pode então mover todas as partes juntas, duplicá-las (usando a tecla "D") ou excluí-las usando a tecla Delete. - -### Copiando e colando peças - -Você pode copiar a(s) parte(s) selecionada(s) usando o atalho de teclado padrão Copiar (Ctrl+C ou ⌘+C). Se você selecionou várias peças, todos os fios que conectam as peças selecionadas também são copiados. As partes que você copiou são armazenadas na área de transferência do sistema em um formato JSON, semelhante ao [diagram.json](../diagram-format). - -Para colar as partes que você copiou, clique no diagrama e pressione o teclado padrão Colar (Ctrl+V ou ⌘+V). Em alguns casos, as peças serão coladas fora da área do diagrama atualmente visível, portanto, talvez seja necessário diminuir o zoom para encontrá-las. Isso será corrigido no futuro. - -Você pode usar o recurso copiar e colar entre diferentes projetos e copiar rapidamente várias partes (incluindo todas as conexões internas) de uma só vez. - -## Editando fios - -### Criação de uma ligação entre as duas peças - -Para criar um novo fio entre duas peças, clique em um dos pinos que deseja conectar. Em seguida, clique no segundo pino (alvo). Isso criará o fio. - -Se quiser que o fio vá de uma maneira específica, você pode guiá-lo clicando para onde deseja que ele vá após selecionar o primeiro pino. - -Para cancelar um novo fio (exclua-o sem selecionar um pino de destino), clique com o botão direito do mouse ou pressione Escape. - -### Mudando a cor de um fio - -A cor dos novos fios é determinada automaticamente pela função do pino: os fios que começam nos pinos de aterramento são pretos, pinos de 5V são vermelhos e os outros fios são verdes. - -Você pode alterar a cor de um fio clicando nele e selecionando uma nova cor para o fio. Você também pode usar os seguintes atalhos de teclado para definir as cores dos fios: - -| Atalho | Cor | -| ------ | ----------- | -| 0 | Preto | -| 1 | Marrom | -| 2 | Vermelho | -| 3 | Laranja | -| 4 | Ouro | -| 5 | Verde | -| 6 | Azul | -| 7 | Violeta | -| 8 | Cinza | -| 9 | Branco | -| C | Ciano | -| L | Verde limão | -| M | Magenta | -| P | Roxo | -| Y | Amarelo | - -Esses atalhos de teclado também funcionam ao desenhar um novo fio. Você também pode alterar as cores dos fios editando o [diagram.json](../diagram-format#connections) - -### Excluindo uma ligação - -Exclua um fio clicando nele. - -## Atalhos do teclado - -A tabela a seguir resume os atalhos do teclado: - -| Tecla | Função | -| ------ | -------------------------------------------- | -| - | Reduz o zoom | -| + | Aumenta o zoom | -| F | Ajusta o diagrama à janela (zoom automático) | -| D | Duplicar (copiar) a peça selecionada | -| R | Gira a peça selecionada | -| Delete | Remove a peça selecionada | -| ? | Abre a documentação da peça selecionada | -| Escape | Cancela o fio (no modo de fiação) | -| G | Alterna a grade | -| Shift | Alterna ajuste grosso da grade ao arrastar | -| Alt | Alterna ajuste fino da grade ao arrastar | -| Ctrl | Alterna ajuste fino da grade ao arrastar | -| Ctrl+Z | Desfazer \* | -| Ctrl+Y | Refazer \* | - -\* No Mac, use ⌘ em vez de Ctrl - -Usuários do Firefox: se os atalhos de teclado não funcionarem para você, certifique-se de que a configuração "Pesquisar texto ao começar a digitar" esteja desativada. - -## Grade de encaixe - -Ative a visualização da grade pressionando "G" ou clicando no ícone da grade no menu. Isso exibe uma grade com réguas. A grade grossa é de 2,54 mm ou 0,1 polegadas e a grade fina é de 1,27 mm ou 0,05 polegadas. Os rótulos das réguas mostram as medidas em milímetros (por padrão), mas você pode mudar para polegadas clicando nas unidades no canto superior direito. - -A tecla Shift alterna temporariamente o modo de ajuste da grade entre a grade grossa e o movimento livre. Se a grade estiver ativada, ele alterna para movimento livre; se a grade estiver desligada, ele alterna para o encaixe grosso da grade. - -A tecla Alt ou a tecla Ctrl alternam temporariamente para grade fina ajustando-se se a grade está visível ou não. - -Este comportamento de ajuste da grade é o mesmo para as peças e os fios, e as teclas modificadoras permitem que você execute o ajuste se a grade estiver ligada ou desligada. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png deleted file mode 100644 index 6d13909..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md deleted file mode 100644 index bb2d530..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Rede WiFi ESP32 -sidebar_label: WiFi ESP32 ---- - -Wokwi simula uma rede WiFi com acesso total à Internet. Você pode usar o [ESP32](./esp32) juntamente com o WiFi virtual para prototipar projetos de IoT. Os casos de uso comuns incluem: - -- Conecte-se a servidores MQTT para enviar dados do sensor -- Consultar serviços da web por HTTP, HTTPS e web sockets -- Execute um servidor HTTP dentro do ESP32 e conecte-se a ele a partir do seu navegador (requer o [Wokwi IoT Gateway](#o-gateway-privado)) - -## Conectando-se ao Wi-Fi - -O simulador fornece um ponto de acesso WiFi virtual chamado **Wokwi-GUEST**. É um ponto de acesso aberto - nenhuma senha é necessária. - -### Conectando do Arduino - -Para conectar a partir do dispositivo Arduino (em um ESP32), use o seguinte código: - -```cpp -#include - -void setup() { - Serial.begin(9600); - Serial.print("Conectando-se ao Wi-Fi"); - WiFi.begin("Wokwi-GUEST", "", 6); - while (WiFi.status() != WL_CONNECTED) { - delay(100); - Serial.print("."); - } - Serial.println(" Conectado!"); -} - -void loop() { - delay(100); // TODO: Construa algo incrível! -} -``` - -Nota: Especificamos o número (6) do canal WiFi ao chamar `WiFi.begin()`. Isto pula a fase de varredura do WiFi e economiza cerca de 4 segundos ao se conectar ao WiFi. - -### Conectando do MicroPython - -Para conectar de um [projeto MicroPython](https://wokwi.com/projects/new/micropython-esp32), use o seguinte código: - -```python -import network -import time - -print("Conectando-se ao Wi-Fi", end="") -sta_if = network.WLAN(network.STA_IF) -sta_if.active(True) -sta_if.connect('Wokwi-GUEST', '') -while not sta_if.isconnected(): - print(".", end="") - time.sleep(0.1) -print(" Conectado!") -``` - -Uma vez conectado, você pode usar a [urequests library](https://mpython.readthedocs.io/en/master/library/mPython/urequests.html) para enviar solicitações HTTP e HTTPS, e o [umqtt library](https://mpython.readthedocs.io/en/master/library/mPython/umqtt.simple.html) para estabelecer conexões MQTT. - -## Acesso à Internet - -Wokwi usa um gateway especial para conectar seu ESP32 simulado à internet. Este gateway é necessário, pois os navegadores da Web não permitem acesso direto à Internet. Há duas maneiras de usar o Wokwi IoT Gateway: o gateway público e o gateway privado. - -| | Gateway Publico | Gateway Privado | -| -------------------- | --------------------- | ----------------------------------------------------------- | -| Velocidade | Mais devagar | Mais rápido | -| Estabilidade | Média | Alta | -| Localização | Remoto, na nuvem | Funciona no seu computador | -| Privacidade | Conexões monitoradas | Sem monitoramento | -| Conexões de saída | ✅ | ✅ | -| Conexões de entrada | ❌ | ✅ | -| Disponibilidade | Todos os usuários | [Usuários pagantes](https://wokwi.com/pricing?ref=docs_esp32_wifi) | - -### O Gateway Publico - -O Gateway é o método de conexão com a Internet padrão. Funciona imediatamente e permite o acesso à Internet, mas não à sua rede local. Todo o tráfego é monitorado para fins de segurança, portanto, **não o use** para dados privados ou confidenciais. Ocasionalmente, inspecionamos o tráfego e podemos impor limites se notarmos uso excessivo do gateway. - -O Gateway Público é uma ótima opção para brincar e aprender sobre WiFi e rede no ESP32. - -### O Gateway Privado - -O Gateway Privado é um pequeno aplicativo que você baixa e executa em seu computador. Permite acesso à internet ESP32 mais rápido e robusto: os dados vão direto do simulador (rodando no seu navegador) para a rede do seu computador, sem precisar passar pela nuvem. Isso significa: - -- Não há monitoramento. Seu tráfego permanece privado. -- Seus projetos ESP32 podem acessar serviços executados em seu computador ou em sua rede local (por exemplo, um servidor MQTT ou HTTP local) -- Você pode executar um servidor web no ESP32 e conectar-se a ele a partir do seu navegador (explicado abaixo) - -O Gateway Privado está disponível apenas para [usuários pagantes](https://wokwi.com/pricing?ref=docs_esp32_wifi). - -#### Instalação - -Baixe a versão mais recente na [página de releases do Wokwi IoT Gateway](https://github.com/wokwi/wokwigw/releases/latest). Você verá as versões para Windows, macOS e Linux. Em seguida, extraia o arquivo ZIP e execute o arquivo executável dentro dele. Seu navegador / sistema operacional pode avisá-lo de que o arquivo pode não ser seguro, então você terá que dizer a eles para executá-lo de qualquer maneira. - -O gateway _não_ requer permissões de administrador/raiz. Felizmente, ele é executado como um processo padrão em seu computador. - -Quando você executa o gateway, ele deve imprimir um logotipo, sua versão e dizer: "Listening on TCP port 9011". Viva, você concluiu a configuração! - -Se você está preocupado em executar o executável do gateway em seu computador, você está convidado a dar uma olhada no [código-fonte](https://github.com/wokwi/wokwigw) e até mesmo construir o arquivo executável você mesmo (peça instruções sobre no [discord](https://wokwi.com/discord)). - -#### Uso Básico - -Após executar o gateway, abra qualquer projeto no Wokwi, vá até o editor de código, pressione "F1" e selecione "Enable Private Wokwi IoT Gateway". Você será perguntado se deseja habilitar o gateway. Responda "OK" para habilitar o Gateway Privado ou "Cancelar" para desativá-lo e voltar para o Gateway Público. - -Em seguida, execute qualquer projeto ESP32 que use o WiFi. Olhe para a saída do gateway, deve dizer "Client connected". Isso significa que você está usando o Gateway Privado. - -Se o seu projeto ESP32 for um servidor HTTP, você pode se conectar a ele pelo navegador em [http://localhost:9080/](http://localhost:9080). A conexão será encaminhada pelo gateway para a porta HTTP padrão (80) no ESP32 simulado. - -Você pode encaminhar uma porta diferente executando o gateway IoT com a opção `--forward`, por exemplo `--forward 1234:10.13.37.2:8080`. Isso encaminhará todas as conexões TCP da porta 1234 em seu computador para a porta 8080 no ESP32 simulado. - -:::warning Aviso -O gateway de IoT privado não tem suporte no momento ao Safari devido a [uma limitação técnica](https://bugs.webkit.org/show_bug.cgi?id=171934#c96). Use um navegador diferente (por exemplo, Chrome, Firefox, Edge). -::: - -## Uso Avançado - -### Endereços de rede - -O ESP32 obtém um endereço IP de um servidor DHCP executado dentro do Wokwi IoT gateway. O endereço IP depende do tipo de gateway que você usa: - -- Gateway Público: 10.10.0.2 -- Gateway Privado: 10.13.37.2 - -O endereço MAC do ESP32 simulado é 24:0a:c4:00:01:10. -O BSSID do ponto de acesso virtual ("Wokwi-GUEST") é 42:13:37:55:aa:01, e está ouvindo no canal 6 do WiFi. - -### Visualizando o tráfego WiFi com o Wireshark - -O Wokwi simula uma pilha de rede completa: começando na camada MAC 802.11 mais baixa, passando pelas camadas IP e TCP/UDP, até protocolos como DNS, HTTP, MQTT, CoAP, etc. Use um analisador de protocolo de rede, como [Wireshark](https://www.wireshark.org). - -Primeiro, execute um projeto ESP32 que use o WiFi no simulador. Em seguida, vá para o editor de código, pressione F1 e escolha **Download WiFi Packet Capture (PCAP) file**. Seu navegador baixará um arquivo chamado _wokwi.pcap_. Use o Wireshark para abrir este arquivo. - -A captura de tela a seguir mostra um exemplo de captura de pacote de solicitação HTTP: - -![Pacotes Wireshark ESP32 WiFi: DNS, HTTP, and 802.11 MAC](esp32-wifi-wireshark.png) - -Como você pode ver, o arquivo PCAP contém todos os tipos de pacotes: quadros de beacon 802.11, resposta de consulta DNS (a primeira entrada na lista) e pacotes de solicitação/resposta HTTP (nº 107 e 113). - -Na maioria dos casos, você desejará se concentrar apenas em um protocolo específico. Você pode conseguir isso pressionando Ctrl+/ no wireshark e digitando um nome de protocolo (http, tcp, ip, dns, dhcp, etc.). Isso irá filtrar a lista e exibir apenas os pacotes relevantes. - -:::warning::atenção -O campo Time na captura de pacotes usa o tempo do relógio de simulação. Pode avançar mais devagar que o relógio de parede se a simulação estiver rodando mais devagar que a velocidade máxima (100%). -::: - -### Limitações - -O Wokwi IoT Gateway suporta TCP e UDP. Ele não suporta o protocolo ICMP, portanto, a funcionalidade Ping não está disponível. - -## Exemplos no simulador - -- [Cliente NTP](https://wokwi.com/projects/321525495180034642) - Obtém a data e hora atuais de um servidor NTP e as exibe em uma tela LCD. -- [Logger Climático MicroPython MQTT](https://wokwi.com/projects/322577683855704658) - Lê a temperatura atual + umidade a cada segundo e relata as alterações para um servidor MQTT. -- [Servidor HTTP ESP32](https://wokwi.com/projects/320964045035274834) - Servidor de uma página web que controla 2 LEDs. Requer o [Wokwi IoT Gateway](#the-private-gateway). diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32.md deleted file mode 100644 index bdba2e3..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/esp32.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Simulador ESP32 -sidebar_label: Simulador ESP32 ---- - -O ESP32 é um microcontrolador popular habilitado para WiFi e Bluetooth, amplamente utilizado para projetos de IoT. Wokwi simula o ESP32, ESP32-C3, ESP32-S2 e ESP32-S3 (beta) e ESP32-C6 (alpha). - - - -## ESP32 boards - -| Nome | Chip | Descrição | -| -------------------------------------------------------------- | -------- | -------------------------------------------------------- | -| ESP32 DevKit v1 | ESP32 | Placa de desenvolvimento popular ESP32 | -| TinyPICO | ESP32 | Placa ESP32 compacta por UnexpectedMaker | -| [Franzininho WiFi](../parts/board-franzininho-wifi) | ESP32-S2 | Placa ESP32-S2 da Comunidade Franzininho | -| [Wemos S2 mini](https://wokwi.com/projects/355047217294313473) | ESP32-S2 | Pequena placa ESP32-S2 da Wemos | -| ESP32-S2-DevKitM-1 | ESP32-S2 | Placa de desenvolvimento ESP32-S2 de nível básico | -| ESP32-C3-DevKitM-1 | ESP32-C3 | Placa de desenvolvimento ESP32-C3 de nível básico | -| Rust Board ESP32-C3 | ESP32-C3 | Placa ESP32-C3 para desenvolvimento Rust | -| ESP32-S3-DevKitC-1 | ESP32-S3 | Placa de desenvolvimento ESP32-C3 de nível básico (beta) | -| ESP32-C6-DevKitC-1 | ESP32-S6 | Placa oficial de desenvolvimento ESP32-S6 (alpha) | - -Você pode contribuir com placas adicionais enviando um pull request para [wokwi-boards](https://github.com/wokwi/wokwi-boards). - -## Começando - -Você pode usar o simulador ESP32 para executar diferentes tipos de aplicativos: - -1. Projetos ESP32 Arduino Core (incluindo projetos ESP-IDF) -2. Projetos MicroPython e CircuitPython -3. Projetos Rust (consulte https://wokwi.com/rust) -4. Arquivos de firmware de aplicativos personalizados (por exemplo, aplicativos criados usando o ESP-IDF) - -### Arduino Core - -Comece a partir do [modelo de projeto Arduino-ESP32](https://wokwi.com/projects/new/esp32), ou do -[Exemplo de Blink ESP32](https://wokwi.com/projects/305452382231200320). - -Se você quiser usar bibliotecas Arduino de terceiros, adicione um [arquivo libraries.txt](./libraries) com a lista de bibliotecas que você usa. - -### MicroPython - -Comece com o [modelo de projeto MicroPython ESP32](https://wokwi.com/projects/new/micropython-esp32), ou com o -[Exemplo de Blink MicroPython ESP32](https://wokwi.com/projects/305452627045384768). - -Nota: Enquanto a simulação está em execução, pressione Ctrl+C dentro do Terminal Serial para entrar no _MicroPython REPL_. Alternativamente, você pode editar o código de Exemplo Blink e remover o loop while. Para obter mais informações, consulte o [Guia MicroPython](./micropython). - -### Firmware de aplicativo personalizado - -Abra o [modelo de projeto de aplicativo personalizado do ESP32](https://wokwi.com/projects/305457271083631168) e pressione "F1" no editor de código. Em seguida, escolha "Fazer upload do firmware e iniciar a simulação...". Escolha qualquer arquivo .bin, .elf ou .uf2 do seu computador e a simulação será iniciada. - -:::info Informação -Ao carregar um firmware personalizado, é recomendável criar um único arquivo .bin que contenha o gerenciador de inicialização, a tabela de partições e aplicativo. Você pode usar o [comando esptool merge_bin](https://docs.espressif.com/projects/esptool/en/latest/esp32/esptool/basic-commands.html#merge-binaries-for-flashing-merge-bin) para criar o arquivo. - -Para projetos ESP-IDF, você também pode criar um único arquivo UF2 usando o comando: `idf.py uf2`. O arquivo estará localizado em `build/uf2.bin`, que pode ser carregado no simulador. -::: - -## Exemplos no simulador - -### Exemplos Arduino - -- [Blink](https://wokwi.com/projects/305566932847821378) -- [Contador de Sete Segmentos](https://wokwi.com/projects/305567166302782017) -- [Blink com FastLED NeoPixel](https://wokwi.com/projects/312460386125218368) -- [WiFi Scanning](https://wokwi.com/projects/305569599398609473) - -### Exemplos MicroPython - -- [Exemplo SSD1306](https://wokwi.com/projects/305568836183130690) -- [NeoPixels](https://wokwi.com/projects/305569065545499202) -- [AES256 Encryption](https://wokwi.com/projects/321484545174012499) -- [WiFi Scanning](https://wokwi.com/projects/305570169692881473) - -### Exemplos ESP-IDF - -Os exemplos a seguir usam as funções ESP-IDF. Eles são compilados usando o Arduino ESP32 Core: - -- [Blink usando a API FreeRTOS](https://wokwi.com/projects/304209256260829762) -- [Contador de LED binário usando tarefas FreeRTOS](https://wokwi.com/projects/322609470223942226) -- [Entrada do botão GPIO + Interrupções](https://wokwi.com/projects/342634722692694610) -- [WiFi Exemplo](https://wokwi.com/projects/343629632022512211) - -## Recursos do simulador - -| Periférico | ESP32 | S2 | S3 | C3 | Notas | -| -------------------- | ----- | --- | --- | -- | ----------------------------------------------------------------------------- | -| Processador core(s) | ✔️ | ✔️ | ✔️ | ✔️ | | -| GPIO | ✔️ | ✔️ | 🟡 | ✔️ | Interrupções suportadas | -| IOMUX | 🟡 | 🟡 | 🟡 | 🟡 | | -| PSRAM | ✔️ | ✔️ | ✔️ | — | 4MB de SRAM externa \* | -| UART | ✔️ | ✔️ | ✔️ | ✔️ | | -| USB | — | ✔️ | ✔️ | ❌ | Suporte para UART sobre USB (CDC) | -| I2C | ✔️ | ✔️ | ✔️ | ✔️ | Mestre apenas. Endereçamento de 10 bits não suportado. | -| I2S | ❌ | ❌ | ❌ | ❌ | [Aberto para votação](https://wokwi.com/features#feature-1031718532) | -| SPI | ✔️ | ✔️ | ✔️ | ✔️ | | -| TWAI | ❌ | ❌ | ❌ | ❌ | | -| RMT | 🟡 | 🟡 | ❌ | 🟡 | Somente transmissão, use para controlar NeoPixels | -| LEDC PWM | ✔️ | ✔️ | ❌ | ✔️ | Used by analogWrite(), Servo, Buzzer, etc. | -| MCPWM | ❌ | — | ❌ | — | | -| DMA | 🟡 | 🟡 | ❌ | ❌ | | -| WiFi | ✔️ | ✔️ | ✔️ | ✔️ | Veja o [Guia WiFi do ESP32](./esp32-wifi) | -| Bluetooth | ❌ | — | ❌ | ❌ | [Aberto para votação](https://wokwi.com/features#feature-1047159691) | -| Timers | 🟡 | ✔️ | 🟡 | ✔️ | | -| Watchdog | ❌ | ❌ | ❌ | ❌ | | -| RTC | 🟡 | 🟡 | 🟡 | 🟡 | Apenas resistores RTC pull-up / pull-down | -| ADC | ✔️ | ✔️ | ❌ | ✔️ | Nota: analogRead() retorna valores até 4095 | -| RNG | ✔️ | ✔️ | ✔️ | ✔️ | Gerador de números aleatórios | -| AES Accelerator | ✔️ | ✔️ | ❌ | ✔️ | | -| SHA Accelerator | ✔️ | ✔️ | ❌ | ✔️ | | -| RSA Accelerator | ✔️ | ✔️ | ❌ | ✔️ | | -| Hall Effect Sensor | ❌ | — | ❌ | — | | -| ULP Processor | ❌ | ❌ | ❌ | ❌ | | -| GDB Debugging | 🟡 | 🟡 | 🟡 | 🟡 | Apenas através do [wokwi-gdbserver](https://github.com/wokwi/wokwi-gdbserver) | - -Legenda: -✔️ - Simulado -🟡 - Implementação parcial/trabalho em andamento -❌ - Não implementado (mas se você precisar, [abra uma solicitação de recurso](https://github.com/wokwi/wokwi-features/issues/new?labels=enhancement&template=feature_request.md)) -— - Não disponível neste chip - -\* A quantidade de SRAM pode ser personalizada usando o atributo ["psramSize"](#flash-and-memory-size). - -## Simulação WiFi - -Veja o [Guia WiFi do ESP32](./esp32-wifi). - -## Uso Avançado - -### Flash e tamanho da memória - -Você pode personalizar o tamanho do flash e PSRAM adicionando os seguintes atributos ao chip: - -| Atributo | Descrição | Padrão | -| --------- | ------------------------------------------------------------------- | ------- | -| flashSize | Tamanho da flash em MB. Valores válidos: "2", "4", "8", "16", "32". | "4" | -| psramSize | Tamanho da PSRAM em MB. Valores válidos: "2", "4", "8". | "4" | - -- [Exemplo de flash personalizado do ESP32](https://wokwi.com/projects/349656534768157267) - -### Tabela de partição personalizada - -Você pode especificar uma tabela de partição personalizada adicionando um arquivo "partitions.csv" ao seu projeto. Confira o [ESP32 Partition Table Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html) para o formato exato deste arquivo. - -- [Exemplo de código de tabela de partição personalizada no ESP32](https://wokwi.com/projects/337425600260080210) - -### Offset do firmware personalizado - -Ao carregar um firmware personalizado, você pode especificar o deslocamento do firmware na memória flash. Por padrão, o Wokwi examinará o binário do firmware e tentará descobrir o deslocamento automaticamente, com base na presença do bootloader e no tipo do chip. Se o Wokwi não conseguir descobrir o deslocamento, ele assumirá que seu firmware é um firmware de aplicativo e o carregará no deslocamento 0x10000. - -Você pode especificar o deslocamento manualmente adicionando o seguinte atributo ao chip: - -| Atributo | Descrição | Padrão | -| -------------- | ----------------------------------------------------- | ------- | -| firmwareOffset | Offset do firmware na memória flash, em bytes. | "" | - -### Pulando o bootloader - -Nos chips ESP32 e ESP32-S2, o Wokwi pula a ROM de boot e o bootloader, para que seu firmware comece a rodar imediatamente. Outros chips (ESP32-C3, ESP32-S3, etc.) sempre executam a sequência de inicialização completa. - -Se você deseja que o Wokwi sempre execute o bootloader, você pode adicionar o seguinte atributo ao chip: - -| Atributo | Descrição | Padrão | -| --------- | --------------------------------------------------------------------------------------------------------- | ------- | -| fullBoot | Defina como "1" para simular a sequência de inicialização completa: boot ROM -> bootloader -> aplicativo. | "" | diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/libraries.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/libraries.md deleted file mode 100644 index 467aed9..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/libraries.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Bibliotecas Arduino -sidebar_label: Bibliotecas ---- - -Para incluir uma biblioteca, vá ao editor de código e digite `#` em uma linha vazia. Você verá uma lista suspensa de preenchimento automático com sugestões do `#include` para as bibliotecas mais populares. - -Por padrão, o Wokwi compila seu código com as bibliotecas padrão integradas do Arduino, como Wire.h e SPI.h. - -## Adicionando bibliotecas de terceiros - -Para adicionar bibliotecas de terceiros ao seu projeto, vá para a guia "Library Manager" no editor de código e pressione o botão azul "+". Digite algum texto na caixa de pesquisa para procurar uma biblioteca (por exemplo, "FastLED") e clique em um dos nomes de biblioteca na lista para adicioná-la. - -Você pode usar este método para instalar qualquer biblioteca do Arduino a partir do Arduino Library Manager. - -### Carregando bibliotecas personalizadas - -[Membros do clube](https://wokwi.com/club?ref=docs_libman) podem fazer upload de qualquer biblioteca do Arduino selecionando uma pasta em seu computador. Para fazer upload de uma biblioteca personalizada, clique no botão azul "+" no gerenciador de bibliotecas do Arduino e clique em "Upload a Library". - -A pasta selecionada deve conter o código-fonte da biblioteca (arquivos .h e .c/.cpp). Depois de selecionar uma pasta, o Wokwi compactará seu conteúdo e fará o upload para o servidor de compilação do Wokwi. Você poderá ver a biblioteca no Library Manager como um arquivo .zip. - -Qualquer pessoa que abrir o projeto poderá baixar a biblioteca do gerenciador de bibliotecas. Qualquer usuário que criar uma cópia do projeto poderá usar a biblioteca no projeto copiado. - -## O arquivo library.txt - -Quando você adiciona bibliotecas por meio do "Library Manager" integrado, ele cria um arquivo "libraries.txt" em seu projeto. É um arquivo de texto simples que lista todas as bibliotecas instaladas em seu projeto, uma biblioteca por linha. As linhas que começam com "#" são comentários. - -Normalmente, você não precisa editar este arquivo - o "Library Manager" faz isso para você. Mas você pode achar este arquivo útil se quiser instalar uma versão específica de uma biblioteca. Para selecionar uma versão específica, adicione "@" após o nome da biblioteca, seguido pela versão que deseja instalar. - -Por exemplo, o arquivo a seguir instalará as versões mais recentes de Servo e FastLED, bem como a versão 2.3.0 de MySensors: - -``` -# Arquivo de exemplo libraries.txt: -Servo -FastLED - -## Solicitando uma biblioteca -# Instala uma versão específica de uma biblioteca: -MySensors@2.3.0 -``` - -As bibliotecas personalizadas têm o seguinte formato: o nome da biblioteca, seguido pelo texto "@wokwi:" e um identificador exclusivo do arquivo zip da biblioteca nos servidores do Wokwi. Você pode copiar bibliotecas personalizadas para um projeto diferente copiando as linhas relevantes do arquivo library.txt para o outro projeto. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png deleted file mode 100644 index a8c9b71..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png deleted file mode 100644 index c2cf00a..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png deleted file mode 100644 index f752cc5..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md deleted file mode 100644 index 619bd37..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Guia do Analisador Lógico -sidebar_label: Analisador Lógico ---- - -import LogicAnalyzerI2CImage from './logic-analyzer-i2c-decoder.png'; - -O [Analisador Lógico Wokwi](../parts/wokwi-logic-analyzer) registra os valores dos sinais digitais do seu projeto. É uma ferramenta de depuração poderosa e pode ajudá-lo a diagnosticar problemas em seu circuito e código. Também é muito útil para auxiliar no processo de aprendizagem. - -Alguns casos de uso incluem: - -- Observar o sinal de PWM gerado pela [função analogWrite()](https://www.arduino.cc/reference/pt/language/functions/analog-io/analogwrite/) -- Analisar o sinal de controle de um [Motor Micro Servo](../parts/wokwi-servo) -- Desenvolver e depurar máquinas de estado (PIO) para o [Raspberry Pi Pico](../parts/wokwi-pi-pico) -- Aprender sobre o protocolo I2C observando os sinais SCL/SDA - -
- Sinais de protocolo I2C decodificados no PulseView -
Analisador Lógico: sinais do protocolo I2C decodificados no PulseView
-
- -## Características - -O Analisador Lógico Wokwi possui 8 canais digitais, chamados D0 a D7. Ele tem uma taxa de amostragem de 1 GHz, que deve ser mais do que suficiente para a maioria das aplicações. - -Cada canal possui um LED de atividade que fica verde sempre que há uma atividade no canal. Os LEDs de atividade fornecem uma maneira fácil de ver se os sinais estão conectados corretamente. - -O analisador lógico possui um pequeno display. Mostra o número de amostras capturadas desde o início da simulação. - -O [acionamento configurável](#usando-o-acionamento) permite registrar apenas parte dos dados. Por exemplo, você pode iniciar a gravação ao pressionar o botão ou gravar apenas enquanto a comunicação SPI estiver ativa (usando o pino SS como um acionamento). - -## Usando o Analisador Lógico - -Primeiro, adicione o Analisador Lógico ao seu projeto. Você pode fazer isso clicando no botão de adição azul e selecionando "Logic Analyzer (8 channels)". - -Em seguida, conecte os sinais que deseja gravar aos pinos do Analisador Lógico. Por exemplo, se você deseja gravar a comunicação I2C entre um Arduino Uno e alguns periférico (como o [DS1307 RTC](../parts/wokwi-ds1307)), você pode conectar os pinos A4/A5 (que transportam os sinais SDA/SCL) aos pinos D0/D1 do Analisador Lógico. - -Inicie a simulação. Você deve ver os LEDs verdes em atividade piscando conforme os sinais estão chegando, e o número de amostras aparecerão acumuladas. - -Para visualizar a captura, pare a simulação. Isso baixará um arquivo chamado "wokwi-logic.vcd" para o seu computador. O arquivo contém os sinais gravados no formato [Value Change Dump](https://en.wikipedia.org/wiki/Value_change_dump). - -Você pode usar um software como o PulseView ou GTKWave para abrir e visualizar os arquivos de captura. Esse software também inclui analisadores de protocolo poderosos que podem decodificar muitos protocolos comuns, como UART, I2C, WS2812 e muitos outros. - -### Usando o Acionamento - -Por padrão, o analisador lógico registra dados para toda a duração da simulação. O acionamento permite controlar a gravação de dados, definindo o valor de um dos pinos de entrada do analisador digital (D7 por padrão). - -Aqui estão alguns exemplos de casos de uso comuns: - -- [Inicia a gravação quando um botão for pressionado](https://wokwi.com/projects/313698551063380544) - Define o `triggerMode` como "edge" e conecta o pino do acionamento (D7) ao aterramento por meio de um resitor pull-down. Conecta a outra extremidade do botão à fonte de alimentação positiva (VCC/5V). -- [Grava apenas enquanto o botão é pressionado](https://wokwi.com/projects/313706149095408193) - Mesma configuração que acima, mas o `triggerMode` está definido para "level". -- [Inicia a gravação após 1,5 segundos](https://wokwi.com/projects/313706408220557888) - Define `triggerMode` como "edge", conecta o pino de disparo (D7) e altera o nível do pino para alto após 1,5 segundos. - -Use os atributos `triggerPin` e `triggerLevel` para configurar o pino de acionamento e definir o nível de disparo ("alto" ou "baixo"). Verifique a [documentação do Analisador Lógico Wokwi](../parts/wokwi-logic-analyzer) para obter mais informações. - -### Personalizando os nomes dos canais - -Por padrão, os nomes dos canais são D0, D1, D2, etc. Você pode personalizar os nomes dos canais configurando o atributo `channelNames`. Por exemplo, para nomear os canais "SCL", "SDA", "RST", adicione o seguinte atributo ao analisador lógico: - - ```json - { - "type": "wokwi-logic-analyzer", - "id": "logic1", - "attrs": { - "channelNames": "SCL,SDA,RST" - } - } - ``` - -Os nomes dos canais afetam apenas a saída do arquivo VCD. Os pinos de entrada do analisador lógico são chamados de D0, D1, etc., independentemente do atributo `channelNames`. - -### Visualizando os dados no PulseView - -PulseView é uma GUI de código aberto que suporta Analisadores Lógicos. Ele roda em Linux, Windows, Mac OS X e há até uma versão para Android. Você pode visitar a [página de downloads](https://sigrok.org/wiki/Downloads) para obter a última versão. Para usuários de computadores Mac com a arquitetura ARM (M1/M2), siga o [guia PulseView no Mac M1/M2](https://nishtahir.com/running-pulseview-on-an-m1-mac/). - -Carregue o arquivo de sinal gravado (VCD) clicando na pequena seta ao lado do botão "Open" e selecione a opção: "Import Value Change Dump data..." - -![PulseView: Import Value Change Dump data](logic-analyzer-pulseview-1.png) - -Você verá uma caixa de diálogo onde pode escolher o arquivo VCD a ser importado. Depois de selecionar um arquivo, haverá outra caixa de diálogo com as opções de importação: - -![PulseView: Compress idle periods](logic-analyzer-pulseview-2.png) - -Infelizmente, as opções padrão geralmente fazem com que o PulseView consuma muita memória RAM e fique lento. Você pode reduzir o uso de memória definindo um valor em **Downsampling factor** (Fator de redução da resolução). Um valor de **50** deve funcionar para a maioria dos casos de uso. A tabela a seguir mostra alguns valores comuns: - -| Downsampling factor | Taxa de amostragem | Quando usar? | -| ------------------- | ------------------ | ------------------------------------------------------------------ | -| 1000 | 1MHz | Sinais de baixa frequência / gravações longas (mais de 10 minutos) | -| **50** | **20MHz** | Sinais comuns (UART, I2C, LED PWM, WS2812, etc.) | -| 10 | 100MHz | Sinais de velocidade alta (10MHz+) | -| 1 | 1GHz | Sinais de velocidade muito alta (50MHz+) | - -Após confirmar as opções de importação, você deverá ver os sinais importados na tela. Os nomes dos sinais serão "logic.D0", "logic.D1", etc. - -Para saber mais sobre como usar o PulseView, consulte o [manual do usuário do PulseView](https://sigrok.org/doc/pulseview/unstable/manual.html). - -#### Configurando o Windows para abrir arquivos VCD no PulseView - -Você pode configurar o Windows para abrir automaticamente arquivos VCD no PulseView. Abra uma janela do Prompt de Comando (cmd) **como administrador** e digite os seguintes comandos: - -``` -ftype vcdfile="%ProgramFiles%\sigrok\PulseView\pulseview.exe" "-I" "vcd:downsample=50" "%1" -assoc .vcd=vcdfile -``` - -Observe que esses comandos não funcionam no PowerShell. Funciona apenas no Prompt de Comando (cmd) com privilégios de administrador. O comando define o fator de redução da resolução para 50, mas você pode escolher um valor diferente que se adapte às suas necessidades (consulte a tabela acima). - -### Visualizando os dados no GTKWave - -[GTKWave](http://gtkwave.sourceforge.net/) é um software multiplataforma de visualização de ondas de código aberto. GTKWave pode abrir arquivos VCD gerados pelo Wokwi Logic Analyzer. - -O [wokwi2gtkwave Python script](https://github.com/bvandepo/wokwi2gtkwave) é um projeto contribuído por um usuário de automação para usar o GTKWave com Wokwi: ele pode monitorar seu diretório de downloads e abrir automaticamente novos arquivos com GTKWave. O script também configura GTKWave para exibir automaticamente os sinais de seus arquivos VCD e ampliá-los para caber na tela. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/micropython.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/micropython.md deleted file mode 100644 index 00ff62a..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/micropython.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: MicroPython no Wokwi -sidebar_label: MicroPython ---- - -Você pode criar e executar projetos MicroPython no Wokwi. Comece com o [modelo de projeto Raspberry Pi Pico MicroPython](https://wokwi.com/projects/new/micropython-pi-pico). - -## Estrutura do projeto - -Todos os projetos MicroPython devem incluir um arquivo `main.py`. MicroPython irá carregar e executar automaticamente o código de `main.py` quando você iniciar a simulação. - -Wokwi copia todos os arquivos do projeto para o sistema de arquivos flash do Pico. Isso significa que seu projeto -pode incluir módulos Python adicionais e você pode importá-los no `main.py` ou do modo interativo -REPL. Seu projeto também pode incluir dados personalizados dentro de arquivos de texto. - -Você pode obter uma lista de todos os arquivos no sistema de arquivos flash executando: - -```python -import os -print(os.listdir('/')) -``` - -# MicroPython REPL - -Quando o código em `main.py` termina (ou você o interrompe com Ctrl+C), você entrará no REPL do MicroPython. O REPL é um prompt interativo onde você pode digitar comandos python e ver os resultados imediatamente. Digite `help()` para exibir a ajuda da API MicroPython. Para colar o código no REPL, digite Ctrl+E para entrar no modo de colagem. - -## Exemplos de projetos - -- [Blink com MicroPython](https://wokwi.com/projects/300504213470839309) -- [Display de 7-Segmentos com MicroPython](https://wokwi.com/projects/300210834979684872) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/serial-monitor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/serial-monitor.md deleted file mode 100644 index 9ce2afc..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/serial-monitor.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: O Monitor Serial -sidebar_label: Monitor Serial ---- - -O Monitor Serial fornece uma maneira de enviar/receber informações de/para o seu código Arduino. -Você pode usá-lo para visualizar mensagens de depuração exibidas pelo seu programa ou para enviar comandos que controlam o seu programa. - -## Arduino Uno e Mega - -Tanto o Arduino Uno quanto o Mega possuem suporte de hardware para o protocolo Serial (USART). O Monitor Serial se conectará automaticamente à porta serial do hardware e detectará a taxa de transmissão, de forma que funcionará imediatamente, sem qualquer configuração especial. - -Você pode usar a [Classe de Comunicação Serial do Arduino](https://www.arduino.cc/reference/pt/language/functions/communication/serial/) para interagir com o monitor serial: - -```cpp -void setup() { - Serial.begin(115200); // Qualquer taxa de transmissão deve funcionar - Serial.println("Olá Arduino\n"); -} - -void loop() { - // Não faz nada... -} -``` - -:::warning ATENÇÃO -O Monitor Serial só será mostrado quando você imprimir alguma saída de seu programa. Para mudar este comportamento, [veja abaixo](#display). -::: - -O Arduino Mega possui várias portas seriais de hardware. Você pode conectar o monitor serial a uma porta serial diferente configurando os pinos em diagram.json. Por exemplo, para conectar `Serial2` ao monitor serial, adicione as seguintes linhas a seção `connections` do seu diagrama: - -```json - [ "mega:17", "$serialMonitor:TX", "" ], - [ "mega:16", "$serialMonitor:RX", "" ], -``` - -Substitua `mega` pelo ID atual do componente `wokwi-arduino-mega`. -Observe que você precisa conectar `$serialMonitor:TX` ao pino `RX` da porta serial, e `$serialMonitor:RX` to the `TX` pin of the serial port. This can be confusing, I know. - -## ATtiny85 + SoftwareSerial - -O chip ATtiny85 não possui suporte de hardware embutido para comunicação serial (UART). Você pode usar uma -implementação de software do protocolo UART para interagir com o monitor Serial, utilizando a biblioteca "SoftwareSerial". - -Primeiro, defina os pinos que serão usados ​​para a comunicação Serial, adicionando as seguintes linhas a seção `connections` do seu arquivo [diagram.json](../diagram-format): - -```json - [ "tiny:PB0", "$serialMonitor:TX", "" ], - [ "tiny:PB1", "$serialMonitor:RX", "" ], -``` - -Substitua `tiny` pelo id do componente ` wokwi-attiny85`, e `PB1`/`PB0` pelo nome dos pinos que você gostaria de usar. - -Em seguida, configure a biblioteca SoftwareSerial de acordo: - -```cpp -#include - -SoftwareSerial Serial(PB0, PB1); - -void setup() { - Serial.begin(9600); // Deve ser 9600 - Serial.println("Olá Arduino\n"); -} - -void loop() { - // Não faz nada... -} -``` - -Certifique-se de que o nome dos pinos em seu código correspondam aos do arquivo do diagrama. -O primeiro parâmetro para o construtor `SoftwareSerial` deve corresponder ao pino conectado ao `$serialMonitor:TX`, e -o segundo parâmetro deve corresponder ao pino conectado ao `$serialMonitor:RX`. - -:::warning ATENÇÃO -A taxa de transmissão deve ser definida como **9600**. Isso é codificado no simulador e ao usar um valor diferente -vai exibir caracteres estranhos no monitor Serial. -::: - -Para um exemplo completo, verifique o [Projeto de exemplo SoftwareSerial com ATtiny85](https://wokwi.com/projects/290883003139228169). - -Nota: se você quiser apenas usar o monitor serial para imprimir mensagens de depuração, dê uma olhada na [biblioteca TinyDebug](../parts/wokwi-attiny85#depuração-com-tinydebug). - -## Configurando o Monitor Serial - -Você pode configurar o Monitor Serial adicionando uma seção `"serialMonitor"` ao seu arquivo [diagram.json](../diagram-format). - -A configuração padrão é a seguinte: - -```json -"serialMonitor": { - "display": "auto", - "newline": "lf" -} -``` - -Ao adicionar uma seção `"serialMonitor"`, adicione-a após o último item em diagram.json ou certifique-se de adicionar uma vírgula após a chave de fechamento. Você pode encontrar um exemplo completo [aqui](https://wokwi.com/projects/308893120796295745). - -### Display - -A propriedade `display` configura quando exibir o monitor serial. Os valores possíveis são: - -| Valor | Descrição | -| -------- | ----------------------------------------------------------------- | -| auto | Exibe o monitor serial quando houver alguma saída (por padrão) | -| always | Sempre exibe o Monitor Serial quando a simulação é iniciada | -| never | Nunca exiba o monitor serial | -| plotter | Exibe o plotter serial quando a simulação é iniciada | -| terminal | Exibe um terminal (usando [XTerm.js](https://xtermjs.org/)) | - -Nota: o modo "terminal" suporta cores de texto e de fundo. Você pode verificar [o exemplo de cores ANSI do Arduino](https://wokwi.com/projects/308893120796295745) para vê-lo em ação. - -### Newline - -Quando você insere uma linha de texto no Monitor Serial, o simulador envia esse texto para o seu programa. - -Seu programa pode lê-lo usando `Serial.read()` e também alguns outros [métodos seriais](https://www.arduino.cc/reference/pt/language/functions/communication/serial/). - -Por padrão, o simulador também anexa um caractere de quebra de linha ("\n", código ASCII 10) a cada linha -de texto que envia ao seu programa. Você pode usar a propriedade `newline` para alterar esse comportamento e configurar uma sequência diferente de caracteres: - -| Valor | Caracteres | Código ASCII | Descrição | -| ----- | ---------- | ------------ | ---------------------------------------------------- | -| lf | "\n" | 10 | Quebra de linha (por padrão) | -| cr | "\r" | 13 | Retorno de carro | -| crlf | "\r\n" | 10 13 | Retorno de carro + quebra de linha | -| none | "" | | Não acrescenta nenhum caractere especial na entrada | diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/translating.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/translating.md deleted file mode 100644 index 45c85c0..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/guides/translating.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Traduções do Wokwi -sidebar_label: Traduções ---- - -Esta página explica como você pode contribuir com traduções para o Wokwi. - -## Tradução da interface do usuário - -Para traduzir a interface do usuário para um novo idioma, baixe a versão atual do [arquivo de textos em inglês](https://wokwi.com/api/i18n/en.json). O arquivo de tradução é um arquivo de texto no formato JSON padrão. Ele pode ser editado por qualquer editor de texto, bem como por muitas ferramentas de tradução. - -Se você deseja contribuir com traduções para um dos idiomas existentes, você pode baixar o arquivo de tradução para o idioma específico da lista [neste recurso](https://github.com/wokwi/wokwi-features/issues/221), e trabalhar do seu jeito a partir daí. - -Quando você estiver pronto para enviar suas traduções, [abra uma solicitação](https://github.com/wokwi/wokwi-features/issues/new?assignees=&labels=enhancement&template=translation.md&title=) e anexe o arquivo. O GitHub não oferece suporte à anexação direta de arquivos JSON, portanto, você pode copiar o conteúdo do arquivo em sua nova solicitação ou compactá-lo e anexar o arquivo Zip. - -Nem todos os textos estão atualmente disponíveis para tradução, mas estamos adicionando novos textos o tempo todo. Você pode se inscrever para [este recurso](https://github.com/wokwi/wokwi-features/issues/221) para receber uma notificação sempre que novos textos estiverem disponíveis para tradução. - -### Traduções existentes - -- [Chinês](https://wokwi.com/projects/new?lang=zh) -- [Tcheco](https://wokwi.com/projects/new?lang=cs) -- [Holandês](https://wokwi.com/projects/new?lang=nl) -- [Espanhol (Espanha)](https://wokwi.com/projects/new?lang=es-ES) -- [Francês](https://wokwi.com/projects/new?lang=fr) -- [Alemão](https://wokwi.com/projects/new?lang=de) -- [Húngaro](https://wokwi.com/projects/new?lang=hu) -- [Italiano](https://wokwi.com/projects/new?lang=it) -- [Norueguês](https://wokwi.com/projects/new?lang=nb-NO) -- [Polonês](https://wokwi.com/projects/new?lang=pl) -- [Português](https://wokwi.com/projects/new?lang=pt-BR) -- [Russo](https://wokwi.com/projects/new?lang=ru) -- [Esloveno](https://wokwi.com/projects/new?lang=sl) -- [Turco](https://wokwi.com/projects/new?lang=tr) -- [Ucraniano](https://wokwi.com/projects/new?lang=ua) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md deleted file mode 100644 index 9f0ffe7..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Teclas de Atalho do Editor -sidebar_label: Teclas de Atalho ---- - -## Atalhos Gerais - -| Descrição | Windows / Linux | Mac | -| ----------------------------------- | --------------- | ------- | -| Inicia a simulação | Ctrl + Enter | ⌘ Enter | -| Salva o projeto | Ctrl + S | ⌘ S | -| Código de formatação automática | Alt + Shift + F | ⌥ ⇧ F | -| Abre o Autocompletar | Ctrl + Space | ⌘ Space | -| Mostra lista de comandos | F1 | F1 | -| Vai para o próximo erro no arquivo | F8 | F8 | -| Vai para o erro anterior no arquivo | Shift + F8 | ⇧ F8 | - -## Teclas básicas de edição - -| Descrição | Windows / Linux | Mac | -| -------------------------- | --------------- | --- | -| Linha de recuo\* | Ctrl + ] | ⌘ ] | -| Linha de avanço\* | Ctrl + [ | ⌘ [ | -| Comentar / descomentar\* | Ctrl + / | ⌘ / | -| Encontrar no arquivo | Ctrl + F | ⌘ F | -| Substituir | Ctrl + H | ⌘ H | - -\* se você selecionou algum texto, isto irá operar dentro da seleção ao invés da linha atual - -## Teclas de edição avançadas - -Esses atalhos de teclado permitem operações de edição poderosas, como gerenciamento de -vários cursores / seleções. - -| Descrição | Windows / Linux | Mac | -| --------------------------------------- | --------------------------- | --------- | -| Seleciona no cursor / próxima ocorrência| Ctrl + D | ⌘ D | -| Seleciona todas as ocorrências | Ctrl + Shift + L | ⌘ ⇧ L | -| Duplicar linha\* acima de | Alt + Shift + Seta acima | ⌥ ⇧ Up | -| Duplicar linha\* abaixo de | Alt + Shift + Seta abaixo | ⌥ ⇧ Down | -| Mover a linha atual\* acima | Alt + Seta acima | ⌥ Up | -| Mover a linha atual\* abaixo | Alt + Seta abaixo | ⌥ Down | -| Adiciona o cursor acima | Ctrl + Alt + Seta acima | ⌘ ⌥ Up | -| Adiciona o cursor abaixo | Ctrl + Alt + Seta abaixo | ⌘ ⌥ Down | -| Expandir seleção | Alt + Shift + Seta direita | ⌥ ⇧ Right | -| Reduzir seleção | Alt + Shift + Seta esquerda | ⌥ ⇧ Left | - -\* se você selecionou algum texto, isto irá operar dentro da seleção ao invés da linha atual diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md deleted file mode 100644 index e0ccd09..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Referência da board-franzininiho-wifi -sidebar_label: board-franzininiho-wifi ---- - -Placa de desenvolvimento open source ESP32-S2 criada no Brasil. Consulte o [Guia ESP32](../guides/esp32) para maiores informações. - -![Franzininho WiFi](https://raw.githubusercontent.com/wokwi/wokwi-boards/main/boards/franzininho-wifi/board.svg) - -## Hardware da placa - -A placa inclui três LEDs embutidos: - -- LED verde de energia -- LED laranja conectado ao pino 33 -- LED azul conectado ao pino 21 - -## Exemplos no simulador - -- [Relógio LCD com cliente (NTP)](https://wokwi.com/projects/323796775459619410) -- [Controle de servo motor](https://wokwi.com/projects/327061759288410708) -- [Misturador de LED RGB (usando 3 potenciômetros)](https://wokwi.com/projects/324682033130373716) -- [Exemplo de Blink com CircuitPython](https://wokwi.com/projects/313606939786347074) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md deleted file mode 100644 index 015bf2b..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Referência do board-ssd1306 -sidebar_label: board-ssd1306 ---- - -Tela OLED monocromática 128x64 com interface I2C - -![SSD1306](https://raw.githubusercontent.com/wokwi/wokwi-boards/main/boards/ssd1306/board.svg) - -## Nome dos Pinos - -| Nome | Descrição | Pino Arduino Uno | -| ---- | --------------------- | ---------------- | -| GND | Terra | GND | -| VCC | Tensão de alimentação | 5V | -| SCL | Sinal de clock I2C | A5 | -| SDA | Sinal de dados I2C | A4 | - -O endereço I2C padrão do módulo SSD1306 é 0x3c (60). - -## Atributos - -| Nome | Descrição | Valor padrão | -| ---------- | -------------------- | ------------ | -| i2cAddress | Endereço I2C da tela | "0x3c" | - -## Usando no Arduino - -Você pode escolher entre várias bibliotecas SSD1306 do Arduino: - -- [Adafruit SSD1306](https://wokwi.com/projects/344892392214626898) -- [ssd1306](https://wokwi.com/projects/344894074741850707) -- [lcdgfx](https://github.com/lexus2k/lcdgfx) -- [U8glib](https://github.com/olikraus/u8glib) -- [U8g2](https://github.com/olikraus/u8g2) (também U8x8) -- [SSD1306Ascii](https://github.com/greiman/SSD1306Ascii) -- [Tiny4kOLED](https://www.arduino.cc/reference/en/libraries/tiny4koled/) - para usuários ATtiny85 - -Todas as bibliotecas acima estão disponíveis no Wokwi. - -## Exemplos no simulador - -- [Jogo da Cobrinha no SSD1306](https://wokwi.com/projects/296135008348799496) (usando Adafruit SSD1306) -- [ATtiny85 Digital Temperatura + Umidade no SSD1306](https://wokwi.com/projects/292900020514980360) -- [Barra de progresso com U8glib](https://wokwi.com/projects/300867986768527882) -- [Fontes SSD1306Ascii](https://wokwi.com/projects/291197274604700168) -- [Adafruit SSD1306 Showcase](https://wokwi.com/projects/344892392214626898) -- [U8g2 Menu](https://wokwi.com/projects/291572875238834696) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md deleted file mode 100644 index 2045dd0..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Referência do wokwi-74hc165 -sidebar_label: wokwi-74hc165 ---- - -Registrador de deslocamento de entrada (shift register) de 8 bits Serial-Out Parallel-In (PISO) - -![74HC165](wokwi-74hc165.svg) - -Use o registrador de deslocamento 74HC165 para expandir o número de pinos de _input_ em seu microcontrolador. Para registro de deslocamento de saída (por exemplo, controlar vários LEDs com apenas alguns pinos), consulte o [wokwi-74hc595](wokwi-74hc595). - -## Nome dos Pinos - -| Pino | Descrição | -| ----- | --------------------------------------------- | -| D0…D7 | Entrada paralela | -| PL | Carga paralela (ativo em nível baixo) | -| CP | Clock serial | -| CE | Clock habilitado (ativo em nível baixo) | -| Q7 | Saída serial | -| Q7_N | Saída serial invertida (geralmente não usada) | -| DS | Entrada serial\* | -| GND | Terra | -| VCC | Tensão de alimentação | - -\* Use o DS para conectar várias unidades 74HC165 em série. Conecte o DS ao pino Q7 do chip 74HC165 anterior na cadeia. Você pode deixar o DS desconectado se não fizer a cadeia ou para o primeiro chip da cadeia. - -## Operação - -O 74HC165 é um registrador de deslocamento com oito entradas paralelas: ele permite que você teste simultaneamente oito pinos de entrada e, em seguida, leia o resultado de um bit por vez. Em outras palavras, é uma maneira fácil de expandir o número de pinos de entrada do seu microcontrolador. - -O registrador de deslocamento tem dois estados: amostragem e deslocamento. O pino PL seleciona o estado ativo. - -### Amostragem (PL baixo) - -Quando PL está em nível baixo, o registrador de deslocamento está no estado de amostragem: ele lê as entradas dos pinos D0… D7 e as armazena. Ele também produz o valor de D7 no pino Q7 (então Q7 == D7). - -### Deslocamento (PL alto) - -Quando PL está em nível alto, o registrador está no estado de deslocamento. Ele retém o valor que lê da entrada e permite que você leia esse valor um bit por vez através do pino Q7. Você pode ler o próximo bit pulsando CP (o relógio serial) alto. Inicialmente, Q7 contém o valor lido de D7. Quando você pulsa o clock alto, obtém o valor de D6. Ao pulsar novamente, você obtém o valor de D5, etc. - -Alterar os pinos de entrada enquanto PL está alto não tem efeito. - -### Usando o registrador de deslocamento - -Para usar o registrador de deslocamento, conecte os pinos D0… D7 às suas entradas (por exemplo, [interruptores deslizantes](wokwi-slide-switch) ou [pushbuttons](wokwi-pushbutton)). Pode ser necessário adicionar pull-up ou pull-down externo [resistores](wokwi-resistor), especialmente se você utilizar com os botões. - -Você também precisa conectar PL, CP e Q7 ao seu microcontrolador. Configure PL e CP como saídas digitais e Q7 como uma entrada digital. - -Finalmente, conecte o pino CE ao aterramento. Você pode usar este pino para desativar a mudança (elevando-o alto), mas geralmente não é necessário. Não deixe o pino CE flutuando! - -Faça uma amostra das entradas definindo PL para baixo. - -Leia o valor configurando PL para alto. Leia o primeiro bit (mais significativo) de Q7 e, em seguida, pulse o CP alto para obter o próximo bit. Repita oito vezes, até ler todos os bits do registrador de deslocamento. - -### Encadeamento de vários registros de deslocamento - -Você pode encadear vários registradores de deslocamento e ainda usar um único pino de entrada do microcontrolador. Essa configuração também é chamada de cascata. As conexões são as seguintes: - -1. Conecte o pino Q7 de cada unidade (exceto o último) ao pino DS (entrada serial) da próxima unidade. -2. Conecte o pino Q7 da última unidade ao microcontrolador. -3. Os pinos PL (parallel load) e CP (clock) são compartilhados entre todas as unidades. Portanto, você só precisa de dois pinos de microcontrolador para controlar toda a cadeia. Se você usar o CE (pino de ativação do clock), ele também pode ser compartilhado. Caso contrário, basta conectá-lo ao solo. - -A operação é igual à anterior: amostragem e depois deslocamento. Há uma diferença: você lê mais de 8 bits durante a mudança. Para uma cadeia de n registradores de deslocamento, você deslocará 8\*n bits lendo repetidamente Q7 e, em seguida, pulsando em nível alto no CP. Portanto, para duas unidades 74hc165 você deslocaria 16 bits, para três unidades você deslocaria 24 bits, etc. - -Se você não precisa de todos os bits (por exemplo, você tem duas unidades de registro de deslocamento, usando apenas 10 entradas), então você pode deslocar um número menor de bits, quantos você estiver interessado. - -## Exemplo de código Arduino - -Este exemplo assume que você conectou o shift register ao Arduino da seguinte maneira: - -| Pino Arduino | Pino 74HC165 | -| ------------ | ------------ | -| 2 | Q7\* | -| 3 | CP | -| 4 | PL | -| GND | CE | -| GND | GND | -| 5V | VCC | - -\* Se você encadear vários registradores de deslocamento, conecte apenas o pino Q7 do último registrador na cadeia ao Arduino. - -```cpp -const int dataPin = 2; /* Q7 */ -const int clockPin = 3; /* CP */ -const int latchPin = 4; /* PL */ - -const int numBits = 8; /* Configurado como 8 * o número de shift registers */ - -void setup() { - Serial.begin(115200); - pinMode(dataPin, INPUT); - pinMode(clockPin, OUTPUT); - pinMode(latchPin, OUTPUT); -} - -void loop() { - // Etapa 1: Amostra - digitalWrite(latchPin, LOW); - digitalWrite(latchPin, HIGH); - - // Etapa 2: Deslocamento - Serial.print("Bits: "); - for (int i = 0; i < numBits; i++) { - int bit = digitalRead(dataPin); - if (bit == HIGH) { - Serial.print("1"); - } else { - Serial.print("0"); - } - digitalWrite(clockPin, HIGH); // Desloca para a próxima parte - digitalWrite(clockPin, LOW); - } - - Serial.println(); - delay(1000); -} -``` - -[Execute este exemplo no Wokwi](https://wokwi.com/projects/306031380875182657). - -## Exemplos no simulador - -- [Shift register 74HC165 de uma entrada](https://wokwi.com/projects/306031380875182657) -- [Shift register 74HC165 em cascata](https://wokwi.com/projects/306024460940476993) - four units daisy-chained to read the state of 32 switches diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg deleted file mode 100644 index 118617e..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - 74HC165 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md deleted file mode 100644 index 0473fc9..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Referência do wokwi-74hc595 -sidebar_label: wokwi-74hc595 ---- - -Registrador de deslocamento (shift register) de 8 bits Serial-In Parallel-Out (SIPO) - -![74HC595](wokwi-74hc595.svg) - -Use o registrador de deslocamento 74HC595 para expandir o número de pinos de _output_ em seu microcontrolador. Para registro de deslocamento de entrada (por exemplo, leitura de vários botões com um único pino de entrada), consulte o [wokwi-74hc165](wokwi-74hc165). - -## Nome dos Pinos - -| Pino | Descrição | -| ----- | ----------------------------------------------------------------- | -| DS | Entrada serial | -| SHCP | Clock serial | -| STCP | Pino de armazenamento (latch) | -| OE | Saída habilitada, ativo em baixo. Conecte ao GND se não for usado | -| Q0…Q7 | Saída paralela | -| Q7S | Saída serial\* | -| MR | Reset (clear), ativo em baixo. Conecte ao VCC se não for usado | -| GND | Terra | -| VCC | Tensão de alimentação | - -\* Use o Q7S para encadear várias unidades 74HC595 juntas. Conecte o Q7S ao pino DS do próximo chip 74HC595 na cadeia. - -## Conectando ao Arduino - -Você precisará conectar pelo menos 3 pinos ao seu microcontrolador: DS, SHCP e STCP. - -O pino OE pode ser usado para desabilitar a saída do registrador de deslocamento. Se você precisa dessa funcionalidade, -conecte-o ao seu microcontrolador. Caso contrário, conecte-o ao terra para habilitar a saída permanentemente. - -Os pinos de saída do registrador de deslocamento, Q0 a Q7, são geralmente conectados em [LEDs](wokwi-led) ou um display de 7 segmentos. - -O exemplo de código a seguir assume que você conectou DS ao Arduino pino 2, SHCP ao Arduino pino 3 e -STCP para o pino 4 do Arduino. Ele produz um padrão de 8 bits que se inverte duas vezes por segundo: - -```cpp -const int dataPin = 2; /* DS */ -const int clockPin = 3; /* SHCP */ -const int latchPin = 4; /* STCP */ - -void setup() { - pinMode(dataPin, OUTPUT); - pinMode(clockPin, OUTPUT); - pinMode(latchPin, OUTPUT); -} - -int pattern = 0b10101010; -void loop() { - digitalWrite(latchPin, LOW); - shiftOut(dataPin, clockPin, LSBFIRST, pattern); - digitalWrite(latchPin, HIGH); - delay(500); - pattern = ~pattern; // Inverte o padrão -} -``` - -Você também pode [executar este exemplo no Wokwi](https://wokwi.com/projects/301192672203244042). - -## Exemplos no simulador - -- [75HC595 shift register com 8 LEDs](https://wokwi.com/projects/301188813482361352) -- [Arduino 16-LED shift register blink](https://wokwi.com/projects/301213976182653448) -- [ATtiny85 75HC595 clock](https://wokwi.com/projects/301366580039647753) -- [8-digit seven-segment hex counter](https://wokwi.com/projects/301304715310793225) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg deleted file mode 100644 index b26e3d3..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - 74HC595 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg deleted file mode 100644 index 4f89500..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - A - B - C - D - E - G - F - DP - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg deleted file mode 100644 index a53ca80..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - DIG1 DIG2 DIG3 DIG4 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md deleted file mode 100644 index ced53d1..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Referência do wokwi-7segment -sidebar_label: wokwi-7segment ---- - -Display de LED 7 segmentos - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------------------------- | -| A | Segmento superior | -| B | Segmento superior direito | -| C | Segmento inferior direito | -| D | Segmento inferior | -| E | Segmento inferior esquerdo | -| F | Segmento superior esquerdo | -| G | Segmento do meio | -| DP | Ponto do LED | -| COM | Pino comum\* | -| DIG1 | Pino do dígito 1\* | -| DIG2 | Pino do dígito 2\* | -| DIG3 | Pino do dígito 3\* | -| DIG4 | Pino do dígito 4\* | -| CLN | Pino dos dois pontos (opcional) | - -\* COM é o pino comum para um display de 7 segmentos de um único dígito. Para um display de vários dígitos, use DIG1…DIG4. - -Com a configuração padrão do atributo `common` como `anode`, os pinos de segmento (A…G, DP, CLN) são conectados ao cátodo (lado negativo) dos LEDS, e os pinos comuns (COM, DIG1…DIG4) são conectado ao ânodo (lado positivo) dos LEDs. Os segmentos são iluminados ao direcionar seus pinos para o nível baixo. Definir `common` como `cathode` reverte esse comportamento, com os pinos do segmento ligando quando em nível alto. - -O mapeamento do segmento é o seguinte: - -![Mapeamento de exibição de 7 segmentos](wokwi-7segment-diagram.svg) - -E o mapeamento de dígitos: - -![Mapeamento de dígitos de exibição de 7 segmentos](wokwi-7segment-digits.svg) - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | ------------------------------------------------------------- | ------------- | -| common | O pino comum: "cathode" ou "anode" | "anode" | -| digits | Número de dígitos: "1", "2", "3" ou "4" | "1" | -| colon | Defina como "1" para mostrar os dois pontos (modo de relógio) | "" | -| color | A cor dos LEDs para cada segmento | "red" | - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------------------- | --------------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#d040d0" }` | -| | `{ "digits": "2" }` | -| | `{ "digits": "4" }` | -| | `{ "digits": "4", "colon": "1" }` | - -## Usando o display de 7 segmentos - -Para um único dígito, você precisará de 8 pinos GPIO do microcontrolador. Cada pino deve ser conectado a um único segmento por meio de um resistor, -e o pino comum deve ser conectado a 5V (ou GND se você estiver usando a variante de cátodo comum). Você pode dispensar um pino (DP) se não usar o ponto decimal do LED. Ligue um segmento acionando o segmento correspondente (ou HIGH para a variante de cátodo comum). - -Para vários dígitos, você precisará de 8 pinos de microcontrolador para os segmentos e mais um pino extra do microcontrolador para cada dígito e o ponto. Portanto, se você tiver 4 dígitos, precisará de 12 pinos do microcontrolador no total. Controlar a exibição neste modo é um pouco complicado, pois você precisará alternar continuamente entre os diferentes dígitos. -Felizmente, existem bibliotecas que podem ajudar: - -- No Arduino: use a biblioteca [SevSeg](https://wokwi.com/projects/344891439152366164). -- No Raspberry Pi Pico: O periférico PIO pode cuidar de atualizar o display para você. Veja os [exemplos abaixo](#exemplos-no-simulador). - -Se você estiver sem pinos do microcontrolador, considere o uso de um [74HC595 Shift Register](wokwi-74hc595) para controlar o display. - -## Exemplos no simulador - -- [Exemplo SevSeg: Contador](https://wokwi.com/projects/344891439152366164) -- [Exemplo SevSeg: String com ponto](https://wokwi.com/projects/344893935754150484) -- [Despertador Arduino](https://wokwi.com/projects/297787059514376717) -- [Relógio de 7 segmentos ATtiny85](https://wokwi.com/projects/301366580039647753) -- [Contador ATtiny85 de 8 dígitos](https://wokwi.com/projects/301304715310793225) -- [7-Segmento no Raspberry Pi Pico (usando PIO)](https://wokwi.com/projects/301404853501952521) -- [7 segmentos no Raspberry Pi Pico (MicroPython)](https://wokwi.com/projects/300936948537623048) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md deleted file mode 100644 index adca390..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Referência do wokwi-a4988 -sidebar_label: wokwi-a4988 ---- - -Driver de motor de passo A4988, para uso com [wokwi-stepper-motor](./wokwi-stepper-motor) - -![Wokwi A4988](wokwi-a4988.svg) - -## Nome dos Pinos - -| Nome | Descrição | Valor padrão \* | -| ------ | ----------------------------------------------------- | --------------- | -| ENABLE | Pino de ativação, ativo em baixo (puxado para baixo) | Low (0) | -| MS1 | Pino de seleção de micropasso 1 | Low (0) | -| MS2 | Pino de seleção de micropasso 2 | Low (0) | -| MS3 | Pino de seleção de micropasso 3 | Low (0) | -| RESET | Pino de reset, ativo em baixo (flutuante) | | -| SLEEP | Pino de suspensão, ativo em baixo (puxado para cima) | High (1) | -| STEP | Entrada de passo, conecte ao microcontrolador | | -| DIR | Entrada de direção: 0 = anti-horário, 1 = horário | | -| GND | Terra | | -| VDD | Tensão de alimentação | | -| 1B | Conecte ao B- do motor | | -| 1A | Conecte ao B+ do motor | | -| 2A | Conecte ao A+ do motor | | -| 2B | Conecte ao A- do motor | | -| VMOT | Fonte de alimentação do motor, não usada na simulação | | - -\* Os pinos digitais com um valor padrão de Low (0) são puxados para baixo e os pinos com um valor padrão de High (1) são puxados para cima. Os pinos sem valor padrão são flutuantes. - -### Configuração de micropasso - -Os motores de passo padrão têm 200 passos por revolução (os passos são espaços separados por 1,8 graus). O driver de passo suporta micropasso: girando o motor menos de um passo para cada pulso. O micropasso permite um controle mais preciso do movimento do motor. - -Use os pinos MS1/MS2/MS3 para selecionar a configuração de micropasso para o driver de passo: - -| MS1 | MS2 | MS3 | Modo de operação | Graus | Micropassos/revolução | -| --- | --- | --- | ----------------------- | ------ | --------------------- | -| 0 | 0 | 0 | Passo completo (padrão) | 1.8 | 200 | -| 1 | 0 | 0 | Meio passo | 0.9 | 400 | -| 0 | 1 | 0 | Passo de 1/4\* | 0.45 | 800 | -| 1 | 1 | 0 | Passo de 1/8\* | 0.225 | 1600 | -| 1 | 1 | 1 | Passo de 1/16\* | 0.1125 | 3200 | - -\* Estes modos não são totalmente suportados por [wokwi-stepper-motor](./wokwi-stepper-motor). Ao usar esses modos, o número de passos por revolução ainda estará correto, mas o ângulo do motor só será atualizado a cada meio passo. Por exemplo, se você usar o modo de passo de 1/8, o motor se moverá meio passo (0,9 graus) a cada quatro pulsos do pino STEP. - -## Usando o Driver de Passo A4988 - -Conecte os pinos do motor de passo aos pinos 1B/1A/2A/2B do driver. O pino RESET tem que ser HIGH, então você pode conectá-lo ao pino SLEEP adjacente (que é puxado para HIGH por padrão). Alternativamente, você pode habilitar/desabilitar o driver do motor de passo do seu código conectando os pinos RESET/SLEEP ao seu microcontrolador. - -Use o pino STEP para mover o motor de passo. Cada pulso ALTO neste pino moverá o motor um passo (ou micropasso, dependendo dos pinos MS1/MS2/MS3). Quando o pino DIR estiver em HIGH, o motor de passo se moverá no sentido horário. Quando o pino DIR estiver em BAIXO, o motor se moverá no sentido anti-horário. - -Por exemplo, se DIR, MS1 e MS3 forem LOW, e MS2 for HIGH (modo de 1/4 de passo), então pulsar o pino STEP moverá o motor 1/4 de passo (0,45 graus) no sentido anti-horário. - -## Exemplos no simulador - -- [Controle do A4988 usando um botão + interruptor](https://wokwi.com/projects/327823888123691604) - pressione o botão verde para mover o motor um passo e troque a posição do interruptor para mudar a direção. -- [Controlador GCODE de 4 motores](https://wokwi.com/projects/327761195587076690) - Digite "G00 X10 Y25" para mover o primeiro motor 10 passos e o segundo 25 passos. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg deleted file mode 100644 index 5001cbe..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A4988 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md deleted file mode 100644 index 3f0c3f1..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Referência do wokwi-analog-joystick -sidebar_label: wokwi-analog-joystick ---- - -Joystick analógico com dois eixos (horizontal/vertical) e um botão de pressão integrado. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------------------------------ | -| VCC | Fonte de alimentação positiva | -| VERT | Saída do eixo vertical (analógica) | -| HORZ | Saída do eixo horizontal (analógica) | -| SEL | Botão de pressionar | -| GND | Terra | - -A tensão da posição ociosa é VCC/2. Movendo o joystick ao longo do eixo vertical altera a tensão do pino VERT de 0 volts (inferior) para VCC (superior). Movendo o joystick ao longo do eixo horizontal muda as tensões do pino HORZ de 0 volts (direita) para VCC (esquerda). - -O pino SEL está normalmente aberto (flutuante). Clicando no centro do joystick conecta o pino SEL ao terra. O botão do joystick simula [bouncing] (wokwi-pushbutton # salto) por padrão. Você pode desativar o bouncing definindo o atributo "bounce" como "0". - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | ----------------------------------------- | ------------- | -| bounce | Defina como "0" para desativar o bouncing | "" | - -## Operando o Joystick - -Você pode operar o joystick com o mouse movendo o cursor sobre o joystick. Você irá ver quatro setas, correspondendo às quatro direções do movimento, -e um círculo no meio. Clique em uma das setas para mover o eixo do joystick nessa direção e no círculo no meio para pressionar o -botão do joystick (conectado ao pino SEL). - -Para operar o joystick com o teclado, primeiro foque nele (usando a tecla tab ou clicando nele com o mouse), a seguir use as teclas de seta para mover -o eixo do joystick e a tecla de espaço para pressionar o botão do joystick (conectado ao pino SEL). É possível combinar várias chaves -de uma vez, por exemplo seta para a esquerda e seta para cima, para mover o eixo na direção diagonal. Você também pode pressionar a tecla de espaço enquanto mantém pressionadas as setas -para pressionar o joystick enquanto move o eixo. - -Movimento parcial e controle por touch não são suportados no momento. No entanto, adoraríamos vê-los suportados - então, se você estiver à altura da tarefa, há [uma solicitação aberta esperando pelo seu carinho](https://github.com/wokwi/wokwi-elements/issues/62). - -## Usando o joystick no Arduino - -| Pino do joystick | Pinos Arduino | Pin de código de exemplo | -| ---------------- | ----------------------------------- | ------------------------ | -| VCC | 5V | | -| VERT | qualquer pino analógico (A0...A5) | A0 | -| HORZ | qualquer pino analógico (A0...A5) | A1 | -| SEL | qualquer pino digital | 2 | -| GND | GND | | - -Para usar o Joystick no Arduino, conecte os pinos VERT e HORZ aos pinos analógicos (A0...A6) e configure esses pinos como entrada. Leia a posição do joystick usando `analogRead()`. - -```cpp -#define VERT_PIN A0 -#define HORZ_PIN A1 -#define SEL_PIN 2 - -void setup() { - pinMode(VERT_PIN, INPUT); - pinMode(HORZ_PIN, INPUT); - pinMode(SEL_PIN, INPUT_PULLUP); -} - -void loop() { - int vert = analogRead(VERT_PIN); - int horz = analogRead(HORZ_PIN); - bool selPressed = digitalRead(SEL_PIN) == LOW; - // horz vai de 0 (direita) a 1023 (esquerda) - // vert vai de 0 (parte inferior) a 1023 (parte superior) - // selPressed é true se o joystick estiver pressionado -} -``` - -### Tabela de Posição do Joystick - -A tabela a seguir mostra as diferentes posições do joystick e os valores HORZ/VERT correspondentes, conforme retornado por `analogRead()`: - -| Posição | HORZ | VERT | Joystick | -| ----------------- | ---- | ---- | ---------------------------------------------------------- | -| Superior-Esquerda | 1023 | 1023 | | -| Superior | 512 | 1023 | | -| Superior-Direita | 0 | 1023 | | -| Esquerda | 1023 | 512 | | -| Central | 512 | 512 | | -| Direita | 0 | 512 | | -| Inferior-Esquerda | 1023 | 0 | | -| Inferior | 512 | 0 | | -| Inferior-Direita | 0 | 0 | | - -### Usando o map() - -Você pode usar a [função map()](https://www.arduino.cc/reference/pt/language/functions/math/map/) para mapear novamente os valores para um intervalo diferente. -Por exemplo, `map(analogRead(HORZ_PIN), 0, 1023, -100, 100)` retornará -100 quando o joystick estiver totalmente para a direita, 0 quando o joystick -estiver centralizado e 100 quando o joystick estiver totalmente à esquerda. - -## Exemplos no simulador - -- [Etch-a-sketch](https://wokwi.com/projects/296234816685212169) - Um jogo de desenho simples usando uma Matriz de LED MAX7219 diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md deleted file mode 100644 index 3b2b9bc..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Referência do wokwi-arduino-mega -sidebar_label: wokwi-arduino-mega ---- - -Arduino Mega 2560. Equipado com o chip ATmega2560, que possui 256K bytes de memória de programa Flash, 8k bytes de SRAM e 4K bytes de EEPROM. A placa possui 54 pinos digitais, 16 pinos de entrada analógica e 4 portas seriais. Funciona a 16 MHz. - - - -## Nome dos Pinos - -Os pinos de 0 a 53 são pinos GPIO digitais. Os pinos A0 a A15 funcionam como pinos de entrada analógica, além de serem pinos GPIO digitais. - -Existem cinco pinos de aterramento: GND.1 (próximo ao pino 13), GND.2/GND.3 (próximo ao pino Vin) e GND.4/GND.5 (na parte inferior do conector fêmea de duas vias) - -Os pinos VIN / 5V são conectados à fonte de alimentação positiva. Há também dois pinos adicionais de fonte de alimentação, 5V.1 / 5V.2, na parte superior do conector fêmea de duas vias. - -Os pinos 3.3V / IOREF / AREF / RESET não estão disponíveis na simulação. - -Os pinos digitais 2 a 13, 44, 45 e 46 têm suporte de hardware PWM (total de 15 canais PWM). - -Alguns dos pinos digitais também possuem funções adicionais: - -| Pino | Função | Sinal | Interrupção externa | -| ---- | ------- | ---------------- | ------------------- | -| 0 | Serial | RX | | -| 1 | Serial | TX | | -| 2 | | | INT4 | -| 3 | | | INT5 | -| 19 | Serial1 | RX | INT2 | -| 18 | Serial1 | TX | INT3 | -| 17 | Serial2 | RX | | -| 16 | Serial2 | TX | | -| 15 | Serial3 | RX | | -| 14 | Serial3 | TX | | -| 20 | I2C | SDA (Data) | INT1 | -| 21 | I2C | SCL (Clock) | INT0 | -| 50 | SPI | MISO | | -| 51 | SPI | MOSI | | -| 52 | SPI | SCK (Clock) | | -| 53 | SPI | SS (Chip select) | | - -### LEDs integrados - -A placa inclui quatro LEDs: - -| LED | Função | -| --- | ----------------------------------------------------------------- | -| L | Conectado ao pino digital 13 | -| RX | Atividade RX serial | -| TX | Atividade TX serial | -| ON | LED de força. Sempre ligado enquanto a simulação está em execução | - -Em geral, apenas o LED "L" pode ser controlado pelo código do usuário. Você pode usar a constante `LED_BUILTIN` para referenciá-la em seu código: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -Veja [Blink](https://wokwi.com/projects/344893018695795282) para um exemplo de código completo. - -## Recursos de simulação - -O Arduino Mega 2560 é simulado usando a [Biblioteca AVR8js](https://github.com/wokwi/avr8js). A tabela abaixo resume o status dos recursos: - -| Periférico | Status | Notas | -| ------------------------ | ------ | ---------------------------------------------------- | -| Processador | ✔️ | | -| GPIO | ✔️ | Incluindo Externo/Interrupções de mudança de pino | -| 8-bit timers | ✔️ | Timer0, Timer2 | -| 16-bit timers | ✔️ | Timer1, Timer3, Timer4, Timer5 \* | -| Output Compare Modulator | ❌ | | -| Watchdog Timer | ✔️ | | -| USART | ✔️ | USART0, USART1, USART1, USART3 | -| SPI | 🟡 | Apenas modo master | -| I2C | 🟡 | Apenas modo master | -| EEPROM | ✔️ | | -| Clock Prescale | ✔️ | | -| ADC | ✔️ | Usado por analogRead() | -| Analog Comparator | ❌ | | -| GDB Debugging | ✔️ | Consulte o [Guia de depuração GDB](../gdb-debugging) | - -Legenda: -✔️ Simulado -🟡 Simulado, mas veja as notas -❌ Não implementado - -\* A Captura de entrada não é implementada nos temporizadores de 16 bits. - -Se você precisar de algum dos recursos ausentes, [abra uma solicitação de recurso no repositório AVR8js](https://github.com/wokwi/avr8js/issues/new) -ou [entre em contato no Discord](https://wokwi.com/discord). - -### Monitor Serial - -Você pode usar o Monitor Serial para receber informações do código do Arduino, como impressão de depuração. Você também pode usá-lo para enviar informações ao seu código, como comandos textuais. - -Para obter mais informações e exemplos de código, consulte [o guia do Serial Monitor](../guides/serial-monitor). Também explica como conectar o monitor serial a um pino diferente (por exemplo, `Serial2` em vez de` Serial`) e como configurar os caracteres de final de linha. - -### Bibliotecas - -O simulador oferece suporte a muitas bibliotecas populares do Arduino. Para obter uma lista completa, consulte os [guias de bibliotecas](../guides/libraries). - -## Exemplos no simulador - -- [Arduino Mega Blink](https://wokwi.com/projects/344893018695795282) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md deleted file mode 100644 index 7b4b69e..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Referência do wokwi-arduino-nano -sidebar_label: wokwi-arduino-nano ---- - -O Arduino Nano é muito semelhante ao [Arduino Uno](wokwi-arduino-uno), mas em um formato menor. Ele carrega o mesmo chip ATmega328p, que possui 32K bytes de memória de programa Flash, 2k bytes de SRAM e 1K bytes de EEPROM. - - - -Para obter mais informações, consulte a [referência wokwi-arduino-uno](wokwi-arduino-uno). - -## Diferenças do Arduino Uno - -O Arduino Nano inclui dois pinos analógicos extras: A6 e A7. Esses pinos só podem ser usados ​​para entrada analógica. Eles não podem ser usados ​​como pinos GPIO digitais. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md deleted file mode 100644 index 891ed60..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Referência do wokwi-arduino-uno -sidebar_label: wokwi-arduino-uno ---- - -Arduino Uno é a placa mais popular da família Arduino. Ele é alimentado pelo chip ATmega328p, que possui 32K bytes de memória de programa Flash, 2k bytes de SRAM e 1K bytes de EEPROM. - - - -## Nome dos Pinos - -Os pinos de 0 a 13 são pinos GPIO digitais. Os pinos A0 a A5 funcionam como pinos de entrada analógica, além de serem pinos digitais GPIO. - -Existem três pinos de aterramento: GND.1, que está na parte superior da placa, próximo ao pino 13, e GND.2/GND.3, que está na parte inferior. - -Os pinos VIN / 5V são conectados à fonte de alimentação positiva. - -Os pinos 3.3V / IOREF / AREF / RESET não estão disponíveis na simulação. - -Os pinos digitais 3, 5, 6, 9, 10 e 11 têm suporte de hardware PWM. - -Alguns dos pinos digitais também têm funções adicionais: - -| Pino | Função | Sinal | -| ---- | ------------------- | ---------------- | -| 0 | Serial (USART) | RX | -| 1 | Serial (USART) | TX | -| 2 | Interrupção externa | INT0 | -| 3 | Interrupção externa | INT1 | -| 10 | SPI | SS (Chip select) | -| 11 | SPI | MOSI | -| 12 | SPI | MISO | -| 13 | SPI | SCLK (Clock) | -| A4 | I2C | SDA (Data) | -| A5 | I2C | SCL (Clock) | - -### LEDs integrados - -A placa inclui quatro LEDs: - -| LED | Função | -| --- | ----------------------------------------------------------------- | -| L | Conectado ao pino digital 13 | -| RX | Atividade serial RX | -| TX | Atividade serial TX | -| ON | LED de força. Sempre ligado enquanto a simulação está em execução | - -Em geral, apenas o LED "L" pode ser controlado pelo código do usuário. Você pode usar a constante `LED_BUILTIN` para referenciá-la ao seu código: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -Veja [Blink](https://wokwi.com/projects/344891652101374548) para um exemplo de código completo. - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------- | ----------------------------------------------------------------------------- | ------------ | -| frequency | Frequência de clock do MCU, em hertz. Valores comuns: "8m", "16m", e "20m" \* | "16m" | - -\* Muitas bibliotecas do Arduino assumem a frequência de clock de 16 MHz. Alterar a frequência do clock anulará a sua garantia! - -## Recursos do simulador - -O Arduino Uno é simulado usando a [Biblioteca AVR8js](https://github.com/wokwi/avr8js). A tabela abaixo resume o status dos recursos: - -| Periférico | Status | Notas | -| ----------------- | ------ | ----------------------------------------------------------------------- | -| Processador | ✔️ | | -| GPIO | ✔️ | Incluindo Externo/Interrupções de mudança de pino | -| 8-bit timers | ✔️ | Timer0, Timer2 | -| 16-bit timer | ✔️ | Timer1 | -| Watchdog Timer | ✔️ | [Exemplo de uso](https://wokwi.com/projects/309372800631571009) | -| USART | ✔️ | | -| SPI | 🟡 | Modo mestre apenas | -| I2C | 🟡 | Modo mestre apenas | -| EEPROM | ✔️ | | -| Clock Prescale | ✔️ | | -| ADC | ✔️ | Usado por analogRead() | -| Analog Comparator | ❌ | | -| GDB Debugging | ✔️ | Consulte o [Guia do depurador GDB](../gdb-debugging) | - -Legenda: -✔️ Simulado -🟡 Simulado, mas veja as notas -❌ Não implementado - -Se você precisar de algum dos recursos ausentes, [abra uma solicitação de recurso no repositório AVR8js](https://github.com/wokwi/avr8js/issues/new) -ou [entre em contato no Discord](https://wokwi.com/discord). - -### Monitor Serial - -Você pode usar o Monitor Serial para receber informações do código do Arduino, como impressão de depuração. Você também pode usá-lo para enviar informações ao seu código, como comandos textuais. - -Para obter mais informações e exemplos de código, consulte [o guia do Monitor Serial](../guides/serial-monitor). Também explica como configurar o monitor serial, por exemplo, definir os caracteres de final de linha. - -### Bibliotecas - -O simulador oferece suporte a muitas bibliotecas populares do Arduino. Para obter uma lista completa, consulte os [guias de bibliotecas](../guides/libraries). - -## Exemplos no simulador - -- [Arduino Blink](https://wokwi.com/projects/344891652101374548) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md deleted file mode 100644 index 60402d9..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Referência do wokwi-attiny85 -sidebar_label: wokwi-attiny85 ---- - -O ATtiny85 é um pequeno microcontrolador AVR de 8 bits. Possui 8 KB de memória de programa Flash, 512 bytes de SRAM e 512 bytes de EEPROM. - -![ATtiny85](wokwi-attiny85.svg) - -## Nome dos Pinos - -| Pino | Nome | Funções | Canal Analógico | -| ---- | ---- | ----------------- | --------------- | -| 1 | PB5 | Reset | 0 | -| 2 | PB3 | | 3 | -| 3 | PB4 | | 2 | -| 4 | GND | Terra | | -| 5 | PB0 | SPI:MOSI, I2C:SDA | | -| 6 | PB1 | SPI:MISO | | -| 7 | PB2 | SPI:SCK, I2C:SCL | 1 | -| 8 | VCC | Tensão positiva | | - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------- | -------------------------------------------------------------------------------- | ------------ | -| env | Arduino core a ser usado: "attiny" ou "ATTinyCore" | "attiny" | -| frequency | Frequência de clock do MCU, em hertz. Valores comuns: "1m", "8m", "16m", e "20m" | "8m" | - -## Código e bibliotecas - -O Arduino core fornece as funções integradas, como `pinMode()` e `digitalRead()`, bem como um conjunto de bibliotecas padrão do Arduino, como Servo, Wire e SPI. - -Ao compilar seu código para o ATtiny85, você pode escolher entre dois cores diferentes: - -- [attiny](https://github.com/damellis/attiny) - Um core mínimo que fornece a maioria das funções padrão do Arduino. Este é o padrão. -- [ATTinyCore](https://github.com/SpenceKonde/ATTinyCore) - Core avançado que inclui as bibliotecas Wire, SPI, Servo e Serial. Saiba mais na [Documentação](https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/ATtiny_x5.md) do ATTinyCore. - -Nota: O ATTinyCore é uma nova opção e não foi amplamente testado. - -Para selecionar um core, defina o atributo "env" na parte `wokwi-attiny85`, por exemplo: - -```json - "parts": [ - { - "type": "wokwi-attiny85", - "id": "tiny", - "attrs": { - "env": "ATTinyCore" - } - … - }, - … - ] -``` - -### Depuração com TinyDebug - -Você pode usar a [biblioteca TinyDebug](https://github.com/wokwi/TinyDebug) para imprimir mensagens de depuração do seu código. Essas mensagens aparecem no Monitor Serial do Wokwi. Para usar a biblioteca, inclua "TinyDebug.h" em seu projeto e crie um arquivo [libraries.txt](../guides/libraries) com o texto "TinyDebug" nele. - -Chame `Debug.begin()` e, em seguida, imprima suas mensagens de depuração usando `Debug.println()`: - -```cpp -#include - -void setup() { - Debug.begin(); - Debug.println(F("Olá, TinyDebug!")); -} - -void loop() { - /* Espalhe um pouco de código mágico aqui */ -} -``` - -Da mesma forma, você pode usar o objeto `Debug` para ler a entrada do monitor serial do Simulador: - -```cpp -if (Debug.read() == 'c') { - // Faça algo, por exemplo alternar um LED -} -``` - -Para obter mais informações sobre os métodos disponíveis, verifique a [documentação da classe Stream](https://www.arduino.cc/reference/pt/language/functions/communication/stream/). - -A interface `Debug` consome cerca de 30 bytes de SRAM e 150 bytes de memória Flash, dependendo de quais métodos você usa em seu código. Isso às vezes pode ser um problema, já que o ATtiny85 tem apenas 512 bytes de SRAM. - -É por isso que o TinyDebug também fornece uma interface de registro leve e alternativa que não usa SRAM. Ele fornece duas funções, `tdPrint()` e `tdPrintln()`. A desvantagem é que você só pode imprimir strings no estilo C (`char*`): - -```cpp -#include - -void setup() { - tdPrintln(F("Eu não uso SRAM!")); -} - -void loop() { - /* ... */ -} -``` - -A biblioteca TinyDebug funciona fora da caixa no Wokwi, sem nenhuma alteração em seu diagrama. Usa uma -interface de depuração interna que faz parte do mecanismo de simulação Wokwi e não usa nenhum pino do MCU. - -Você pode executar com segurança o código que usa o TinyDebug em um chip ATtiny85 físico. O chip físico não -tem a interface de depuração, então você obviamente não verá as mensagens de depuração, mas além disso, -não deve interferir no seu código. - -Para um exemplo completo de código, confira o [projeto de demonstração do TinyDebug no Wokwi](https://wokwi.com/projects/300650387867697672). - -### Saída Serial - -O ATtiny85 não tem um periférico UART dedicado, mas ainda é possível obter saída serial usando a biblioteca Software Serial. -Para obter mais informações e código de demonstração, consulte o [Guia do Monitor Serial](../guides/serial-monitor#attiny85--softwareserial) - -### I2C - -Para comunicação I2C, use a biblioteca [TinyWireM](https://github.com/adafruit/TinyWireM). - -## Recursos do simulador - -O ATtiny85 é simulado usando a [Biblioteca AVR8js](https://github.com/wokwi/avr8js). A tabela abaixo resume o status dos recursos: - -| Periférico | Status | Notas | -| -------------------- | ------ | ---------------------------------------------------- | -| Processador | ✔️ | | -| GPIO | ✔️ | 6 pinos GPIO (PB0...PB6), Suporte para INT0/PCINT | -| USI | 🟡 | Só funciona no modo I2C | -| Timer0 | ✔️ | Suporte PWM para PB0/PB1 | -| Timer1 | ❌ | | -| Watchdog Timer | ✔️ | | -| EEPROM | ✔️ | | -| ADC | ✔️ | Usado por analogRead() | -| Comparador Analógico | ❌ | | -| Depuração GDB | ✔️ | Consulte o [Guia do Depurador GDB](../gdb-debugging) | - -Legenda: -✔️ Simulado -🟡 Suporte parcial -❌ Não implementado - -Se você precisar de algum dos recursos ausentes, [abra uma solicitação de recurso no repositório AVR8js](https://github.com/wokwi/avr8js/issues/new) -ou [entre em contato no Discord](https://wokwi.com/discord). - -## Exemplos no simulador - -- [ATtiny85 Blink](https://wokwi.com/projects/283019827166052872) -- [ATtiny85 Simon Game](https://wokwi.com/projects/285525640477671948) -- [ATtiny85 FastLED Matrix](https://wokwi.com/projects/283910810787381773) -- [ATtiny85 Charlieplexing](https://wokwi.com/projects/283912288194265608) -- [ATtiny85 SSD1306 + DHT](https://wokwi.com/projects/292900020514980360) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg deleted file mode 100644 index 591ceba..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - ATTINY8520PU - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-biaxial-stepper.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-biaxial-stepper.md deleted file mode 100644 index 025a0e0..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-biaxial-stepper.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Referência do wokwi-biaxial-stepper -sidebar_label: wokwi-biaxial-stepper ---- - -Um motor de passo biaxial concêntrico, contendo dois motores de passo embalados em um único gabinete. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | --------------------------------------------------- | -| A1- | Sinal negativo da bobina A do eixo externo do motor | -| A1+ | Sinal positivo da bobina A do eixo externo do motor | -| B1+ | Sinal positivo da bobina B do eixo externo do motor | -| B1- | Sinal negativo da bobina B do eixo externo do motor | -| A2- | Sinal negativo da bobina A do eixo interno do motor | -| A2+ | Sinal positivo da bobina A do eixo interno do motor | -| B2+ | Sinal positivo da bobina B do eixo interno do motor | -| B2- | Sinal negativo da bobina B do eixo interno do motor | - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------------- | ------------------------------------------------------------------ | ------------ | -| outerHandLength | O comprimento da mão do eixo externo, entre "20" e "70" | "30" | -| outerHandColor | A cor da mão do eixo externo | "gold" | -| outerHandShape | A forma da mão do eixo externo: "plain", "arrow", or "ornate" | "plain" | -| innerHandLength | O comprimento da mão do eixo interno, entre "20" e "70" | "30" | -| innerHandColor | A cor da mão do eixo interno | "silver" | -| innerHandShape | A forma da mão do eixo interno: "plain", "arrow", ou "ornate" | "plain" | - -### Exemplos - -| Resultado | Attrs | -| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| | `{ "innerHandLength": "40", "innerHandShape": "arrow" }` | -| | `{ "innerHandColor": "red", "innerHandShape": "ornate", "outerHandShape": "ornate" }` | - -## Usando o motor de passo biaxial - -O motor de passo biaxial é feito de dois motores de passo individuais. Confira a documentação do [wokwi-stepper-motor](./wokwi-stepper-motor#using-the-stepper-motor) e [wokwi-a4988](./wokwi-a4988) para obter mais informações sobre o uso de motores de passo e seus comportamento de simulação. - -## Exemplos no simulador - -- [Motor de passo biaxial com Arduino Uno](https://wokwi.com/projects/344254821712265811) -- [Motor de passo biaxial com dois drivers A4988](https://wokwi.com/projects/345206751024382546) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md deleted file mode 100644 index 94e3edd..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Referência do wokwi-buzzer -sidebar_label: wokwi-buzzer ---- - -Um buzzer piezoelétrico - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------------------ | -| 1 | Pino negativo (preto) | -| 2 | Pino positivo (vermelho) | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | -------------------------------------------------- | ------------- | -| mode | Modo de operação do buzzer: "smooth" ou "accurate" | "smooth" | -| volume | Volume (intensidade) do som, entre "0.01" e "1.0" | "1.0" | - -### Modos de operação - -O buzzer pode operar em dois modos: "smooth" (o padrão) e "accurate". - -"smooth" soa melhor e é adequado para tons simples de frequência única. Use-o -ao tocar uma melodia ou tons com a função `tone()` do Arduino. Sons polifônicos complexos -podem não tocar corretamente (ou nem tocar) no modo "smooth" (suave). - -Uso o modo "accurate" quando você precisar tocar sons complexos. Vai tocar com precisão -o som que você alimenta. No entanto, ele adicionará ruídos de clique audíveis ao seu som. Esses ruídos -são devido a flutuações na velocidade da simulação - nem sempre é capaz de fornecer o -buffer de som em tempo real. - -## Arduino exemplo - -Conecte o pino 1 da campainha ao pino GND do Arduino e o pino 2 da campainha ao pino 8 do Arduino. Em seguida, use a função `tone()` para reproduzir um som: - -```cpp -tone(8, 262, 250); // Toca um tom de 262Hz por 0,250 segundos -``` - -## Exemplos no simulador - -- [Jogo Simon](https://wokwi.com/projects/344891334169985618) - Um jogo de memória com 4 botões de pressão -- [Piano diatônico](https://wokwi.com/projects/291958456169005577) - Um piano de 8 notas, use as teclas 1 a 8 para pressionar os botões e tocar as notas. -- [Despertador](https://wokwi.com/projects/297787059514376717) - Use a campainha para tocar o som do alarme diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md deleted file mode 100644 index 7dbdb12..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Referência do wokwi-dht22 -sidebar_label: wokwi-dht22 ---- - -Sensor digital de umidade e temperatura. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------------------------------- | -| VCC | Tensão positiva | -| SDA | Pino digital de dados (entrada/saída) | -| NC | Não conectado | -| GND | Terra | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----------- | ----------------------------------------------- | ------------- | -| temperature | Valor da temperatura inicial (celsius) | "24" | -| humidity | Valor de umidade relativa inicial (porcentagem) | "40" | - -## Controlando a temperatura - -Você pode alterar os valores de temperatura e umidade durante a execução da simulação. -Clique no sensor DHT22 e uma pequena janela pop-up será aberta. -Use os controles deslizantes de temperatura e umidade para alterar os valores. -Clique em "Ocultar" para fechar a janela pop-up. - -:::warning::ATENÇÃO -Se você estiver tentando ler este sensor do ESP32, use a biblioteca "DHT sensor library for ESPx". Outras bibliotecas DHT22 podem não funcionar de forma confiável no ESP32. Você pode usar este [projeto de exemplo](https://wokwi.com/projects/322410731508073042) como ponto de partida. -::: - -## Exemplos no simulador - -- [Teste DHTlib DHT22](https://wokwi.com/projects/344892337559700051) -- [Exemplos de código da biblioteca DHT](https://wokwi.com/projects/344892587898831442) -- [DHT22 no ESP32](https://wokwi.com/projects/322410731508073042) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md deleted file mode 100644 index 4fa0e43..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Referência do wokwi-dip-switch-8 -sidebar_label: wokwi-dip-switch-8 ---- - -Conjunto de 8 interruptores elétricos em um único encapsulamento - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | --------------------------------- | -| 1a | Primeiro contato do interruptor 1 | -| 1b | Segundo contato do interruptor 1 | -| 2a | Primeiro contato do interruptor 2 | -| 2b | Segundo contato do interruptor 2 | -| … | … | -| 8a | Primeiro contato do interruptor 8 | -| 8b | Segundo contato do interruptor 8 | - -## Operação do teclado - -Você pode usar o teclado para alternar os interruptores enquanto a simulação está em execução. Clique no interruptor DIP para selecioná-lo e, em seguida, alterne os interruptores pressionando as teclas "1" a "8". - -Usuários do Firefox: se os atalhos do teclado não funcionarem para você, certifique-se de que a configuração "Pesquisar texto ao começar a digitar" esteja desativada. - -## Exemplos no simulador - -- [Exemplo do interruptor DIP + barra de LED](https://wokwi.com/projects/314167394611233344) -- [Exemplo do registrador PIND do Arduino](https://wokwi.com/projects/314168546236039745) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md deleted file mode 100644 index 2c4043b..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Referência do wokwi-ds1307 -sidebar_label: wokwi-ds1307 ---- - -Módulo RTC (Real Time Clock) com interface I2C e 56 bytes de NV SRAM. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ---------------------------------------------------- | -| GND | Terra | -| 5V | Tensão positiva (5V) | -| SDA | Linha de dados I2C | -| SCL | Linha de clock I2C | -| SQW | Saída de onda quadrada. Não disponível na simulação. | - -O endereço I2C do DS1307 é 0x68. - -## Comportamento da Simulação - -O simulador do DS1307 é inicializado automaticamente com a hora atual do sistema ao iniciar a simulação. Após isso -continua contando o tempo. - -O código em execução na simulação pode atualizar a data/hora do DS1307 e o DS1307 manterá o controle -do tempo da atualização. - -## Exemplos no simulador - -- [Lendo data/hora usando RTClib](https://wokwi.com/projects/305979285237137984) -- [Despertador](https://wokwi.com/projects/297787059514376717) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md deleted file mode 100644 index 0fc52d7..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Referência do wokwi-franzininho -sidebar_label: wokwi-franzininho ---- - -Uma pequena placa de desenvolvimento baseada no ATtiny85. - - - -## Sobre o Franzininho - -O Franzininho DIY é uma placa open hardware compatível com o Arduino projetada no Brasil. É baseado -no chip ATtiny85, portanto, consulte a [documentação do ATtiny85](wokwi-attiny85) para informações técnicas. - -O LED amarelo (LED1) está conectado ao pino PB1 do chip ATtiny85. Você pode aprender mais sobre -a placa e as pessoas por trás do projeto na [homepage do Franzininho](https://franzininho.com.br/). - -## Nome dos Pinos - -| Pino | Pino ATtiny85 | Funções | Canal Analógico | PWM | -| ---- | ------------- | -------------------- | --------------- | --- | -| 0 | PB0 | SPI:MOSI, I2C:SDA | | Sim | -| 1 | PB1 | SPI:MISO, LED1 | | Sim | -| 2 | PB2 | SPI:SCK, I2C:SCL | A1 | - | -| 3 | PB3 | | A3 | - | -| 4 | PB5 | Reset | A0 | - | -| 5 | PB4 | | A2 | Sim | -| VCC | VCC | Tensão positiva (5V) | | - | -| GND | GND | Terra | | - | - -### LEDs integrados - -A placa inclui dois LEDs de 3 mm: - -| LED | Cor | Função | -| ---- | ------- | ----------------------------------------------------------------------- | -| ON | Verde | LED de alimentação. Sempre ligado enquanto a simulação está em execução | -| LED1 | Amarelo | Conectado ao pino PB1 | - -## Exemplos no simulador - -- [Pisca LED](https://wokwi.com/projects/301693553069785610) -- [Relógio](https://wokwi.com/projects/301738586036765194), usando dois [74HC595](wokwi-74hc595) e [RTC DS1307](wokwi-ds1307) -- [Sensor de Temperatura NTC](https://wokwi.com/projects/301751077214093834), usando [Termistor NTC](wokwi-ntc-temperature-sensor) e [SSD1306](wokwi-ssd1306) -- [Sensor de Umidade e Temperatura Digital](https://wokwi.com/projects/301745949656482317), usando [DHT22](wokwi-dht22) e [SSD1306](wokwi-ssd1306) -- [Sensor Ultra-sônico](https://wokwi.com/projects/302020345098928648), usando [74HC595](wokwi-74hc595) e HC-SR04 -- [Controle de posição Servo Motor](https://wokwi.com/projects/302291615188255242), usando um [Motor Micro Servo](wokwi-servo) e um [LCD1602](wokwi-lcd1602) -- [Contador de pulsos externos](https://wokwi.com/projects/302199144424931848) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md deleted file mode 100644 index b35ac10..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Referência do wokwi-hc-sr04 -sidebar_label: wokwi-hc-sr04 ---- - -Sensor de distância ultrassônico HC-SR04 - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | -------------------------------------------------------------- | -| VCC | Tensão de alimentação (5V) | -| TRIG | Pulso para iniciar a medição | -| ECHO | Medição do comprimento de um pulso alto para obter a distância | -| GND | Terra | - -## Atributos - -| Nome | Descrição | Valor padrão | -| -------- | ------------------------------------------ | ------------ | -| distance | Valor da distância inicial, em centímetros | "400" | - -## Operação - -Para iniciar uma nova medição de distância, defina o pino TRIG para nível alto em 10µS ou mais. Em seguida, espere até que o pino ECHO esteja em nível alto, -e conte o tempo enquanto permaneça em alto (duração do pulso). O comprimento do pulso no pino ECHO em nível alto é proporcional à distância. Use -a tabela a seguir para converter a duração do pulso em microssegundos no pino ECHO para centímetros ou polegadas: - -| Unidade | Distância | -| ----------- | -------------- | -| Centímetros | Pulso μs / 58 | -| Polegadas | Pulso μs / 148 | - -### Definindo a distância - -Para alterar a distância enquanto a simulação está em execução, clique no elemento HC-SR04 no diagrama e use o controle deslizante -para definir o valor da distância. Você pode escolher qualquer valor entre 2cm e 400cm. - -## Exemplo de código Arduino - -```cpp -#define PIN_TRIG 3 -#define PIN_ECHO 2 - -void setup() { - Serial.begin(115200); - pinMode(PIN_TRIG, OUTPUT); - pinMode(PIN_ECHO, INPUT); -} - -void loop() { - // Inicia uma nova medição: - digitalWrite(PIN_TRIG, HIGH); - delayMicroseconds(10); - digitalWrite(PIN_TRIG, LOW); - - // Leia o resultado: - int duration = pulseIn(PIN_ECHO, HIGH); - Serial.print("Distância em CM: "); - Serial.println(duration / 58); - Serial.print("Distância em polegadas: "); - Serial.println(duration / 148); - - delay(1000); -} -``` - -Experimente [este exemplo no Wokwi](https://wokwi.com/projects/304444938977804866) - -## Exemplos no simulador - -- [Sensor de distância com LED](https://wokwi.com/projects/290056311044833800) -- [Display de distância com LCD](https://wokwi.com/projects/290043622233997832) -- [Display de distância com 7 segmentos](https://wokwi.com/projects/295030553275532810) -- [Sensor ultrassônico com Franzininho](https://wokwi.com/projects/302020345098928648) -- [Sensor de estacionamento](https://wokwi.com/projects/290964046833779209) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hx711.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hx711.md deleted file mode 100644 index aad96ba..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-hx711.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Referência do wokwi-hx711 -sidebar_label: wokwi-hx711 ---- - -Amplificador de célula de carga HX711 - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | -------------------------- | -| VCC | Tensão de alimentação (5V) | -| DT | Dados seriais | -| SCK | Clock serial | -| GND | Terra | - -_note que os pinos `E+`/`E-`/`A+`/`A-`/`B+`/`B-` não são interativos e são renderizados com base em atributos_ - - - -## Atributos - -| Nome | Descrição | Valor padrão | -| ---- | ------------------------------------------ | ------------ | -| type | Qualquer "50kg" (padrão), "5kg" ou "gauge" | "50kg" | - -### Exemplos - -| Resultado | Attrs | -| ---------------------------- | --------------------- | -| | `{ "type": "5kg" }` | -| | `{ "type": "50kg" }` | -| | `{ "type": "gauge" }` | - -## Operação - -O amplificador HX711 permite que você leia facilmente as células de carga e avalie as mudanças na resistência. Uma ponte de Wheatstone é usada para conectar as células de carga ao IC, que por sua vez é conectado ao microcontrolador via `VCC`, `DT`, `SCK` e `GND`. Use `begin()` para inicializar a balança e `set_scale()` e `tare()` para calibrá-la. `power_down()` e `power_up()` podem ser usados para colocar o ADC dentro e fora do modo de baixa energia. `get_value()` e `get_units()` são usados para ler o ADC menos a tara e dividida, passando um valor inteiro opcional para obter esse número de valores, em média. Consulte a [biblioteca Arduino `HX711`](https://github.com/bogde/HX711#features) para obter mais detalhes sobre recursos e calibração. - -## Exemplo de código Arduino - -```cpp -#include "HX711.h" - -HX711 scale; - -void setup() { - Serial.begin(9600); - Serial.println("Inicializando a escala"); - scale.begin(A1, A0); -} - -void loop() { - Serial.println(scale.get_units(), 1); - delay(1000); -} -``` - -Tente [este exemplo no Wokwi](https://wokwi.com/projects/345134808605655636) - -## Exemplos no simulador - -- [Exemplo com HX711](https://wokwi.com/projects/344192176616374868) -- [Escala digital](https://wokwi.com/projects/336613701830312531) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md deleted file mode 100644 index 2493d9b..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Referência do wokwi-ili9341 -sidebar_label: wokwi-ili9341 ---- - -Display colorido LCD-TFT 240x320 de 2,8" com interface SPI - - - -## Nome dos Pinos - -| # | Nome | Descrição | Pino do Arduino Uno | -| --- | ---- | ---------------------- | ------------------- | -| 1 | VCC | Tensão de alimentação | 5V | -| 2 | GND | Terra | GND | -| 3 | CS | Seletor de chip | 10† | -| 4 | RST | Reset\* | - | -| 5 | D/C | Pino de dados/comando | 9† | -| 6 | MOSI | Dados SPI (MCU → LCD) | 11 | -| 7 | SCK | Clock SPI | 13 | -| 8 | LED | Luz de fundo com LED\* | 5V | -| 9 | MISO | Dados SPI (LCD → MCU)‡ | 12 | - -\* Os pinos RST e luz de fundo (LED) não estão disponíveis na simulação. -† Você pode conectar o CS e D/C a qualquer pino digital do Arduino. Os números dos pinos aqui são apenas um exemplo. -‡ Você pode deixar o MISO desconectado, a menos que precise ler os dados do LCD. - -## Atributos - -| Nome | Descrição | Valor padrão | -| -------------- | ------------------------------------------------- | ------------- | -| flipHorizontal | Defina como "1" para virar a tela horizontalmente | "" | -| flipVertical | Defina como "1" para virar a tela verticalmente | "" | - -## Uso no Arduino - -Você pode usar as bibliotecas _Adafruit_ILI9341_ ou _lcdgfx_ para fazer a interface com o display LCD. O exemplo de código a seguir mostra o uso básico com _Adafruit_ILI9341_. Funciona com as conexões de pino da tabela acima: - -```cpp -#include "SPI.h" -#include "Adafruit_GFX.h" -#include "Adafruit_ILI9341.h" - -#define TFT_DC 9 -#define TFT_CS 10 - -Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); - -void setup() { - tft.begin(); - - tft.setCursor(26, 120); - tft.setTextColor(ILI9341_RED); - tft.setTextSize(3); - tft.println("Olá, TFT!"); - - tft.setCursor(20, 160); - tft.setTextColor(ILI9341_GREEN); - tft.setTextSize(2); - tft.println("Eu posso tem cores?"); -} - -void loop() { } -``` - -[Execute este exemplo no Wokwi](https://wokwi.com/projects/308024602434470466) - -## Exemplos no simulador - -- [Exemplo Adafruit ILI9341 GFX](https://wokwi.com/projects/307567201804616256) -- [Fingerprint Pattern](https://wokwi.com/projects/307567963154678338) -- [Mandelbrot Set](https://wokwi.com/projects/307567275170333248) -- [Neon Ribbons](https://wokwi.com/projects/307577144545903170) -- [Logotipo Wokwi sobre Plasma](https://wokwi.com/projects/307664460274729536) -- [Lode Runner com lcdgfx](https://wokwi.com/projects/308022099088245312) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md deleted file mode 100644 index c7ae136..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Referência do wokwi-ir-receiver -sidebar_label: wokwi-ir-receiver ---- - -Receptor infravermelho 38KHz - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ---------------- | -| GND | Terra | -| VCC | Tensão positiva | -| DAT | Saída digital | - -## Usando o receptor - -O receptor pode ser usado de duas maneiras: - -1. Use o [Controle Remoto IR](wokwi-ir-remote) para enviar comandos infravermelhos. -2. Clique no receptor (enquanto a simulação está em execução) para enviar arbitrariamente [sinais IR codificados por NEC](https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051#NEC_Protocol). A interface do usuário permite especificar o endereço e os campos de comando na mensagem NEC. - -Para ler os comandos no seu código Arduino, você pode usar a biblioteca [IRRemote](https://github.com/Arduino-IRremote/Arduino-IRremote) ou [IRMP](https://github.com/ukw100/IRMP). - -## Exemplos no simulador - -- [IRRemote + Display LCD](https://wokwi.com/projects/298934082074575369) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md deleted file mode 100644 index 01411c9..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Referência do wokwi-ir-remote -sidebar_label: wokwi-ir-remote ---- - -Controle Remoto infravermelho de 38KHz com 20 teclas de função. Use junto com o [Módulo Receptor IR](wokwi-ir-receiver). - - - -## Teclas de função - -As teclas enviam mensagens infravermelhas codificadas usando o [formato de mensagem NEC](https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051#NEC_Protocol). Cada tecla envia um valor de comando diferente (consulte a tabela abaixo) e o campo do endereço é sempre 0. - -Cada tecla possui um atalho do teclado que ativa a tecla enquanto o controle remoto está em foco. - -A tabela a seguir lista os comandos NEC, valor codificado NEC e o atalho do teclado -para cada uma das teclas: - -| Tecla | Comando | NEC codificado | Atalho do teclado | -| -------- | ------- | -------------- | ----------------------- | -| Liga | 162 | 0xFFA25D | O | -| Menu | 226 | 0xFFE21D | M | -| Test | 34 | 0xFF22DD | T | -| Mais | 2 | 0xFF02FD | + | -| Voltar | 194 | 0xFFC23D | B | -| Anterior | 224 | 0xFFE01F | Seta para a esquerda | -| Play | 168 | 0xFFA857 | P | -| Próximo | 144 | 0xFF906F | Seta para a direita | -| 0 | 104 | 0xFF6897 | 0 | -| Menos | 152 | 0xFF9867 | - (menos) | -| C | 176 | 0xFFB04F | C | -| 1 | 48 | 0xFF30CF | 1 | -| 2 | 24 | 0xFF18E7 | 2 | -| 3 | 122 | 0xFF7A85 | 3 | -| 4 | 16 | 0xFF10EF | 4 | -| 5 | 56 | 0xFF38C7 | 5 | -| 6 | 90 | 0xFF5AA5 | 6 | -| 7 | 66 | 0xFF42BD | 7 | -| 8 | 74 | 0xFF4AB5 | 8 | -| 9 | 82 | 0xFF52AD | 9 | - -## Exemplos no simulador - -- [IRRemote + Display LCD](https://wokwi.com/projects/298934082074575369) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg deleted file mode 100644 index 8626146..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg +++ /dev/null @@ -1,102 +0,0 @@ - - Coil Unpowered - - - - - - - - - - - - - - - - - - P1 - NC1 - NO1 - - - - - - - - - - - - - - - - - - - - P2 - NC2 - NO2 - - - - Coil Powered - - - - - - - - - - - - - - - - - - - - P1 - NC1 - NO1 - - 5V - GND - - - - - - - - - - - - - - - - - - - - P2 - NC2 - NO2 - - - - - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md deleted file mode 100644 index 0befa75..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Referência do Relé ks2e-m-dc5 -sidebar_label: wokwi-ks2e-m-dc5 ---- - -Relé de duas chaves de duas posições (DPDT) - - - -## Nome dos Pinos - -| Nome | Descrição | -| ----- | --------------------------------------------------------------------- | -| COIL1 | Primeiro terminal da bobina | -| COIL2 | Segundo terminal da bobina | -| P1 | Primeiro pólo | -| NC1 | Normalmente fechado - conectado a P1 quando a bobina não é alimentada | -| NO1 | Normalmente aberto - conectado a P1 quando alimentado pela bobina | -| P2 | Segundo pólo | -| NC2 | Normalmente fechado - conectado a P2 quando a bobina não é alimentada | -| NO2 | Normalmente aberto - conectado a P2 quando alimentado por bobina | - -## Operação - -O relé é um interruptor eletrônico com dois estados: bobina sem alimentação e bobina com alimentação. Por padrão, a bobina não é alimentada. Você pode alimentar a bobina aplicando tensão entre os pinos COIL1 e COIL2. - -Quando a bobina está desenergizada, P1 é conectado a NC1 e P2 é conectado a NC2 (NC significa normalmente fechado/conectado). - -Quando a bobina é alimentada, P1 é conectado a NO1 e P2 é conectado a NO2 (NO significa normalmente aberto/desconectado). - -O diagrama a seguir resume os estados do relé: - -![Diagrama de conexões do relé](wokwi-ks2e-m-dc5-diagram.svg) - -## Exemplos no simulador - -- [Um Relé controlando dois LEDs](https://wokwi.com/projects/322846360729551444) -- [Flip-flop com Relé](https://wokwi.com/projects/322802227591774802) - Elemento de memória de bit único usando três relés diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg deleted file mode 100644 index ea16027..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - A - B - C - S1 - S2 - - - - - - - - - - - CLK - DT - VCC - SW - GND - - - - - - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png deleted file mode 100644 index 88c5ef7..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md deleted file mode 100644 index 4e78d09..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Referência do wokwi-ky-040 -sidebar_label: wokwi-ky-040 ---- - -Módulo Encoder Rotativo KY-040 com 20 pulsos por revolução. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | --------------------------------------------------------------------------------- | -| CLK | Pino A do encoder rotativo (Pulso de clock) | -| DT | Pino B do encoder rotativo (Pulso de direção) | -| SW | Pino do botão de pressão. Normalmente aberto, em curto com GND quando pressionado | -| VCC | Alimentação positiva | -| GND | Terra | - -## Operação - -O encoder rotativo oferece duas formas de interação: - -- **Rotação** - Você pode girar o botão clicando nas setas. - A seta superior gira um passo no sentido horário, e a seta - inferior gira um passo no sentido anti-horário. Girando o botão - irá produzir sinais digitais nos pinos DT e CLK, como - explicado abaixo. -- **Botão** - Clique no botão para pressionar o botão. - Enquanto pressionado, o botão conecta o pino SW ao pino GND. - -Cada vez que o usuário gira o botão, ele produz um sinal BAIXO -nos pinos DT e CLK: - -- Girar no sentido horário faz com que o pino CLK gere um sinal baixo primeiro e, - em seguida, o pino DT vai para o nível baixo também. -- Girar no sentido anti-horário faz com que o pino DT gere um sinal baixo primeiro e - então o pino CLK vai para nível baixo. - -Ambos os pinos voltarão para o nível alto em alguns milissegundos. O diagrama -a seguir ilustra isso: - -![Captura do analisador lógico KY-040](wokwi-ky-040-timing.png) - -Você pode fazer experimentos com os tempos dos pinos DT/CLK conectando-os ao -[Analisador Lógico Wokwi](wokwi-logic-analyzer). Confira o [Guia do Analisador Lógico](../guides/logic-analyzer) -para aprender como usar. - -### Esquemas - -O módulo KY-040 inclui dois resistores internos de pull-up que -colocam os pinos CLK e DT em VCC. A simulação sempre coloca esses -pinos em nível alto, mesmo se você deixou o pino VCC flutuando. - -![Esquemas do Módulo KY-040](wokwi-ky-040-diagram.svg) - -## Usando o Encoder Rotativo no Arduino - -### Lendo a rotação - -Você pode ler a rotação verificando o status do pino CLK. Sempre que estiver BAIXO, leia o -valor do pino DT para determinar a direção: HIGH significa rotação no sentido horário, LOW significa -rotação anti-horária. Exemplo de código: - -```cpp -#define ENCODER_CLK 2 -#define ENCODER_DT 3 - -void setup() { - Serial.begin(115200); - pinMode(ENCODER_CLK, INPUT); - pinMode(ENCODER_DT, INPUT); -} - -int lastClk = HIGH; - -void loop() { - int newClk = digitalRead(ENCODER_CLK); - if (newClk != lastClk) { - // Houve uma mudança no pino CLK - lastClk = newClk; - int dtValue = digitalRead(ENCODER_DT); - if (newClk == LOW && dtValue == HIGH) { - Serial.println("Girando no sentido horário ⏩"); - } - if (newClk == LOW && dtValue == LOW) { - Serial.println("Girando no sentido anti-horário ⏪"); - } - } -} -``` - -Você também pode [executar este exemplo no Wokwi](https://wokwi.com/projects/304184298969236032). - -Nota: seu código precisará ler o estado dos pinos com frequência para detectar as rotações corretamente. -Se a sua rotina em `loop()` demorar muito tempo para ler o encoder (por exemplo: com o uso da função `delay()` em seu código), recomendamos usar [attachInterrupt()](https://www.arduino.cc/reference/pt/language/functions/external-interrupts/attachinterrupt/) para receber as alterações no pino CLK. Supondo que CLK esteja conectado ao pino 2 e DT ao pino 3 (como antes): - -```cpp -#define ENCODER_CLK 2 -#define ENCODER_DT 3 - -void setup() { - pinMode(ENCODER_CLK, INPUT); - pinMode(ENCODER_DT, INPUT); - attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING); -} - -void readEncoder() { - int dtValue = digitalRead(ENCODER_DT); - if (dtValue == HIGH) { - Serial.println("Girando no sentido horário ⏩"); - } - if (dtValue == LOW) { - Serial.println("Girando no sentido anti-horário ⏪"); - } -} - -void loop() { - // Faça o que for preciso -} -``` - -### Usando o botão - -Para ler o estado do botão do encoder, conecte-o a qualquer pino IO do Arduino e inicialize o pino como `INPUT_PULLUP`. Em seguida, leia o estado do botão usando `digitalRead()`. -A leitura será BAIXA enquanto o botão for pressionado. - -O exemplo de código a seguir acenderá o LED integrado do Arduino (13) enquanto o botão estiver pressionado. -Ele assume que você conectou o SW ao pino 4 do Arduino. -Você também precisa conectar o pino GND a um dos pinos GND do Arduino. - -```cpp -#define ENCODER_BTN 4 - -void setup() { - pinMode(ENCODER_BTN, INPUT_PULLUP); - pinMode(LED_BUILTIN, OUTPUT); -} - -void loop() { - if (digitalRead(ENCODER_BTN) == LOW) { - digitalWrite(LED_BUILTIN, HIGH); - } else { - digitalWrite(LED_BUILTIN, LOW); - } -} -``` - -## Controle pelo teclado - -Para controlar o encoder com o teclado, clique nele primeiro, e em seguida, use as seguintes teclas: - -| Tecla | Função | -| ---------------- | --------------------------------------- | -| Direita / Cima | Gira um passo no sentido horário\* | -| Esquerda / Baixo | Gira um passo no sentido anti-horário\* | -| Barra de espaço | Pressiona o botão do encoder | - -\* Mantenha as teclas pressionadas para girar continuamente o encoder, - gerando uma série de pulsos nos pinos CLK/DT. - -## Exemplos no simulador - -- [Exemplo de uso básico](https://wokwi.com/projects/304184298969236032) -- [Contador do encoder rotativo](https://wokwi.com/projects/304184909747978816) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg deleted file mode 100644 index c832cd3..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg +++ /dev/null @@ -1,202 +0,0 @@ - - - 32 - 33 - - 34 - - 35 - - 36 - - 37 - - 38 - - 39 - - 40 - - 41 - - 42 - - 43 - - 44 - - 45 - - 46 - - 47 - - 48 - - 49 - - 50 - - 51 - - 52 - - 53 - - 54 - - 55 - - 56 - - 57 - - 58 - - 59 - - 60 - - 61 - - 62 - - 63 - - 64 - - 65 - - 66 - - 67 - - 68 - - 69 - - 70 - - 71 - - 72 - - 73 - - 74 - - 75 - - 76 - - 77 - - 78 - - 79 - - 80 - - 81 - - 82 - - 83 - - 84 - - 85 - - 86 - - 87 - - 88 - - 89 - - 90 - - 91 - - 92 - - 93 - - 94 - - 95 - - 96 - - 97 - - 98 - - 99 - - 100 - - 101 - - 102 - - 103 - - 104 - - 105 - - 106 - - 107 - - 108 - - 109 - - 110 - - 111 - - 112 - - 113 - - 114 - - 115 - - 116 - - 117 - - 118 - - 119 - - 120 - - 121 - - 122 - - 123 - - 124 - - 125 - - 126 - - 127 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg deleted file mode 100644 index d137204..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - 160 - 161 - - 162 - - 163 - - 164 - - 165 - - 166 - - 167 - - 168 - - 169 - - 170 - - 171 - - 172 - - 173 - - 174 - - 175 - - 176 - - 177 - - 178 - - 179 - - 180 - - 181 - - 182 - - 183 - - 184 - - 185 - - 186 - - 187 - - 188 - - 189 - - 190 - - 191 - - 192 - - 193 - - 194 - - 195 - - 196 - - 197 - - 198 - - 199 - - 200 - - 201 - - 202 - - 203 - - 204 - - 205 - - 206 - - 207 - - 208 - - 209 - - 210 - - 211 - - 212 - - 213 - - 214 - - 215 - - 216 - - 217 - - 218 - - 219 - - 220 - - 221 - - 222 - - 223 - - 224 - - 225 - - 226 - - 227 - - 228 - - 229 - - 230 - - 231 - - 232 - - 233 - - 234 - - 235 - - 236 - - 237 - - 238 - - 239 - - 240 - - 241 - - 242 - - 243 - - 244 - - 245 - - 246 - - 247 - - 248 - - 249 - - 250 - - 251 - - 252 - - 253 - - 254 - 255 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md deleted file mode 100644 index 04bd5f3..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Referência do wokwi-lcd1602 -sidebar_label: wokwi-lcd1602 ---- - -import FontA00p1 from './wokwi-lcd1602-fonta00-1.svg'; -import FontA00p2 from './wokwi-lcd1602-fonta00-2.svg'; - -Um LCD com 2 linhas, 16 caracteres por linha. - - - -## Nome dos Pinos - -O LCD1602 vem em 2 configurações possíveis: configuração I2C e configuração padrão. A configuração I2C geralmente é mais simples de usar. - -A tabela a seguir resume as principais diferenças: - -| Propriedade | Padrão | I2C | -| --------------------------------- | ------------- | ----------------- | -| Número de pinos de I/O do Arduino | 7\* | 2 (SCL)/SDA | -| Controle de luz de fundo | Opcional | Sim | -| Nome da biblioteca | LiquidCrystal | LiquidCrystal_I2C | - -\* Controlar a luz de fundo requer outro pino de I/O. - -Você pode selecionar a configuração desejada definindo o atributo `pins`. Defina-o como "i2c" para a configuração I2C ou como "full" para a configuração padrão (o padrão). - -### Configuração I2C - -| Nome | Descrição | -| ---- | --------------------- | -| GND | Terra | -| VCC | Tensão de alimentação | -| SDA | Linha de dados I2C | -| SCL | Linha de clock I2C | - -O endereço I2C padrão do módulo LCD1602 é 0x27. Você pode alterar o endereço definindo o atributo [`i2cAddress`](#attributes). - -Nota: A configuração I2C simula um chip PCF8574T que controla o módulo LCD. Normalmente, você não teria que se preocupar com isso, pois a biblioteca LiquidCrystal_I2C cuida da comunicação com o chip. - -### Configuração padrão - -| Nome | Descrição | Pino Arduino\* | -| ---- | ---------------------------------- | -------------- | -| VSS | Terra | GND.1 | -| VDD | Tensão de alimentação | 5V | -| V0 | Ajuste de contraste (não simulado) | | -| RS | Seleção de comando/dados | 12 | -| RW | Leitura/Escrita. Conectar ao terra | GND.1 | -| E | Enable | 11 | -| D0 | Dados paralelos 0 (opcional) † | | -| D1 | Dados paralelos 1 (opcional) † | | -| D2 | Dados paralelos 2 (opcional) † | | -| D3 | Dados paralelos 3 (opcional) † | | -| D4 | Dados paralelos 4 | 10 | -| D5 | Dados paralelos 5 | 9 | -| D6 | Dados paralelos 6 | 8 | -| D7 | Dados paralelos 7 | 7 | -| A | Luz de fundo ânodo | 5V / 6‡ | -| K | Luz de fundo cátodo | GND.1 | - -\* Estes são apenas exemplos de número de pinos, eles não são obrigatórios. Você pode usar qualquer pino digital/analógico, mas certifique-se de atualizar o código de acordo! -† Normalmente, você configuraria o chip no modo paralelo de 4 bits, o que significa que você só precisa conectar os pinos RS, E, D4, D5, D6 e D7 ao Arduino. -‡ Se você precisar controlar a luz de fundo, conecte o ânodo a um pino de E/S. Caso contrário, conecte-o à tensão de alimentação. Para um circuito real, você também -precisa de um resistor limitador de corrente, mas você pode ignorá-lo no ambiente de simulação. - -#### Exemplo de código Arduino - -Ao inicializar a biblioteca LiquidCrystal em seu código, você precisa passar os números dos pinos para o construtor. - -O exemplo a seguir usa números de pinos que correspondem à tabela acima: - -```cpp -#include - -LiquidCrystal lcd(12, 11, 10, 9, 8, 7); - -void setup() { - lcd.begin(16, 2); - // Agora você pode interagir com o LCD, por exemplo: - lcd.print("Ola Mundo!"); -} - -void loop() { - // ... -} -``` - -Você também pode [tentar este exemplo no Wokwi](https://wokwi.com/projects/294342288335700490). - -## Atributos - -| Nome | Descrição | Valor padrão | -| ---------- | ----------------------------------------- | ------------ | -| pins | Defina como "i2c" para a configuração I2C | "full" | -| i2cAddress | Endereço I2C (configuração I2C) | "0x27" | -| color | A cor do texto | "black" | -| background | A cor da luz de fundo | "green" | - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------------------------- | -------------------------------------------- | -| | `{ }` | -| | `{ "pins": "i2c" }` | -| | `{ "background": "blue", "color": "white" }` | - -## Fonte - -O LCD1602 usa o [chip Hitachi HD44780 LCD Controller](https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller). -O chip vem com uma fonte embutida, bem como a capacidade de definir até 8 caracteres personalizados. - -Existem duas versões da ROM do chip com duas fontes diferentes: HD44780UA00, que inclui caracteres katakana Japoneses, -e HD44780UA02, que inclui caracteres da Europa Ocidental. - -Wokwi simula a variante HD44780UA00. Possui um total de 256 caracteres: - -| Faixa | Descrição | -| ------- | ------------------------------------------------------------- | -| 0-7 | [Caracteres definidos pelo usuário](#user-defined-characters) | -| 8-31 | Caracteres em branco | -| 32-127 | Caracteres ASCII padrão | -| 128-160 | Caracteres em branco | -| 161-255 | Katankana e símbolos japoneses | - -Símbolos de caracteres ASCII: - - - -Símbolos de caracteres especiais: - - - -Observação: se você precisar de uma variante da fonte HD44780UA02, [abra uma solicitação de recurso](https://github.com/wokwi/wokwi-features/issues/new) ou -entre em contato no [Discord](https://wokwi.com/discord). - -### Caracteres definidos pelo usuário - -Você pode definir caracteres personalizados usando o método [createChar](https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar) da biblioteca LiquidCrsytal (ou LiquidCrystal_I2C). Os caracteres personalizados são os primeiros 8 caracteres da fonte, com índices de 0 a 7. Você pode imprimi-los no LCD -exibir usando o método `write()`, ou usando a sequência de escape de string C, como `"\x07"`. - -O exemplo de código a seguir define um caractere em forma de coração, armazena-o no índice 3 e, em seguida, use-o para exibir o texto `"Eu ❤ Arduino"`: - -```cpp -#include - -LiquidCrystal lcd(12, 11, 10, 9, 8, 7); - -uint8_t heart[8] = { - 0b00000, - 0b01010, - 0b11111, - 0b11111, - 0b11111, - 0b01110, - 0b00100, - 0b00000, -}; - -void setup() { - lcd.createChar(3, heart); - lcd.begin(16, 2); - lcd.print(" Eu \x03 Arduino"); -} - -void loop() { } -``` - -Você também pode [executar este exemplo no Wokwi](https://wokwi.com/projects/294395602645549578). - -Você pode modificar qualquer caractere personalizado durante a execução do programa. Este método é útil para -criar simples animações. Por exemplo, mude em `loop()` no código de exemplo acima para lentamente -exibir o ícone de coração, linha por linha: - -```cpp -void loop() { - uint8_t heart2[8] = {0}; - for (int i = 0; i < 8; i++) { - heart2[i] = heart[i]; - lcd.createChar(3, heart2); - delay(100); - } - delay(500); -} -``` - -## Exemplos no simulador - -- [LiquidCrystal Hello World](https://wokwi.com/projects/294342288335700490) -- [LiquidCrystal I2C Hello World](https://wokwi.com/projects/344891772964438612) -- [LiquidCystal Custom characters](https://wokwi.com/projects/294395602645549578) -- [Electronic Safe](https://wokwi.com/projects/344891391763022419) -- [DS1307 Clock](https://wokwi.com/projects/298783436806554120) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md deleted file mode 100644 index ccbbe06..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Referência do wokwi-lcd2004 -sidebar_label: wokwi-lcd2004 ---- - -Um display LCD com 4 linhas, 20 caracteres por linha. - - - -Este componente tem os mesmos pinos e atributos do wokwi-lcd1602. - -Para **informações completas e exemplos de código**, consulte a [Referência do wokwi-lcd1602](wokwi-lcd1602). - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------------------------- | -------------------------------------------- | -| | `{ }` | -| | `{ "pins": "i2c" }` | -| | `{ "background": "blue", "color": "white" }` | - -## Exemplos no simulador - -- [LCD2004 Tiny Pacman on Wokwi](https://wokwi.com/projects/294590769009787402) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md deleted file mode 100644 index 97e2813..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Referência do wokwi-led-bar-graph -sidebar_label: wokwi-led-bar-graph ---- - -Barra Gráfica de LEDs de 10 segmentos. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ------ | ---------------------------------------------- | -| A**n** | Ânodo (pino positivo) do LED **n** (n = 1…10) | -| C**n** | Cátodo (pino negativo) do LED **n** (n = 1…10) | - -ex. A1 é o ânodo do LED superior e C1 é o cátodo do LED superior. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----- | ------------------------------------------------------------------------ | ------------- | -| color | A cor do corpo do LED ou um dos valores especiais "GYR" / "BCYR"\* | "red" | - -\* GYR significa Verde-Amarelo-Vermelho. BCYR significa Azul-Ciano-Amarelo-Vermelho - -### Exemplos - -| Resultado | Attrs | -| ----------------------------------------------------------------------- | ------------------------ | -| | `{ "color": "yellow" }` | -| | `{ "color": "#9EFF3C" }` | -| | `{ "color": "GYR"}` | -| | `{ "color": "BCYR"}` | - -## Exemplos no simulador - -- [Arduino LED Graph Bar](https://wokwi.com/projects/309829489359061570) - Mova o botão do potenciômetro para controlar os LEDs -- [Contador Binário com Raspberry Pi Pico](https://wokwi.com/projects/309828467927548481) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led.md deleted file mode 100644 index e88bf2b..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-led.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Referência do wokwi-led -sidebar_label: wokwi-led ---- - -LED 5mm padrão. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ---------------------- | -| A | Ânodo (pino positivo) | -| C | Cátodo (pino negativo) | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ---------- | ------------------------------- | ---------------------| -| color | A cor do invólucro do LED | "red" | -| lightColor | A cor da luz | depende da cor | -| label | Texto que aparece abaixo do LED | | -| gamma | Fator de correção gamma | "2.8" | -| flip | Vira o LED horizontalmente | "" | - -Nota: Para girar os LEDs, clique neles e pressione "R", ou defina a propriedade ["rotate"](../diagram-format#parts). - -### Exemplos - -| Resultado | Atributos (attrs) | -| --------------------------------------------------------- | --------------------------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#FFFF00" }` | -| | `{ "label": "Status" }` | -| | `{ "color": "white"}` | -| | `{ "color": "white", "lightColor": "orange"}` | -| | `{ "color": "red", "flip": "1"}` | - -### Correção de Gamma - -O LED aplica automaticamente a correção de gamma. Isso significa que mesmo uma explosão muito curta de corrente resultará -em alguma luz visível, semelhante a como os LEDs físicos funcionam, para que você obtenha uma simulação mais precisa nos seguintes casos: - -1. Usando `analogWrite()` com valores muito pequenos (ciclo de trabalho curto), -2. Técnicas de varredura de LED, como [Charlieplexing](https://goodarduinocode.com/guides/charlieplexing). - -Você pode desativar a correção de gamma definindo o atributo "gamma" para "1.0". Você também pode escolher um -fator gamma definindo este atributo com o valor desejado. O fator de correção de gamma padrão é "2.8". - -O [projeto de demonstração da correção de gamma](https://wokwi.com/projects/304762988710068800) mostra o comportamento de diferentes valores: o LED à esquerda tem o fator gamma padrão de "2.8", enquanto o LED à direita tem um fator gamma de "1.0". Você pode ver como valores mais baixos em `analogWrite()` parecem muito mais brilhantes no LED esquerdo. - -## Exemplos no simulador - -- [Blink](https://wokwi.com/projects/344891652101374548) - Esboço Blink padrão do Arduino diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md deleted file mode 100644 index 0738245..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Referência do wokwi-logic-analyzer -sidebar_label: wokwi-logic-analyzer ---- - -Analisador lógico digital de 8 canais - -![Analisador Lógico](wokwi-logic-analyzer.svg) - -## Nome dos Pinos - -Os pinos D0 a D7 são conectados aos canais de entrada do analisador lógico. Há também um pino GND, que deve ser conectado ao aterramento digital. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------------ | ----------------------------------------------------------------- | ------------------------- | -| bufferSize | Número máximo de amostras para coletar | "1000000" | -| channelNames | Lista separada por vírgulas de nomes de canais para o arquivo VCD | "D0,D1,D2,D3,D4,D5,D6,D7" | -| filename | Nome do arquivo de gravação, sem a extensão | "wokwi-logic" | -| triggerMode | Modo de acionamento: "off", "level" ou "edge" | "off" | -| triggerLevel | "high" ou "low" | "high" | -| triggerPin | "D0" … "D7" | "D7" | - -### Buffer de Amostras - -O analisador lógico usa um buffer para armazenar os dados dos pinos gravados. Cada mudança de nível de pino (por exemplo, baixo para alto) ocupa um slot no buffer. O simulador aloca -a memória para o buffer com antecedência, para garantir uma simulação rápida. - -Você pode escolher o tamanho do buffer definindo o atributo `bufferSize`. Cada slot no buffer usa 9 bytes de RAM. Assim, o tamanho do buffer padrão de 1 milhão de amostras usará cerca de 9 MB de RAM. Alocar um buffer grande pode sobrecarregar seu navegador. - -O analisador lógico exibe o número de amostras capturadas durante a execução da simulação. Você pode usar esse número para estimar o tamanho do buffer necessário. - -### Acionamento - -O acionamento controla quando o analisador lógico começa a registrar os dados. Por padrão, o acionamento está desligado, então o analisador lógico captura todos os dados. Você pode configurar o acionamento usando três atributos `triggerMode`, `triggerPin` e `triggerEdge`. - -A tabela a seguir resume os modos de acionamento disponíveis: - -| triggerMode | Descrição | Comportamento | -| ----------- | ---------------------- | -------------------------------------------------------------- | -| "off" | Acionamento desativado | Todos os dados são gravados | -| "edge" | Acionamento por borda | Começa a gravar quando `triggerPin` for igual a `triggerLevel` | -| "level" | Acionamento por nível | Grava apenas enquanto `triggerPin` for igual a `triggerLevel` | - -O modo "edge" começa a gravar quando `triggerPin` muda para `triggerLevel`, e continua gravando até que a simulação termine. Por exemplo, se você definir `triggerPin` para "D7" e `triggerLevel` para "alto" (seus valores por padrão), o analisador lógico começará a gravar quando o pino D7 mudar para nível alto. - -O modo "level" é mais versátil: assim como o modo "edge", ele começa a gravar quando `triggerPin` mudar para `triggerLevel`, mas irá pausar a gravação assim que `triggerPin` mudar novamente. - -Para exemplos de uso, verifique a [seção Usando o Acionamento](../guides/logic-analyzer#usando-o-acionamento) no Guia do analisador lógico. - -## Visualizando os Dados - -Quando a simulação é interrompida, o analisador lógico baixa um arquivo com as amostras registradas para o seu computador. O arquivo de gravação usa o formato padrão [Value Change Dump (VCD)](https://en.wikipedia.org/wiki/Value_change_dump). O arquivo é denominado "wokwi-logic.vcd" por padrão, mas você pode configurar o nome usando o atributo `filename`. - -Para saber como visualizar os dados, visite o nosso [Guia do Analisador Lógico](../guides/logic-analyzer#usando-o-analisador-lógico). - -## Exemplos no simulador - -[Analisador lógico gravando sinais de protocolo I2C](https://wokwi.com/projects/325933824665977428) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg deleted file mode 100644 index 23b416b..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - D0D1D2D3D4D5D6D7GND - - - - - - - LOGICbeta version - - - - - 24.2K samples - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg deleted file mode 100644 index 485ba09..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md deleted file mode 100644 index 180d3db..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Referência do wokwi-max7219-matrix -sidebar_label: wokwi-max7219-matrix ---- - -import DotMatrix from './wokwi-max7219-matrix.svg'; -import DotMatrixChain4 from './wokwi-max7219-matrix-chain-4.svg'; - -Módulo Matriz de LED 8x8 com MAX7219 - -![MAX7219 LED Dot Matrix](wokwi-max7219-matrix.svg) - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------------------ | -| VCC | Tensão de alimentação | -| GND | Terra | -| DIN | Entrada de dados | -| CS | Seletor de transferência | -| CLK | Entrada de clock | -| DOUT | Saída de dados | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | ----------------------------------------------- | ------------ | -| chain | Quantas unidades devem ser encadeadas | "1" | -| color | Cor do LED (quando aceso) | "red" | -| layout | Layout de conexão da matriz: "parola" ou "fc16" | "parola" | - -### Encadeamento - -Cada unidade matricial é uma matriz de LEDs 8x8. Todos os LEDs da matriz têm a mesma cor. Você pode tornar a exibição mais ampla definindo o atributo "chain". Por exemplo, definir "chain" como 4 encadeará quatro unidades de matriz de pontos horizontalmente, resultando em uma matriz de 32x8 (quatro vezes a matriz de 8x8). - -Se você deseja encadear unidades de uma forma personalizada (por exemplo, selecionar uma cor de pixel diferente para cada unidade, encadear-los verticalmente, etc), conecte o pino DOUT de uma unidade ao pino DIN da próxima unidade. Você também precisa conectar os pinos CLK / CS das unidades. - -Veja o [Túnel de matriz de LEDs 32x32](https://wokwi.com/projects/318864638990090834) para obter um exemplo. - -### Layout da matriz - -Existem vários tipos de layout da matriz, com base nos módulos comumente disponíveis. Você pode definir a propriedade "layout" para escolher o layout do pixel desejado: - -"parola" - Consulte a [documentação do Parola](https://majicdesigns.github.io/MD_MAX72XX/page_parola.html) para obter informações sobre o layout desses módulos -"fc16" - Os módulos FC-16 estão disponíveis no EBay e no AliExpress. Eles geralmente vêm em uma cadeia de quatro matrizes 8x8, portanto, têm no total 32x8 pixels. - -A escolha do layout incorreto fará com que seu texto / desenho seja girado e / ou espelhado. - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------ | ---------------------- | -| | `{ "color": "green" }` | -| | `{ "chain": "4" }` | - -## Exemplos no simulador - -- [Relogio Matrix de LED](https://wokwi.com/projects/289186888566178317) -- [Esboço de um jogo Etch](https://wokwi.com/projects/296234816685212169) -- [Dados Eletrônicos (no ATtiny85)](https://wokwi.com/projects/291779699024069128) -- [Gerador de código QR no Arduino](https://wokwi.com/projects/318641692720759379) -- [Túnel de matriz de LEDs 32x32](https://wokwi.com/projects/318864638990090834) -- [Rolagem de mensagem com MD_Parola](https://wokwi.com/projects/344893846000239186) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg deleted file mode 100644 index 9426947..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md deleted file mode 100644 index 6c96444..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Referência do wokwi-membrane-keypad -sidebar_label: wokwi-membrane-keypad ---- - -Um teclado 4x4 padrão. Ótimo para entrada numérica, por exemplo código PIN de segurança. - - - -## Nome dos Pinos - -| Nome | Descrição | Pino de exemplo\* | -| ---- | ------------------------ | ----------------- | -| R1 | Linha 1 (linha superior) | 9 | -| R2 | Linha 2 | 8 | -| R3 | Linha 3 | 7 | -| R4 | Linha 4 (linha inferior) | 6 | -| C1 | Coluna 1 (esquerda) | 5 | -| C2 | Coluna 2 | 4 | -| C3 | Coluna 3 | 3 | -| C4 | Coluna 4 (direita) | 2 | - -\* Esses são apenas os números de pinos do Arduino Uno usados ​​no exemplo do código abaixo. Você pode usar qualquer pino de entrada digital. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------- | ----------------------------- | -------------------------------------------------------------------------------- | -| columns | Numero de colunas: "3" ou "4" | "4" | -| keys | Rótulos para as teclas | ["1", "2", "3", "A", "4", "5", "6", "B", "7", "8", "9", "C", "*", "0", "#", "D"] | - -Você pode alterar os rótulos das teclas conforme desejar. Os primeiros quatro itens da matriz definem os rótulos para a primeira linha das teclas, o próximo -quatro itens definem os rótulos para a segunda linha das teclas, etc. Caracteres Unicode são suportados, então você pode usar caracteres especiais, -letras acentuadas, sobrescrito/subscrito (por exemplo, Xⁿ ou A₁) e até emojis. - -#### Exemplo de código Arduino - -O exemplo abaixo usa a biblioteca do teclado para Arduino. Os nomes das teclas definidos no array `keys` -define os valores que `keypad.getKey()` retorna. Eles não precisam corresponder aos rótulos das chavee reais -(mas pode ser confuso se não o fizerem) e devem conter exatamente um caractere ASCII. - -```cpp -#include - -const uint8_t ROWS = 4; -const uint8_t COLS = 4; -char keys[ROWS][COLS] = { - { '1', '2', '3', 'A' }, - { '4', '5', '6', 'B' }, - { '7', '8', '9', 'C' }, - { '*', '0', '#', 'D' } -}; - -uint8_t colPins[COLS] = { 5, 4, 3, 2 }; // Pinos conectados a C1, C2, C3, C4 -uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pinos conectados a R1, R2, R3, R4 - -Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); - -void setup() { - Serial.begin(9600); -} - -void loop() { - char key = keypad.getKey(); - - if (key != NO_KEY) { - Serial.println(key); - } -} -``` - -Você também pode tentar [este exemplo no Wokwi](https://wokwi.com/projects/294980637632233994). - -**Dica**: Você pode usar atalhos do teclado para ativar os botões. Clique no teclado uma vez (agora o teclado está em foco) e você pode pressionar 0...9/A/B/C/D/#/* no teclado para ativar a tecla de atalho correspondente. - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| | `{ }` | -| | `{ "columns": "3" }` | -| | `{ "keys": ["1","2","3","4","Q","W","E","R","A","S","D","F","Z","X","C","V"] }` | - -## Exemplos no simulador - -- [Basic Keypad example](https://wokwi.com/projects/294980637632233994) -- [Arduino Calculator](https://wokwi.com/projects/276825819240727048) -- [Electronic Safe](https://wokwi.com/projects/344891391763022419) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png deleted file mode 100644 index 7c6a6e4..0000000 Binary files a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png and /dev/null differ diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md deleted file mode 100644 index d9a9e93..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Referência do wokwi-microsd-card -sidebar_label: wokwi-microsd-card ---- - -Cartão microSD com interface SPI - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------------------| -| CD | Detecção de cartão \* | -| DO | Saída de dados SPI (MISO) | -| GND | Terra | -| SCK | Clock SPI | -| VCC | Alimentação de tensão | -| DI | Entrada de dados SPI (MOSI) | -| CS | Seletor do Chip | - -\* O pino do CD é conectado ao aterramento quando não há placa no soquete. No simulador, sempre há um cartão no soquete, então esse pino está sempre desconectado. - -## Sistema de arquivo - -Quando você inicia a simulação, o Wokwi cria um sistema de arquivos FAT16 e o ​​anexa ao cartão microSD. Por padrão, o Wokwi copia todos os seus arquivos de projeto para o cartão microSD. - -### Carregando arquivos binários - -Os usuários do [Club](https://wokwi.com) podem fazer upload de arquivos binários personalizados (por exemplo, bitmaps, sons, etc.) Depois de adicionar um cartão microSD ao seu projeto, você verá uma nova guia "Cartão SD" ao lado das outras guias no editor de código. Clique no botão azul "Fazer upload de arquivos" e selecione os arquivos que deseja enviar. - -Você também pode fazer upload de uma árvore de pastas completa (útil se você tiver um cartão SD físico conectado ao seu computador e quiser fazer upload de todos os dados dele, como-as). Clique na pequena seta ao lado do botão "Carregar arquivos" e selecione "Carregar pasta completa". Em seguida, selecione a pasta com os arquivos que deseja enviar. - - - -Wokwi armazena os arquivos enviados para você, juntamente com seu projeto. Qualquer pessoa que abrir seu projeto e iniciar a simulação terá que esperar o download de todos os arquivos do cartão micro SD antes que a simulação comece. - -Exemplo: [Projeto de cartão microSD com um arquivo bitmap personalizado](https://wokwi.com/projects/319810932695892564) - -## Exemplo de código Arduino - -O exemplo abaixo usa a popular biblioteca _SdFat_ Arduino. Ele imprime uma lista de todos os arquivos do cartão. O código assume as seguintes conexões: - -| Pino do SD | Pino do Arduino Uno | -| ---------- | ------------------- | -| SCK | 13 | -| DO | 12 | -| DI | 11 | -| CS | 10 | - -```cpp -#include "SdFat.h" - -#define SPI_SPEED SD_SCK_MHZ(4) -#define CS_PIN 10 - -SdFat sd; - -void setup() { - Serial.begin(115200); - if (!sd.begin(CS_PIN, SPI_SPEED)) { - if (sd.card()->errorCode()) { - Serial.println("SD initialization failed."); - } else if (sd.vol()->fatType() == 0) { - Serial.println("Can't find a valid FAT16/FAT32 partition."); - } else { - Serial.println("Can't determine error type"); - } - return; - } - - Serial.println("Files on card:"); - Serial.println(" Size Name"); - - sd.ls(LS_R | LS_SIZE); -} - -void loop() { -} -``` - -[Execute este exemplo no Wokwi](https://wokwi.com/projects/310692660849410626) - -## Exemplos no simulador - -- [Exemplo da biblioteca SD](https://wokwi.com/projects/310542489623724609) -- [Exemplo da biblioteca SdFat](https://wokwi.com/projects/310692660849410626) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md deleted file mode 100644 index 1684a94..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Referência do wokwi-mpu6050 -sidebar_label: wokwi-mpu6050 ---- - -Sensor integrado com acelerômetro de 3 eixos, giroscópio de 3 eixos e um sensor de temperatura com interface I2C. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | -------------------------- | -| VCC | Tensão de alimentação | -| GND | Terra | -| SCL | Linha de clock I2C | -| SDA | Linha de dados I2C | -| XDA | Não utilizado\* | -| XCL | Não utilizado\* | -| AD0 | PIN de seleção de endereço | -| INT | Interrupção\* | - -\* Esses pinos não estão implementados atualmente no simulador. Se você precisar deles, por favor [abra uma solicitação](https://github.com/wokwi/wokwi-features/issues/new). - -Normalmente, você só precisa conectar os pinos VCC, GND, SCL e SDA. O endereço I2C do dispositivo é 0x68. Você pode alterar o endereço de 0x69 conectando o pino AD0 ao VCC. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----------- | -------------------------------------- | ------------ | -| accelX | Valor inicial de aceleração x (g) | "0" | -| accelY | Valor inicial de aceleração y (g) | "0" | -| accelZ | Valor inicial de aceleração z (g) | "1" | -| rotationX | Valor inicial de rotação x (deg/sec) | "0" | -| rotationY | Valor inicial de rotação y (deg/sec) | "0" | -| rotationZ | Valor inicial de rotação z (deg/sec) | "0" | -| temperature | Valor de temperatura inicial (celsius) | "24" | - -### Unidades - -Todos os valores de aceleração (x/y/z) usam unidades de força g, onde 1g = 9,80665 m/s². O giroscópio mede a rotação angular e retorna o número de graus por segundo. - -#### Exemplo de código Arduino - -O exemplo abaixo usa a biblioteca Adafruit MPU6050 para ler e exibir os valores de aceleração do sensor. No Arduino Uno, conecte o pino SDA a A4 e o pino SCL a A5. - -```cpp -#include -#include -#include - -Adafruit_MPU6050 mpu; - -void setup(void) { - Serial.begin(115200); - - while (!mpu.begin()) { - Serial.println("MPU6050 não conectado!"); - delay(1000); - } - Serial.println("MPU6050 pronto!"); -} - -sensors_event_t event; - -void loop() { - mpu.getAccelerometerSensor()->getEvent(&event); - - Serial.print("["); - Serial.print(millis()); - Serial.print("] X: "); - Serial.print(event.acceleration.x); - Serial.print(", Y: "); - Serial.print(event.acceleration.y); - Serial.print(", Z: "); - Serial.print(event.acceleration.z); - Serial.println(" m/s^2"); - delay(500); -} -``` - -[Execute este exemplo no Wokwi](https://wokwi.com/projects/305937248748044864) - -## Exemplos no simulador -- [Plotter de aceleração MPU6050 X/Y/Z](https://wokwi.com/projects/305937156771152449) -- [Adafruit MPU6050 Demo](https://wokwi.com/projects/305936654686749250) -- [Visualização do giroscópio/aceleração 3D em um display OLED](https://wokwi.com/projects/306115576172905024) -- [Wokwi 3D "W" controlado pela rotação do giroscópio](https://wokwi.com/projects/306399551789466177) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md deleted file mode 100644 index 2da71f8..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Referência do wokwi-nlsf595 -sidebar_label: wokwi-nlsf595 ---- - -Driver de LED tricolor serial (SPI) - -![NLSF595](wokwi-nlsf595.svg) - -Use o registrador de deslocamento NLSF595 para conectar LEDs RGB que consomem muita energia ao seu microcontrolador. Uma única unidade pode controlar dois LEDs RGB e uma cadeia de duas unidades pode controlar até cinco LEDs RGB. - -## Nome dos Pinos - -| Pino | Descrição | -| ----- | ------------------------------------------------------------------ | -| SI | Entrada serial | -| SCK | Clock serial | -| RCK | Pino de armazenamento (latch) | -| OE | Saída habilitada, ativo em baixo. Conecte ao GND se não for usado. | -| QA…QH | Saída paralela | -| SQH | Saída serial\* | -| SCLR | Reset (limpa), ativo em baixo. Conecte ao VCC se não for usado | -| GND | Terra | -| VCC | Tensão de alimentação | - -\* Use o Q7S para encadear várias unidades NLSF595 juntas. Conecte o SQH ao pino SI do próximo chip NLSF595 na cadeia. - -## Usando o NLSF595 - -Você precisará conectar pelo menos 3 pinos ao seu microcontrolador: SI, SCK e RCK. - -O pino OE pode ser usado para desabilitar a saída do registrador de deslocamento. Se você precisar dessa funcionalidade, -conecte-o ao seu microcontrolador. Caso contrário, conecte-o ao terra para habilitar permanentemente a saída. - -Os pinos de saída do registrador de deslocamento, QA a QH, são conectados geralmente aos pinos de entrada do ânodo comum dos [LEDs RGB](wokwi-rgb-led). - -## Exemplos no simulador - -- [Driver NLSF595 com 2 LEDs RGB](https://wokwi.com/projects/315085666329297472) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg deleted file mode 100644 index 83a678c..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - NLSF595 - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md deleted file mode 100644 index bfd4360..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Referência do wokwi-ntc-temperature-sensor -sidebar_label: wokwi-ntc-temperature-sensor ---- - -Sensor analógico de temperatura: termistor NTC (coeficiente de temperatura negativo). - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------------------- | -| VCC | Fonte de alimentação positiva | -| OUT | Sinal de saída (analógico) | -| GND | Terra | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----------- | -------------------------------------- | ------------- | -| temperature | Valor da temperatura inicial (celsius) | "24" | -| beta | O coeficiente beta do termistor | "3950" | - -## Lendo a temperatura - -O módulo do sensor de temperatura inclui um termistor NTC de 10K em série com um resistor de 10K. - -Esta configuração produz uma voltagem que depende da temperatura. Você pode ler esta tensão através -da conexão do pino OUT do termistor a um pino de entrada analógica e, em seguida, usar a -função `analogRead()`. - -Use o seguinte código para converter o valor de retorno da função `analogRead()` em um valor de temperatura (em celsius): - -```cpp -const float BETA = 3950; // Deve corresponder ao coeficiente beta do termistor -int analogValue = analogRead(A0); -float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; -``` - -## Exemplos no simulador - -- [Exemplo básico do termistor NTC](https://wokwi.com/projects/299330254810382858) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md deleted file mode 100644 index 0e20556..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Referência do wokwi-photoresistor-sensor -sidebar_label: wokwi-photoresistor-sensor ---- - -Módulo sensor fotoresistor (LDR) - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------------------- | -| VCC | Fonte de alimentação positiva | -| GND | Terra | -| DO | Saída digital | -| AO | Saída analógica | - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------- | --------------------------------------- | -------------| -| lux | Valor do nível de iluminância (lx) | "500" | -| threshold | Tensão de limiar da saída digital (Vth) | "2.5" | -| rl10 | Resistência LDR @ 10lx (em kilo-ohms) | "50" | -| gamma | Inclinação do gráfico log(R) / log(lx) | "0.7" | - -## Operação - -O módulo do sensor fotoresistor inclui um LDR (resistor dependente de luz) em série com um resistor de 10K. O pino AO é conectado entre o LDR e o resistor de 10K. - -A tensão no pino AO depende do nível de iluminância - ou seja, a quantidade de luz que incide sobre o sensor. Você pode ler essa tensão conectando o pino AO do sensor fotorresistor a um pino de entrada analógica e, em seguida, usando a função `analogRead()`. - -Existem dois parâmetros que controlam a sensibilidade do LDR: rl10 e gama. rl10 é a resistência do LDR com nível de iluminância de 10lx. O valor gama determina a inclinação do gráfico log(R) / log(lx). Normalmente, você pode encontrar esses dois valores na folha de dados do LDR. - -A tabela a seguir mostra a relação entre o nível de iluminância (lux), resistência (R) e o nível de tensão -no pino AO quando gama = 0,7 e rl10 = 50 (os valores padrão): - -| Condição | Nível de iluminância (lux) | Resistência LDR | Tensão\* | valor analogRead() | -| ------------------------- | -------------------------- | --------------- | -------- | ------------------ | -| Lua cheia | 0.1 | 1.25MΩ | 4.96 | 1016 | -| Crepúsculo profundo | 1 | 250kΩ | 4.81 | 985 | -| Crepúsculo | 10 | 50kΩ | 4.17 | 853 | -| Monitor do computador\*\* | 50 | 16.2kΩ | 3.09 | 633 | -| Iluminação da escada | 100 | 9.98kΩ | 2.50 | 511 | -| Iluminação do escritório | 400 | 3.78kΩ | 1.37 | 281 | -| Dia nublado | 1,000 | 1.99kΩ | 0.83 | 170 | -| Luz do dia | 10,000 | 397Ω | 0.19 | 39 | -| Luz direta do sol | 100,000 | 79Ω | 0.04 | 8 | - -\* Quando VCC = 5V -\*\* Medido a um metro de distância do monitor - -O código a seguir para converter o valor de retorno de `analogRead()` em um valor de nível de iluminância (em lux): - -```cpp -// Essas constantes devem corresponder aos atributos "gama" e "rl10" do fotoresistor -const float GAMMA = 0.7; -const float RL10 = 50; - -// Converte o valor analógico em valor lux: -int analogValue = analogRead(A0); -float voltage = analogValue / 1024. * 5; -float resistance = 2000 * voltage / (1 - voltage / 5); -float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA)); -``` - -### Saída digital - -O pino de saída digital ("DO") fica em nível alto quando está escuro e baixo quando há luz. No sensor físico, você ajusta o pequeno potenciômetro integrado para definir o limite. No simulador, use o atributo "limite" para definir a tensão limite. O limite padrão é 2,5 volts ou cerca de 100 lux. - -O LED inferior ("LED DO") está conectado à saída digital e acende sempre que o pino DO fica baixo. Em outras palavras, ele acende quando o sensor é iluminado. - -### Esquemático - -![Esquemático do módulo sensor fotoresistor (LDR) Wokwi](wokwi-photoresistor-sensor.svg) - -## Exemplos no simulador - -- [Exemplo de fotoresistor digital](https://wokwi.com/projects/305193592908939842) -- [Exemplo de fotoresistor analógico](https://wokwi.com/projects/305193627138654786) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg deleted file mode 100644 index 62d1849..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - VCC - - - - - - - GND - - - - - - - - - - - - - - - - - - - - - - 1 - - 2 - - 3 - - - - - - - - - - - - PWR - LED - VCC - GND - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DO - LED - - 1 - - - - - - - - - - 3 - - - - - - - 2 - - - - - - - - - - - - LDR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DO - AO - - - - - - - - - 10K - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md deleted file mode 100644 index d62044d..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Referência do wokwi-pi-pico -sidebar_label: wokwi-pi-pico ---- - -Raspberry Pi Pico, uma placa microcontrolada RP2040 com processador ARM Cortex-M0+dual-core, 264k de RAM interna e flexível -Recurso de I/O programável (PIO). - -![Raspberry Pi Pico](wokwi-pi-pico.svg) - -## Nome dos Pinos - -Os pinos GP0 a GP22 são pinos GPIO digitais. Os pinos GP26, GP27 e GP28 são pinos GPIO digitais com função de entrada analógica. - -| Nome | Descrição | Canal de entrada analógica | -| --------------- | ----------------------------- | -------------------------- | -| GP0 … GP22 | Pinos digitais GPIO (0 a 22) | | -| GP26 | Pino digital GPIO 26 | 0 | -| GP27 | Pino digital GPIO 27 | 1 | -| GP28 | Pino digital GPIO 28 | 2 | -| GND.1 … GND.8 | Pinos de aterramento \* | | -| VSYS, VBUS, 3V3 | Fonte de alimentação positiva | | -| TP4 † | Pino digital GPIO 23 | | -| TP5 † | Pino digital GPIO 25 + LED | | - -\* Os números dos pinos físicos dos pinos de aterramento são 3, 8, 13, 18, 23, 28, 33 e 38. -† Esses pinos não aparecem no editor de diagrama visual, mas você pode usá-los em seu arquivo [diagram.json](../diagram-format). - -Os pinos 3V3_EN / RUN / ADC_VREF não estão disponíveis na simulação e, portanto, são omitidos na tabela. - -### LED integrado - -O Rasberry Pi Pico tem um LED integrado, conectado ao pino GPIO 25. O LED acende quando o pino é elevado. - -Você também pode usar a constante `LED_BUILTIN` para fazer referência ao LED em seu código Arduino: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -Veja o [Blink](https://wokwi.com/projects/297755575592157709) para um exemplo de código completo. - -## Recursos do simulador - -O Raspberry Pi Pico é simulado usando a [Biblioteca RP2040js](https://github.com/wokwi/rp2040js). -Esta tabela resume o status dos recursos da simulação: - -| Periférico | Status | Notas | -| ------------------------ | ------ | ---------------------------------------------------- | -| Núcleo do processador | ✔️ | Apenas um único núcleo é simulado | -| GPIO | ✔️ | | -| PIO | ✔️ | Não amplamente testado; PIO Debugger disponível | -| USB | ❌ | | -| UART | ✔️ | | -| I2C | ✔️ | Modo mestre apenas | -| SPI | ✔️ | Master mode only | -| PWM | ✔️ | | -| DMA | ✔️ | | -| Timer | ✔️ | A pausa do cronômetro ainda não foi implementada | -| ARM SysTick Timer | 🟡 | Implementação parcial | -| Watchdog | ❌ | | -| RTC | ❌ | | -| ADC + Sensor Temperatura | ✔️ | O sensor de temperatura sempre lê o valor 0 | -| SSI | 🟡 | Apenas o mínimo para deixar o bootloader feliz | -| GDB Debugging | ✔️ | Consulte o [Guia de depuração GDB](../gdb-debugging) | - -Legenda: -✔️ Simulado -🟡 Implementação parcial/trabalho em andamento -❌ Não implementado - -### Arduino core - -O núcleo do Arduino fornece as funções integradas do Arduino, como `pinMode()` e `digitalRead()`, bem como um conjunto de bibliotecas padrão do Arduino, como Servo, Wire e SPI. - -Ao compilar seu código para o Raspberry Pi Pico, você pode escolher entre dois núcleos diferentes: - -- O [núcleo oficial do Pi Pico](https://github.com/arduino/ArduinoCore-mbed), baseado no sistema operacional Mbed. Este é o padrão. -- [Mantido pela comunidade Pi Pico Arduino Core](https://github.com/earlephilhower/arduino-pico), construído sobre o [Pi Pico SDK](https://github.com/raspberrypi/pico-sdk). - -Você pode aprender sobre as principais diferenças entre esses dois núcleos [neste comentário do GitHub](https://github.com/earlephilhower/arduino-pico/issues/117#issuecomment-830356795). - -Para selecionar um núcleo, defina o atributo "env" da parte `wokwi-pi-pico`. Para o núcleo oficial do Arduino, use o valor "arduino-core". Para o núcleo mantido pela comunidade, defina "env" como "arduino-community". por exemplo.: - -```json - "parts": [ - { - "type": "wokwi-pi-pico", - "id": "pico", - "attrs": { - "env": "arduino-community" - } - … - }, - … - ] -``` - -### Monitor Serial - -Você pode usar o Serial Monitor para receber informações do código em execução no Pi Pico, como impressões de depuração. Para configurar a conexão do monitor serial com o Raspberry Pi Pico, adicione as seguintes conexões ao seu arquivo [diagram.json](../diagram-format#onnections): - -```json - "connections": [ - [ "$serialMonitor:RX", "pico:GP0", "", [] ], - [ "$serialMonitor:TX", "pico:GP1", "", [] ], - … - ] -``` - -O exemplo assume que o Pi Pico foi definido com um id de "pico", por ex. - -```json - "parts": [ - { - "type": "wokwi-pi-pico", - "id": "pico", - … - }, - … - ] -``` - -Para inicializar o monitor Serial em seu código, use `Serial1.begin(115200)`, e então imprima as mensagens com `Serial1.println()`. Por exemplo: - -```cpp -void setup() { - Serial1.begin(115200); - Serial1.println("Hello, world!"); -} - -void loop() { } -``` - -Observe o uso de `Serial1`. O `Serial` padrão no Arduino Core usa Serial over USB (CDC), que atualmente não é suportado na simulação. `Serial1`, em contraste, usa o hardware UART (conectado aos pinos GP0/GP1). - -Para um exemplo completo, confira o [Exemplo de monitor serial Pi Pico](https://wokwi.com/projects/297755360074138125). - -## Exportando binário UF2 - -Você pode carregar o programa do emulador diretamente em uma placa física Raspberry Pi Pico. As etapas são: - -1. Pressione "F1" no editor de código Wokwi e selecione "Download UF2 Binary". - O download deve começar em alguns segundos. -2. Inicie seu Pi Pico no modo bootloader. Você pode fazer isso pressionando o botão do carregador de boot enquanto estiver - conectando o Pi Pico na porta USB do seu computador. -3. Você deve ver uma nova unidade aparecer em seu computador (chamada "RPI-RP2"). Copie o arquivo UF2 que você baixou para essa unidade. - -## MicroPython Suporte - -O Raspberry Pi Pico oferece suporte a MicroPython e você pode usá-lo para executar projetos MicroPython no Wokwi. Para obter mais informações, consulte o [Guia MicroPython](../guides/micropython). - -## Exemplos no simulador - -- [LCD1602 com Pi Pico](https://wokwi.com/projects/297323005822894602) -- [Semáforo com Pi Pico](https://wokwi.com/projects/297322571959894536) -- [Pi Pico C++ SDK Blink](https://wokwi.com/projects/298013072042230285) -- [Pi Pico C++ SDK 7-Segment Example](https://wokwi.com/projects/298014884249993738) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg deleted file mode 100644 index 8abea95..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B - O - O - T - S - E - L - - - L - E - D - 1 - 2 - 3 - 9 - U - S - B - - - - R - a - s - p - b - e - r - r - y - P - i - P - i - c - o - © - 2 - 0 - 2 - 0 - - - R - P - 2 - - - 8 - 0 - 2 - 0 - / - 2 - 1 - P - 6 - 4 - M - 1 - 5 - . - 0 - 0 - T - T - T - - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md deleted file mode 100644 index e59fe49..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Referência do wokwi-pir-motion-sensor -sidebar_label: wokwi-pir-motion-sensor ---- - -Sensor de movimento infravermelho passivo (PIR). - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------------------- | -| GND | Terra | -| OUT | Saída (digital) | -| VCC | Fonte de alimentação positiva | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----------- | ---------------------------------------------------------------------------------------- | ------------- | -| delayTime | O número de segundos em que o pino OUT permanecerá alto | "5" | -| inhibitTime | O número de segundos que o sensor irá ignorar o movimento quando OUT retornar para baixo | "1.2" | -| retrigger | Defina como "0" para desativar a reativação | "" | - -## Usando o sensor - -Para acionar o sensor de movimento PIR: - -1. Selecione o sensor clicando nele (enquanto a simulação está em execução). -2. Uma pequena janela pop-up será aberta. Clique em "Simular movimento". - -O acionamento do sensor colocará o pino OUT em nível alto por 5 segundos (tempo de atraso), -e, em seguida, em nível de sinal baixo novamente. O sensor irá ignorar qualquer entrada adicional nos -próximos 1,2 segundos (tempo de inibição) e, em seguida, começara a detectar o movimento novamente. - -Você pode ajustar a duração em nível alto do pino OUT definindo no atributo delayTime -(em um sensor físico, é utilizado um potenciômetro para definir o atraso). - -A configuração padrão do sensor é para reativar: o sensor continua verificando -algum movimento enquanto o pino OUT estiver em nível alto. Isso estenderá o tempo de atraso a cada -vez que outro evento de movimento é detectado. Você pode desativar esse comportamento através -da definição do atributo "retrigger" para "0". - -## Exemplos no simulador - -- [Exemplo do sensor PIR (da AdaFruit)](https://wokwi.com/projects/299284655047180808) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md deleted file mode 100644 index 4c129a6..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Referência do wokwi-potentiometer -sidebar_label: wokwi-potentiometer ---- - -Resistência variável controlada por botão (potenciômetro linear) - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | --------------------------------------------- | -| GND | Terra | -| SIG | Saída, conecte a um pino de entrada analógica | -| VCC | Tensão de alimentação | - -Nota: Wokwi **não** suporta simulação analógica totalmente, então você terá o mesmo -resultado se não conectar os pinos GND/VCC. - -Isso pode mudar no futuro, então é uma boa ideia conectar o GND/VCC de qualquer maneira. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----- | ---------------------------------------------- | ------------- | -| value | Valor inicial do potenciômetro, entre 0 e 1023 | "0" | - -## Usando o potenciômetro no Arduino - -Conecte o pino SIG a um dos pinos de entrada analógica do Arduino (A0, A1, ...). Em seguida, use a função `analogRead()` para ler o valor atual do potenciômetro. - -O exemplo de código a seguir assume que o potenciômetro está conectado a A0. -Ele lerá e imprimirá o valor atual do potenciômetro a cada 100 milissegundos: - -```cpp -void setup() { - Serial.begin(115200); - pinMode(A0, INPUT); -} - -void loop() { - int value = analogRead(A0); - Serial.println(value); - delay(100); -} -``` - -Você pode [executar o exemplo no Wokwi](https://wokwi.com/projects/298685457758159369). Observe como o gráfico da plotter muda conforme você move o botão do potenciômetro. - -## Controle no teclado - -Você pode controlar o potenciômetro com o teclado: - -- Seta Esquerda / Seta Direita - movimento fino -- Page Up / Page Down - movimento aproximado -- Home / End - move para o início (0) ou para o final (1023) do intervalo - -Você precisará clicar no potenciômetro antes de usar esses atalhos de teclado. - -## Exemplos no simulador - -- [Knob](https://wokwi.com/projects/344892191015961170) - Controle um [servo](wokwi-servo) com um potenciômetro -- [Plot](https://wokwi.com/projects/298685457758159369) - Plotar valores de potenciômetro no Serial Plotter -- [Block shooter](https://wokwi.com/projects/291960996581343753) - Jogo estilo breakout diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg deleted file mode 100644 index 5f7a84e..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.l - 2.l - 1.r - 2.r - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md deleted file mode 100644 index 62c1d03..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Referência do wokwi-pushbutton -sidebar_label: wokwi-pushbutton ---- - -Botão interruptor tátil de 12 mm (botão momentâneo). - - - -## Nome dos Pinos - -| Nome | Descrição | -| --------- | ------------------------------------- | -| 1.l / 1.r | Primeiro contato (esquerda / direita) | -| 2.l / 2.r | Segundo contato (esquerda / direita) | - -O botão de pressão tem dois conjuntos de pinos (contatos), 1 e 2. -Quando o botão é pressionado, ele conecta esses dois contatos, fechando assim um circuito elétrico. - -Cada contato tem um pino do lado esquerdo do botão e outro pino do lado direito do botão. -Portanto, o pino `1.l` é o pino esquerdo para o primeiro contato e` 1.r` é o pino direito para o primeiro contato. Uma vez que ambos pertencem -para o mesmo contato, eles estão sempre conectados, mesmo quando o botão não é pressionado. - -O diagrama a seguir ilustra as conexões dentro do botão momentâneo: - -![Diagrama de conexão do botão momentâneo](wokwi-pushbutton-diagram.svg) - -Ao trabalhar com o Arduino, você normalmente conecta um contato (por exemplo, `1.r` ou` 1.l`) a um pino digital e configura -aquele pino como `INPUT_PULLUP`, e o outro contato (ex: `2.r` ou `2.l`) para o terra. O pino digital irá ler -`BAIXO` quando você pressiona o botão e` ALTO` quando o botão não é pressionado. - -## Atributos - -| Name | Descrição | Valor padrão | -| ------ | ----------------------------------------- | ------------- | -| color | A cor do botão momentâneo | "red" | -| label | Texto que aparece abaixo do botão | "" | -| key | Tecla de atalho para o botão | | -| bounce | Defina como "0" para desativar o bouncing | "" | - -### Definindo uma tecla de atalho - -Você pode usar o atributo "key" para definir uma tecla do teclado para controlar um botão. -Essa tecla só estara disponível quando a simulação estiver em execução e o diagrama em foco. - -Por exemplo, suponha que você definiu "key" para "Q". Então, quando você executa a simulação e -ao pressionar _Q_ no teclado o botão será pressionado. O botão será mantido -no estado pressionado, desde que você mantenha pressionado _Q_, e uma vez que você solte a tecla, -o botão também será solto. - -Você pode definir qualquer atalho do teclado alfanumérico (portanto, letras e números em Inglês), e para letras, -o valor de "key" não diferencia maiúsculas de minúsculas (então "q" e "Q" significam o mesmo). - -Você também pode direcionar algumas teclas especiais, como "Escape", "ArrowUp", "F8", "" (space) ou "PageDown", mas algumas teclas -pode ser bloqueadas pelo navegador (por exemplo, "F5" que atualiza a página). -A lista completa de nomes de chaves pode ser encontrada [aqui](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). -Observe que o nome de chaves especiais diferenciam maiúsculas de minúsculas - portanto, "Escape" funcionará, "escape" não. - -Usuários do Firefox: se os atalhos do teclado não funcionarem, certifique-se de que a configuração "Pesquisar texto ao começar a digitar" esteja desabilitada. - -### Bouncing - -Quando você pressiona um botão físico, o circuito abre e fecha dezenas ou até mesmo centenas de vezes. -Este fenômeno é denominado de Bouncing. Isso acontece devido à natureza mecânica dos botões de pressão: -quando os contatos de metal se juntam, há um breve período em que o contato não é perfeito, o que -causa uma série de transições de abertura/fechamento rápidas. - -O Wokwi simula o bouncing do botão por padrão. Você pode desativar a simulação de bouncing definindo o -atributo "bounce" para "0": - -`{ "bounce": "0" }` - -A simulação de salto segue o comportamento descrito em "The Art of electronics" por Horowitz & Hill: - -> Quando a chave é fechada, os dois contatos realmente se separam e se reconectam, normalmente 10 a 100 -> vezes durante um período de cerca de 1ms. - -Por exemplo, [este projeto mostra a diferença de botão com bouncing e sem bouncing](https://wokwi.com/projects/288681423014986248). -Ele tem dois botões conectados ao mesmo pino de entrada do Arduino: - -- O botão azul simula sem o bouncing. Pressionando uma vez só imprimirá um único par de mensagens "pressionado" e "liberado". -- O botão vermelho simula o bouncing. Pressionando uma vez imprimirá várias mensagens "pressionado" e "liberado". - -### Contato de selo - -Se quiser que o botão permaneça pressionado, clique com a tecla Ctrl pressionada (Cmd-clique no Mac). Isso fará com que o botão permaneça pressionado até o próximo clique. -Isso é útil quando você precisa que vários botões sejam pressionados ao mesmo tempo. - -### Exemplos - -| Resultado | Atributos (attrs) | -| --------------------------------------- | --------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#FFFF00" }` | -| | `{ "label": "Pressione!" }` | - -## Exemplos no simulador - -- [Simon Game](https://wokwi.com/projects/344891334169985618) - Um jogo de memória com 4 botões momentâneo -- [Diatonic Piano](https://wokwi.com/projects/291958456169005577) - Um piano de 8 notas, use as teclas 1 a 8 para pressionar os botões e tocar as notas. -- [Bounce vs non-bounce](https://wokwi.com/projects/288681423014986248) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.md deleted file mode 100644 index 695552a..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Referência do wokwi-relay-module -sidebar_label: wokwi-relay-module ---- - -Interruptor eletromecânico - -![Relay-Module](wokwi-relay-module.svg) - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ---------------------------------------------------- | -| VCC | Tensão de alimentação | -| GND | Terra | -| IN | Sinal de controle (por exemplo, do microcontrolador) | -| NC | Normalmente fechado | -| COM | Pino comum | -| NO | Normalmente aberto | - -## Operação - -O relé é um interruptor eletrônico. - -Quando o pino `IN` está baixo / desconectado, `COM` é conectado a `NC` (NC significa normalmente fechado). - -Quando o pino `IN` é alto, `COM` é conectado a `NO` (NO significa normalmente aberto). - -## Exemplos no simulador - -- [Um módulo de relé controlando dois LEDs](https://wokwi.com/projects/347308007359513172) - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.svg deleted file mode 100644 index 34e1162..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-relay-module.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - NO - - - - VCC - - - GND - - - IN - - - - COM - - - NC - - - - - - - - - - - - - - - - - LED1 - - - - - - P - WR - - - - - Relay - Module - - - - \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md deleted file mode 100644 index 50b7018..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Referência do wokwi-resistor -sidebar_label: wokwi-resistor ---- - -Um resistor. - - - -:::warning ALERTA -Wokwi tem apenas uma simulação de circuito analógico muito básica. Você não será capaz de usar resistores junto com -componentes analógicos (por exemplo, potenciômetro ou sensor de temperatura NTC). Você ainda pode usar os resistores como -pull-up/pull-down externos. -::: - -## Nome dos Pinos - -| Pino | Descrição | -| ---- | ------------- | -| 1 | Primeiro pino | -| 2 | Segundo pino | - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----- | -------------------- | ------------ | -| value | Resistência, em ohms | "1000" | - -### Exemplos - -| Resultado | Attrs | -| ----------------------------------- | ------------------------- | -| | `{ "value": "1" }` | -| | `{ "value": "220" }` | -| | `{ "value": "10000000" }` | - -Confira a [demonstração do resistor por Koepel](https://wokwi.com/projects/300936732038136328) para mais exemplos. - -## Exemplos no simulador - -- [Resistor externo pull-down](https://wokwi.com/projects/302214836102627848) - Como usar um resistor como pull-down para um botão diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md deleted file mode 100644 index 1a15f5c..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Referência do wokwi-rgb-led -sidebar_label: wokwi-rgb-led ---- - -LED 5mm vermelho, verde e azul (RGB). - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ------------ | -| R | LED vermelho | -| G | LED verde | -| B | LED azul | -| COM | Pino comum\* | - -\* Por padrão, o pino comum é o ânodo (positivo). Você pode alterá-lo definindo o atributo "common" para "cathode" (negativo). - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | ------------------------------------------ | ------------ | -| common | O tipo do pino comum: "cathode" ou "anode" | "anode" | - -## Exemplos no simulador - -- [LED RGB com 3 controles deslizantes lineares](https://wokwi.com/projects/306455554559050306) -- [LED RGB pulsante suave](https://wokwi.com/projects/306461175146611264) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md deleted file mode 100644 index 59528b7..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Referência do wokwi-servo -sidebar_label: wokwi-servo ---- - -Um Motor Micro Servo padrão - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | -------------------------- | -| PWM | Sinal de controle do Servo | -| V+ | Tensão positiva (5V) | -| GND | Terra | - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------- | --------------------------------------------- | ------------- | -| horn | Tipo de hélice: "single", "double" ou "cross" | "single" | -| hornColor | A cor da hélice do servo | "#ccc" | - -### Exemplos - -| Resultado | Atributos (attrs) | -| -------------------------------- | ---------------------------- | -| | `{ "horn": "single" }` | -| | `{ "hornColor": "#000088" }` | -| | `{ "horn": "double" }` | -| | `{ "horn": "cross" }` | - -## Exemplos no simulador - -- [Sweep](https://wokwi.com/projects/344891730528567891) -- [ESP32 Servo Sweep](https://wokwi.com/projects/323706614646309460) -- [Knob](https://wokwi.com/projects/344892191015961170) -- [Controlando 1 servo com dois botões no Arduino Nano](https://wokwi.com/projects/328312829780165204) -- [Controlando 5 servos com Arduino Uno](https://wokwi.com/projects/305087394119418434) -- [Animando 32 servos com Arduino Mega](https://wokwi.com/projects/305336312628511297) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md deleted file mode 100644 index 0fe917f..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Referência do wokwi-slide-potentiometer -sidebar_label: wokwi-slide-potentiometer ---- - -Resistência variável deslizante (potenciômetro linear) - - - -A funcionalidade e pinagem do potenciômetro deslizante são as mesmas do potenciômetro linear. Confira a [documentação do potenciômetro wokwi](wokwi-potentiometer) para maiores informações. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------ | -| value | Valor inicial do potenciômetro, entre 0 e 1023 | "0" | -| travelLength | Comprimento do percurso da ponta (mm). Controla a largura do potenciômetro.
Valores comuns: "15", "20", "30", "45", "60", "100" | "30" | - -### Exemplos - -| Resultado | Attrs | -| ------------------------------------------------ | --------------------------- | -| | `{ "travelLength": "15" }` | -| | `{ "travelLength": "60" }` | -| | `{ "travelLength": "100" }` | - -## Exemplos no simulador - -- [Potenciômetro deslizante + Servo](https://wokwi.com/projects/297604176384360973) - Controle um [servo](wokwi-servo) com um potenciômetro deslizante diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg deleted file mode 100644 index c13e279..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - Left - Position - - - - - - - - - - - - - - 1 - 2 - 3 - - - Right - Position - - - - - - - - - - - - - 1 - 2 - 3 - - - diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md deleted file mode 100644 index 4c26527..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Referência do wokwi-slide-switch -sidebar_label: wokwi-slide-switch ---- - -Interruptor deslizante padrão (SPDT) Single Pole Double Throw. - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------- | -| 1 | Terminal esquerdo | -| 2 | Terminal comum | -| 3 | Terminal direito | - -O interruptor deslizante tem três pinos. O pino 2 (no meio) é o pino comum. Dependendo da posição -da manopla da chave, ele é conectado ao pino 1 ou 3: - -| Posição da chave | Descrição | -| ---------------- | ---------------------- | -| Esquerda | Conecta os pinos 1 e 2 | -| Direita | Conecta os pinos 3 e 2 | - -O diagrama a seguir ilustra as conexões dentro da chave deslizante. Você pode ver o contato cinza deslizado -que se move junto com a manopla da chave e cria uma conexão entre o pino 2 e o pino 1 ou 3: - -![Diagrama de conexão do interruptor deslizante](wokwi-slide-switch-diagram.svg) - -## Atributos - -| Nome | Descrição | Valor padrão | -| ------ | ------------------------------------------------------------------------------------- | ------------ | -| value | Posição inicial do interruptor deslizante:
"" para a esquerda, "1" para a direita | "" | -| bounce | Defina como "0" para desativar o bouncing | "" | - -### Bouncing - -Quando você move uma chave deslizante física, o circuito abre e fecha dezenas ou centenas de vezes. -Este fenômeno é chamado de [Bouncing](wokwi-pushbutton#bouncing). - -O Wokwi simula o bouncing do interruptor por padrão. Você pode desativar a simulação de bouncing para interruptores individuais, definindo o atributo "bounce" para "0": - -`{ "bounce": "0" }` - -## Exemplos no simulador - -- [Slide Switch and LED](https://wokwi.com/projects/288276100805558797) - Usando um botão deslizante para alternar um LED -- [Slide Switch and 2 LEDs](https://wokwi.com/projects/288278249939665421) - Um interruptor deslizante que alterna entre 2 LEDs -- [Digital Pin Output Switching](https://wokwi.com/projects/292033853022798344) - Um interruptor deslizante que redireciona a saída de um pino digital para um dos dois LEDs diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md deleted file mode 100644 index e82b22d..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Referência do wokwi-ssd1306 -sidebar_label: wokwi-ssd1306 ---- - -Display OLED monocromático 128x64 com interface I2C - - - -Nota: esta parte foi descontinuada. Em vez disso, use [board-ssd1306](./board-ssd1306). - -## Nome dos Pinos - -| Nome | Descrição | Pino do Arduino Uno | -| ----------- | ------------------------ | ------------------- | -| DATA | Linha de dados I2C (SDA) | A4 | -| CLK | Linha de clock I2C (SCL) | A5 | -| DC, RST, CS | Não utilizado\* | - | -| 3V3 | Saída regulada de 3,3 V | - | -| GND | Terra | GND | -| VIN | Tensão de alimentação | 5V | - -\* DC, RST e CS são para o modo SPI. A simulação do SSD1306 suporta apenas o modo I2C, portanto, esses pinos não são funcionais. - -O endereço I2C padrão do módulo SSD1306 é 0x3c (60). - -## Atributos - -| Nome | Descrição | Valor padrão | -| ---------- | ----------------------- | ------------ | -| i2cAddress | Endereço I2C do display | "0x3c" | - -## Exemplos no simulador - -Veja [board-ssd1306](board-ssd1306#simulator-examples). diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md deleted file mode 100644 index c9c97f4..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Referência do wokwi-stepper-motor -sidebar_label: wokwi-stepper-motor ---- - -Um motor de passo bipolar - - - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | -------------------------- | -| A- | Sinal positivo da bobina A | -| A+ | Sinal negativo da bobina A | -| B+ | Sinal positivo da bobina B | -| B- | Sinal negativo da bobina B | - -## Atributos - -| Nome | Descrição | Valor padrão | -| --------- | --------------------------------------------------------------------------------------------------------------------- | ------------- | -| arrow | Exibe uma seta para indicar a posição do motor de passo. Defina a cor da seta, por ex. "orange" | "" | -| display | Qual número exibir no motor de passo? Valores válidos "steps" (em passos), "angle" (em graus), "none" (nenhum) | "steps" | -| gearRatio | A relação de transmissão do motor. defina como "1:1" para 200 passos/revolução, "2:1" para 400 passos/revolução, etc. | "1:1" | -| size | O tamanho padrão do motor NEMA. Valores válidos: "8", "11", "14", "17", "23", "34" | "23" | - -### Exemplos - -| Resultado | Attrs | -| --------------------------------------------------------------------- | ------------------------ | -| | `{ "size": "17" }` | -| | `{ "display": "steps" }` | -| | `{ "display": "angle" }` | -| | `{ "display": "none" }` | -| | `{ "arrow": "orange" }` | - -## Usando o motor de passo - -Ao usar um motor de passo, você precisa de um driver que possa fornecer grandes quantidades de corrente às bobinas do motor. Wokwi suporta a [placa de driver A4988] (wokwi-a4988). Você também pode conectar o motor de passo diretamente ao seu microcontrolador. O Wokwi usa um mecanismo de simulação digital, portanto, a corrente da bobina não é levada em consideração. - -Você pode usar uma variedade de bibliotecas do Arduino para controlar o motor de passo: Stepper, AccelStepper, etc. - -### Comportamento da Simulação - -O motor de passo se move 1,8 graus por passo (200 passos por revolução). O motor também suporta meio passo (0,9 graus por passo / 400 passos por revolução). Você pode até usar micropassos menores (por exemplo, 1/4 ou 1/8 de passo), mas o motor simulado exibe apenas o ângulo em resolução de meio passo. Para obter mais informações, consulte a [tabela de configuração de microstepping A4988](wokwi-a4988#microstepping-configuration). - -## Exemplos no simulador - -- [Motor de passo usando a biblioteca Arduino Stepper](https://wokwi.com/projects/327324886912467538) -- [Controle direto do motor (sem biblioteca)](https://wokwi.com/projects/327360139702043220) -- [Controle avançado com potenciômetro e a biblioteca AccelStepper](https://wokwi.com/projects/327381547863769683) -- [Controle manualmente o motor de passo usando interruptores e relés](https://wokwi.com/projects/327424914940232274) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md deleted file mode 100644 index 72c4067..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Referência do wokwi-tm1637-7segment -sidebar_label: wokwi-tm1637-7segment ---- - -Módulo display de LED sete segmentos com interface TM1637 de 4 fios - -![Wokwi TM1637 Sete Segmentos](wokwi-tm1637-7segment.svg) - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | --------------------- | -| CLK | Entrada de clock | -| DIO | Entrada de dados \* | -| VCC | Tensão de alimentação | -| GND | Terra | - -\* O pino DIO também é usado para reconhecer os dados recebidos do microcontrolador, colocando-o em nível lógico baixo para um ciclo de clock específico. - -## Atributos - -| Nome | Descrição | Valor padrão | -| ----- | -------------------------- | ------------ | -| color | A cor dos LEDs do segmento | "red" | - -## Usando o display de 7 segmentos - -Esta variante do display de sete segmentos usa o chip TM1637. Você só precisará de 2 pinos do microcontrolador para se comunicar com ele. - -O protocolo de comunicação TM1637 não é padrão. Assemelha-se ao protocolo I2C, mas é mais simples e incompatível com o I2C. Felizmente, você pode usar uma biblioteca e não se preocupar com a implementação do protocolo. Aqui estão algumas bibliotecas TM1637 que você pode usar no Arduino: [RT1637_RT](https://github.com/RobTillaart/TM1637_RT), Módulo Display 4 Digitos Grove. - -## Exemplos no simulador - -- [Contador com TM1637](https://wokwi.com/projects/339227323398095442) -- [Três displays TM1637](https://wokwi.com/projects/356661328560439297) -- [Termômetro com TM1637 (MicroPython no Pi Pico)](https://wokwi.com/projects/339373435833549395) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg deleted file mode 100644 index 424ace8..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - 4-Digit Display - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md deleted file mode 100644 index d085bc6..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Referência do wokwi-tv -sidebar_label: wokwi-tv ---- - -Tela de TV analógica (PAL) em preto e branco. - -![Wokwi TV](wokwi-tv.svg) - -## Nome dos Pinos - -| Nome | Descrição | -| ---- | ----------------------- | -| IN | Sinal de dados (imagem) | -| SYNC | Sinal de sincronização | -| GND | Terra | - -## Operação - -A resolução da simulação da TV no padrão PAL (Phase Alternating Line) é de 768x576 pixels e a proporção da imagem é 4:3. - -O vídeo na codificação PAL usa sinal analógico. O sinal é transportado pelo ar ou por meio de um cabo. Um dos padrões de cabeamento comum é o vídeo composto, que combina os dados de pixel junto com os sinais de sincronização e os dados de cor em um único fio. - -A Wokwi TV não oferece suporte a informações de cores e separa os dados de pixel dos sinais de sincronização. A separação dos sinais facilita a geração da imagem por meio de um microcontrolador digital. - -Use o pino _IN_ para os dados de pixel e o pino _SYNC_ para os pulsos de sincronização. A biblioteca Arduino [TVout](https://github.com/pkendall64/arduino-tvout) pode controlar esses sinais para você. - -### Sincronização do sinal - -O simulador imita as temporizações no padrão PAL para os sinais a 25 quadros por segundo. Os quadros são entrelaçados: cada quadro é dividido em duas partes, chamadas "campos". O primeiro campo contém as linhas ímpares e o segundo campo contém as linhas pares. Cada quadro leva 40ms e cada campo leva 20ms (metade da duração de um quadro). - -Cada quadro é dividido em 625 slots de tempo de 64µS. Cada intervalo de tempo contém os dados de pixel para uma única linha, mas algumas dessas linhas estão vazias - seu único uso é para sincronização. - -O simulador espera que cada campo (meio quadro) comece com pelo menos um pulso de sincronização de ~z30uS. Isso significa que você deve manter a linha SYNC baixa por cerca de 30 µS. O padrão PAL dita uma série específica de pulsos de sincronização, -mas o simulador é bastante flexível: funciona bem mesmo com um único pulso de ~30uS. - -Cada linha também deve começar com um pulso de sincronização curto de 4uS. Mantenha o sinal de DADOS baixo durante esses pulsos de sincronização. - -O [Analisador Lógico](../guides/logic-analyzer) é muito útil para depurar os sinais de TV na codificação PAL. - -## Conexão física da TV - -O padrão PAL usa um sinal analógico. Ao executar no simulador, você não precisa se preocupar com isso, mas se quiser executar o jogo em uma TV física, será necessário gerar os seguintes níveis de voltagem: - -- 0V para sinais de sincronização (HSYNC/VSYNC) -- 0,3V para pixels pretos -- 1V para pixels brancos - -A boa notícia é que você só precisa de alguns resistores para converter o sinal digital (que funciona no simulador) em analógico. - -O vídeo composto geralmente usa conectores RCA. Você precisaria fazer as seguintes conexões ao pino central do conector RCA: - -1. Pino SYNC através de um resistor de 1KΩ\* -2. Pino DATA através de um resistor 470Ω\* -3. Opcionalmente, outro resistor de 75Ω que vai para o terra (o resistor geralmente já está embutido no circuito do receptor de TV). - -\* se você usar uma placa de 3,3V (como o [Raspberry Pi Pico](wokwi-pi-pico)), use um resistor de 470Ω para SYNC e outro de 270Ω para DATA. - -Certifique-se também de conectar o aterramento ao anel do conector RCA. - -Como é que isso funciona? Implementamos um divisor de tensão simples para gerar as tensões necessárias, com base nos dois níveis de pinos digitais: - -| SYNC | DATA | Voltagem de saída | Cálculo | -| ---------- | --------- | ----------------- | --------------------------------------------- | -| Alto (5V) | Alto (5V) | 0,95 | (5\*75)/((1/(1/1000+1/470))+75) | -| Baixo (5V) | Baixo | 0,304 | (5\*(1/(1/75+1/470)))/(1000+(1/(1/75+1/470))) | -| Alto | Baixo | 0 | 0 | - -Como você pode ver, manter tanto SYNC/DATA em sinal alto resulta em cerca de 1V, o nível de pixel branco, mantendo SYNC alto e DATA baixo resulta em cerca de 0,3 V, o nível de pixel preto, e direcionando ambos os pinos baixos resulta em 0 volts, que é o nível de sincronização. - -Em teoria, usando esta configuração e direcionando DATA em alto enquanto o SYNC está baixo, você também pode gerar um nível de pixel cinza (~ 0,65V), mas isso não é atualmente suportado pelo simulador. - -## Exemplo de código Arduino - -Um exemplo simples que desenha um círculo usando a biblioteca TVout: - -```cpp -// Conecte SYNC ao pino 9 e IN ao pino 7 do Arduino - -#include - -TVout TV; - -void setup() { - TV.begin(PAL, 120, 96); - TV.clear_screen(); - TV.draw_circle(60, 48, 32, WHITE); -} - -void loop() { -} -``` - -## Exemplos no simulador - -- [TVout demo reel](https://wokwi.com/projects/301776607665717769) -- [Jogo Flappy Cat](https://wokwi.com/projects/286182458416693768) - Use o botão azul para pular -- [Arduino Pong para Wokwi TV](https://wokwi.com/projects/290059909639176713) -- [Conway's Game of Life](https://wokwi.com/projects/299605461742649864) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg b/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg deleted file mode 100644 index d54f8c3..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/debugging.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/debugging.md deleted file mode 100644 index 0fdda91..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/debugging.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Depurando seu código -sidebar_label: Depurando ---- - -Você pode depurar seu código enquanto ele está sendo executado na simulação usando o depurador VS Code. Para configurar o depurador, siga estas etapas: - -## Configure o Wokwi - -Adicione a seguinte linha à seção `[wokwi]` de seu arquivo de configuração `wokwi.toml`: - -```toml -gdbServerPort=3333 -``` - -## Configure o VS Code - -Crie um arquivo de configuração de inicialização para o VS Code em `.vscode/launch.json`. Aqui está um modelo que você pode usar: - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Wokwi GDB", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/build/your-firmware.elf", - "cwd": "${workspaceFolder}", - "MIMode": "gdb", - "miDebuggerPath": "/usr/local/bin/xtensa-esp32-elf-gdb", - "miDebuggerServerAddress": "localhost:3333" - } - ] -} -``` - -Substitua o caminho `program` pelo caminho para o arquivo ELF do seu firmware e o `miDebuggerPath` pelo caminho para um executável GDB que suporte a arquitetura do seu projeto (por exemplo, para projetos AVR, use `avr-gdb`). - -## Inicie o depurador - -Inicie o simulador Wokwi pressionando **F1** e selecionando a opção "**Wokwi: Start Simulator and Wait for Debugger**". O simulador será carregado, mas o programa ficará em pausa, aguardando a conexão do depurador. Em seguida, pressione **F5** para iniciar o depurador. - -:::warning Aviso -Você precisa iniciar o Wokwi antes de iniciar o depurador. Se você iniciar o depurador primeiro, ele não conseguirá se conectar ao simulador. -::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/getting-started.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/getting-started.md deleted file mode 100644 index e94ea53..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/getting-started.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Introdução ao Wokwi para VS Code -sidebar_label: Iniciando ---- - -Wokwi for Visual Studio Code fornece uma solução de simulação para engenheiros de sistemas embarcados e IoT. A extensão se integra ao seu ambiente de desenvolvimento existente, permitindo que você simule seus projetos diretamente do seu editor de código. - -Você pode usar Wokwi para VS Code com Zehpyr Project, PlatformIO, ESP-IDF, Pi Pico SDK, NuttX, Rust, Arduino CLI e outras estruturas e cadeias de ferramentas de desenvolvimento incorporadas. - -:::warning Aviso -Wokwi for VS Code está atualmente em beta público. Após a versão beta, alguns recursos estarão disponíveis apenas para usuários pagos. -::: - -
- -
Wokwi para VS Code executando um projeto ESP-IDF
-
- -## Instalação - -Primeiro, instale a extensão [Wokwi for VS Code](https://marketplace.visualstudio.com/items?itemName=wokwi.wokwi-vscode). Em seguida, pressione `F1` e selecione "Wokwi: Solicitar uma nova licença". O VS Code solicitará que você confirme a abertura do site Wokwi em seu navegador. Confirme clicando em "Abrir". - -Em seguida, clique no botão azul que diz "GET YOUR LICENSE". Você pode ser solicitado a entrar em sua conta Wokwi. Se você não tiver uma conta, poderá criar uma gratuitamente. - -O navegador pedirá uma confirmação para enviar a licença para o VS Code. Confirme (talvez seja necessário confirmar duas vezes, uma vez no navegador e outra no VS Code). Você verá uma mensagem no VS Code que diz "License activated for [seu nome]". Parabéns! - -## Exemplos de Projetos - -Para configurar o Wokwi para seu próprio projeto, consulte a página [Configurando seu projeto](./project-config). - -Se você quiser começar rapidamente e brincar com o Wokwi para VS Code, aqui estão alguns projetos de exemplo, pré-configurados com os arquivos [diagram.json](../diagram-format) e [wokwi.toml](./project-config). - -:::info Aviso -Antes de simular qualquer um dos projetos a seguir, você precisa compilar o código e gerar o arquivo firmware/ELF. Consulte o arquivo README do projeto para obter instruções sobre como compilar o código. -::: - -### Exemplos do Platform IO - -- [Arduino Simon Game](https://github.com/wokwi/arduino-simon-game) - Jogo da memória com 4 LEDs, 4 botões, buzzer e display de 7 segmentos -- [ESP32 Network Clock](https://github.com/wokwi/esp32-ntp-clock) - Sincroniza a hora da internet (NTP) e a exibe em um display LCD -- [ESP32 Web Server](https://github.com/wokwi/esp32-http-server) - Servidor HTTP que controla 2 LEDs -- [ESP32 Async Web Server](https://github.com/wokwi/esp32-async-web-server-example) - Servidor HTTP que controla 2 LEDs, usando a biblioteca ESPAsyncWebServer - -### Exemplos do ESP-IDF - -- [WiFi + FreeRTOS Tasks](https://github.com/wokwi/esp32-idf-hello-wifi) - -### ESP32 + Rust - -- [Hello Display](https://github.com/playfulFence/esp-hello-display/tree/feature/vscode-wokwi) - Usando o display ILI9341 com ESP32-C3 -- [esp-gallery](https://github.com/playfulFence/esp-gallery) - Galeria de arte interativa (ESP32-C3) -- [ESP32-S2 Keypad Example](https://github.com/playfulFence/esp-keypad-example/tree/feature/vscode-wokwi) -- [Scrolling text](https://github.com/playfulFence/esp-rolling-stone) - Usando a matriz de pontos com LED -- [Etch-A-Sketch](https://github.com/playfulFence/esp-etch-a-sketch) - Desenhe matriz de pontos com LED usando um joystick analógico - -### Exemplos de extensões do Arduino - -:::warning Aviso -A extensão Arduino do VS Code requer Arduino IDE 1.8 ou [Arduino CLI](https://github.com/microsoft/vscode-arduino/issues/1477#issuecomment-1278699661) instalado. Não funciona (ainda) com o Arduino IDE 2.0. -::: - -- [Arduino LCD-1602 "Olá Mundo"](https://github.com/wokwi/arduino-lcd-helloworld) - -### Outros exemplos - -- [Custom chips example](https://github.com/wokwi/inverter-chip) - Um [chip personalizado](../chips-api/getting-started) que inverte o sinal de entrada -- [Raspberry Pi Pico SDK](https://github.com/wokwi/pico-sdk-blink) - Blinky para Raspberry Pi Pico diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/project-config.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/project-config.md deleted file mode 100644 index 79685cd..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/vscode/project-config.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Configurando seu projeto (wokwi.toml) -sidebar_label: Configurando seu projeto ---- - -Para simular seu projeto no Wokwi, você precisa criar dois arquivos no diretório raiz do seu projeto: - -- `wokwi.toml` - um arquivo de configuração que informa ao Wokwi como executar seu projeto. -- `diagram.json` - um [arquivo de diagrama](../diagram-format) que descreve o circuito. - -## wokwi.toml - -Um arquivo `wokwi.toml` básico se parece com isto: - -```toml -[wokwi] -version = 1 -firmware = 'path-to-your-firmware.hex' -elf = 'path-to-your-firmware.elf' -``` - -Substitua "path-to-your-firmware" pelo local do firmware compilado, **relativo** ao arquivo wokwi.toml (que é o diretório raiz do seu espaço de trabalho). - -A extensão do arquivo de firmware depende da placa que você está usando: - -| Placa | Tipos de firmware suportados | -| -------------------------- | ---------------------------- | -| Arduino Uno/Mega, ATtiny85 | .hex, .elf | -| Raspberry Pi Pico | .hex, .uf2 | -| ESP32 Family | .bin, .uf2, .elf | - -Verifique sua configuração pressionando **F1** e selecionando "**Wokwi: Start Simulator**". - -:::warning Aviso -Evite usar barras invertidas (`\`) em seus caminhos. Em vez disso, use a barra (`/`), pois permite abrir seu projeto em qualquer plataforma (Windows, Mac e Linux). -::: - -### Redirecionamento de porta serial - -Wokwi for VS Code permite que você se conecte à porta serial do microcontrolador simulado usando um servidor TCP RFC2217. Para habilitar este recurso, adicione a seguinte configuração ao seu arquivo wokwi.toml, dentro da seção `[wokwi]`: - -```toml -rfc2217ServerPort = 4000 -``` - -Isso iniciará um servidor RFC2217 na porta 4000. Você pode usar qualquer cliente telnet (por exemplo, [PuTTY](https://www.putty.org/)) para se conectar à porta serial. Além disso, você pode usar o [suporte RFC2217](https://pyserial.readthedocs.io/en/latest/url_handlers.html#rfc2217) do PySerial para se conectar à porta serial do seu código Python: - -```python -import serial -ser = serial.serial_for_url('rfc2217://localhost:4000', baudrate=115200) -ser.write(b'hello') -``` - -Nota: Certifique-se de que a guia do simulador esteja visível no VS Code, caso contrário, a simulação pode pausar e você não obterá nenhuma saída serial do microcontrolador. - -### Gateway IoT (ESP32 Wi-Fi) - -O Wokwi for VS Code inclui uma versão integrada do [Wokwi Private IoT Gateway](../guides/esp32-wifi#internet-access), que permite conectar o WiFi virtual do ESP32 simulado à sua rede local e à Internet. - -Você também pode se conectar ao ESP simulado do seu computador (por exemplo, você está executando um servidor web no ESP32). Para fazer isso, configure o encaminhamento de porta em wokwi.toml. Por exemplo, para encaminhar a porta local 8180 para a porta 80 no ESP32, adicione a seguinte configuração: - -``` -# Encaminhe http://localhost:8180 para a porta 80 no ESP32 simulado: -[[net.forward]] -from = "localhost:8180" -to = "device:80" -``` - -Para um exemplo completo, consulte o projeto [ESP32 Web Server](https://github.com/wokwi/esp32-http-server). - -### Chips personalizados - -Você pode carregar chips personalizados para a simulação adicionando uma seção `[[chip]]` à sua configuração wokwi.toml. O exemplo a seguir carregará um chip de "chip/inverter.chip.wasm" e o disponibilizará sob o nome `chip-inverter` no diagrama do Wokwi: - -```toml -[[chip]] -name = 'inverter' # Para usar o chip no diagram.json, adicione uma peça do tipo "chip-inverter". -binary = 'chips/inverter.chip.wasm' -``` - -O Wokwi também requer um arquivo JSON que descreva os pinos do chip. O arquivo JSON deve ter o mesmo nome do binário wasm, mas com uma extensão json (por exemplo, `chips/inverter.chip.json` do exemplo acima). Para um exemplo completo, confira [o repositório do chip inversor](https://github.com/wokwi/inverter-chip). - -Você pode adicionar vários chips ao seu projeto adicionando várias seções `[[chip]]`, cada uma com um `nome` e `binário` diferentes. - -## diagram.json - -Você pode copiar o [arquivo de diagrama](../diagram-format) de um projeto existente em [Wokwi.com](https://wokwi.com). Por exemplo, se você estiver trabalhando em um projeto ESP32, poderá copiar o conteúdo do arquivo diagram.json de https://wokwi.com/projects/new/esp32. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/welcome.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/welcome.md deleted file mode 100644 index 0744310..0000000 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/welcome.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -slug: / -title: Bem vindo ao Wokwi! ---- - -import { LEDBullet } from '@site/src/components/LEDBullet' - -Wokwi é um simulador de eletrônica online. Você pode usá-lo para simular Arduino, ESP32 e muitas outras placas, componentes e sensores populares. - -Aqui estão alguns exemplos rápidos de coisas que você pode fazer com o Wokwi: - -- ["Olá Mundo" no Arduino Uno](https://wokwi.com/projects/322062421191557714) -- [Piscar um LED no ESP32](https://wokwi.com/projects/305566932847821378) -- [Monitorar o clima no ATtiny85](https://wokwi.com/projects/292900020514980360) -- [Controlar 32 Servos com Arduino Mega](https://wokwi.com/projects/305336312628511297) -- [Animar uma matriz de LED com FastLED](https://wokwi.com/projects/320579687608746578) -- [Contador de 7 segmentos com MicroPython no ESP32](https://wokwi.com/projects/300210834979684872) - -## Por que Wokwi? - - - Sem espera por componentes ou download de software grande. Seu navegador tem tudo o que você precisa para começar a codificar seu próximo projeto de IoT em segundos. - - - - Você não pode destruir o hardware virtual. Confie em nós, nós tentamos. Portanto, não se preocupe em fritar seus preciosos componentes. E ao contrário do hardware real, você sempre pode desfazer algo. - - - - Compartilhar um link do seu projeto Wokwi é tudo que você precisa. - - - - Problemas separados de hardware e software. - - - - Não há necessidade de limpar peças de projetos antigos. Use quantas peças precisar, sem se preocupar com o preço de projeto e estoque. - - - - Um lugar para você compartilhar seus projetos, pedir ajuda e se inspirar.
- Comunidade do Wokwi no Discord -
- -## Características únicas - -- [Simulação de Wi-Fi](guides/esp32-wifi) - Conecte seu projeto simulado à internet. Você pode usar MQTT, HTTP, NTP e muitos outros protocolos de rede. -- [Analisador Lógico Virtual](guides/logic-analyzer) - Capture sinais digitais em sua simulação (por exemplo, UART, I2C, SPI) e analise-os em seu computador. -- [Depuração avançada com GDB](gdb-debugging) - Poderoso depurador Arduino e Raspberry Pi Pico para usuários avançados. -- [Simulação de cartão SD](parts/wokwi-microsd-card) - Armazene e recupere arquivos e diretórios do seu código. Os membros do [Club](https://wokwi.com/pricing?ref=docs_sdcard) também podem fazer upload de arquivos binários (como imagens) -- [API dos chips](chips-api/getting-started) - Crie seus próprios chips e peças personalizados e compartilhe-os com a comunidade. -- [Integração no Visual Studio Code](vscode/getting-started) - Simule seus projetos incorporados diretamente no VS Code. - -## Quanto custa isso? - -O Wokwi é gratuito para uso pessoal. Para usuários comerciais e profissionais, confira nossos planos pagos na [página de preços](https://wokwi.com/pricing?ref=docs_welcome). diff --git a/i18n/pt-BR/docusaurus-theme-classic/footer.json b/i18n/pt-BR/docusaurus-theme-classic/footer.json deleted file mode 100644 index 14b7f54..0000000 --- a/i18n/pt-BR/docusaurus-theme-classic/footer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "link.title.Docs": { - "message": "Docs", - "description": "O título da coluna de links de rodapé com título=Docs no rodapé" - }, - "link.title.Community": { - "message": "Comunidade", - "description": "O título da coluna de links de rodapé com título=Comunidade no rodapé" - }, - "link.title.More": { - "message": "Mais", - "description": "O título da coluna de links de rodapé com título=Mais no rodapé" - }, - "link.item.label.Welcome": { - "message": "Bem-vindo", - "description": "O rótulo do link do rodapé com rótulo=Bem-vindo com link para /" - }, - "link.item.label.diagram.json": { - "message": "diagram.json", - "description": "O rótulo do link do rodapé com rótulo=diagram.json com link para /diagram-format" - }, - "link.item.label.Discord": { - "message": "Discord", - "description": "O rótulo do link do rodapé com rótulo=Discord com link para https://wokwi.com/discord" - }, - "link.item.label.Twitter": { - "message": "Twitter", - "description": "O rótulo do link do rodapé com rótulo=Twitter com link para https://twitter.com/WokwiMakes" - }, - "link.item.label.Blog": { - "message": "Blog", - "description": "O rótulo do link do rodapé com rótulo=Blog com link para https://blog.wokwi.com" - }, - "link.item.label.GitHub": { - "message": "GitHub", - "description": "O rótulo do link do rodapé com rótulo=GitHub com link para https://github.com/wokwi/wokwi-docs" - } -} diff --git a/i18n/pt-BR/docusaurus-theme-classic/navbar.json b/i18n/pt-BR/docusaurus-theme-classic/navbar.json deleted file mode 100644 index d3478d2..0000000 --- a/i18n/pt-BR/docusaurus-theme-classic/navbar.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": { - "message": "Wokwi", - "description": "O título na barra de navegação" - }, - "item.label.Docs": { - "message": "Docs", - "description": "Item da barra de navegação com rótulo Documentos" - }, - "item.label.Blog": { - "message": "Blog", - "description": "Item da barra de navegação com rótulo Blog" - }, - "item.label.Simulator": { - "message": "Simulador", - "description": "Item da barra de navegação com rótulo Simulador" - } -} diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json deleted file mode 100644 index 947182f..0000000 --- a/i18n/zh-CN/code.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "theme.NotFound.title": { - "message": "找不到页面", - "description": "The title of the 404 page" - }, - "theme.NotFound.p1": { - "message": "你想要的东西可能不在这里。", - "description": "The first paragraph of the 404 page" - }, - "theme.NotFound.p2": { - "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", - "description": "The 2nd paragraph of the 404 page" - }, - "theme.AnnouncementBar.closeButtonAriaLabel": { - "message": "关闭", - "description": "The ARIA label for close button of announcement bar" - }, - "theme.blog.post.readingTime.plurals": { - "message": "One min read|{readingTime} min read", - "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.tags.tagsListLabel": { - "message": "标签:", - "description": "The label alongside a tag list" - }, - "theme.blog.post.readMore": { - "message": "阅读更多", - "description": "The label used in blog post item excerpts to link to full blog posts" - }, - "theme.blog.paginator.navAriaLabel": { - "message": "Blog list page navigation", - "description": "The ARIA label for the blog pagination" - }, - "theme.blog.paginator.newerEntries": { - "message": "Newer Entries", - "description": "The label used to navigate to the newer blog posts page (previous page)" - }, - "theme.blog.paginator.olderEntries": { - "message": "Older Entries", - "description": "The label used to navigate to the older blog posts page (next page)" - }, - "theme.blog.post.paginator.navAriaLabel": { - "message": "Blog post page navigation", - "description": "The ARIA label for the blog posts pagination" - }, - "theme.blog.post.paginator.newerPost": { - "message": "Newer Post", - "description": "The blog post button label to navigate to the newer/previous post" - }, - "theme.blog.post.paginator.olderPost": { - "message": "Older Post", - "description": "The blog post button label to navigate to the older/next post" - }, - "theme.tags.tagsPageTitle": { - "message": "标签", - "description": "The title of the tag list page" - }, - "theme.blog.post.plurals": { - "message": "One post|{count} posts", - "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.blog.tagTitle": { - "message": "{nPosts} tagged with \"{tagName}\"", - "description": "The title of the page for a blog tag" - }, - "theme.tags.tagsPageLink": { - "message": "查看所有标签", - "description": "The label of the link targeting the tag list page" - }, - "theme.CodeBlock.copyButtonAriaLabel": { - "message": "复制代码", - "description": "The ARIA label for copy code blocks button" - }, - "theme.CodeBlock.copied": { - "message": "已复制", - "description": "The copied button label on code blocks" - }, - "theme.CodeBlock.copy": { - "message": "复制", - "description": "The copy button label on code blocks" - }, - "theme.docs.sidebar.expandButtonTitle": { - "message": "展开侧边栏", - "description": "The ARIA label and title attribute for expand button of doc sidebar" - }, - "theme.docs.sidebar.expandButtonAriaLabel": { - "message": "展开侧边栏", - "description": "The ARIA label and title attribute for expand button of doc sidebar" - }, - "theme.docs.paginator.navAriaLabel": { - "message": "Docs pages navigation", - "description": "The ARIA label for the docs pagination" - }, - "theme.docs.paginator.previous": { - "message": "上一页", - "description": "The label used to navigate to the previous doc" - }, - "theme.docs.paginator.next": { - "message": "下一页", - "description": "The label used to navigate to the next doc" - }, - "theme.docs.sidebar.responsiveCloseButtonLabel": { - "message": "关闭菜单", - "description": "The ARIA label for close button of mobile doc sidebar" - }, - "theme.docs.sidebar.responsiveOpenButtonLabel": { - "message": "打开菜单", - "description": "The ARIA label for open button of mobile doc sidebar" - }, - "theme.docs.sidebar.collapseButtonTitle": { - "message": "Collapse sidebar", - "description": "The title attribute for collapse button of doc sidebar" - }, - "theme.docs.sidebar.collapseButtonAriaLabel": { - "message": "关闭侧边栏", - "description": "The title attribute for collapse button of doc sidebar" - }, - "theme.docs.versions.unreleasedVersionLabel": { - "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", - "description": "The label used to tell the user that he's browsing an unreleased doc version" - }, - "theme.docs.versions.unmaintainedVersionLabel": { - "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", - "description": "The label used to tell the user that he's browsing an unmaintained doc version" - }, - "theme.docs.versions.latestVersionSuggestionLabel": { - "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", - "description": "The label userd to tell the user that he's browsing an unmaintained doc version" - }, - "theme.docs.versions.latestVersionLinkLabel": { - "message": "最新版本", - "description": "The label used for the latest version suggestion link label" - }, - "theme.common.editThisPage": { - "message": "编辑此页面", - "description": "The link label to edit the current page" - }, - "theme.common.headingLinkTitle": { - "message": "Direct link to heading", - "description": "Title for link to heading" - }, - "theme.lastUpdated.atDate": { - "message": " 在 {date}", - "description": "The words used to describe on which date a page has been last updated" - }, - "theme.lastUpdated.byUser": { - "message": " 由 {user}更新", - "description": "The words used to describe by who the page has been last updated" - }, - "theme.lastUpdated.lastUpdatedAtBy": { - "message": "Last updated{atDate}{byUser}", - "description": "The sentence used to display when a page has been last updated, and by who" - }, - "theme.common.skipToMainContent": { - "message": "Skip to main content", - "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" - }, - "theme.SearchPage.documentsFound.plurals": { - "message": "One document found|{count} documents found", - "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" - }, - "theme.SearchPage.existingResultsTitle": { - "message": "\"{query}\"的搜索结果", - "description": "The search page title for non-empty query" - }, - "theme.SearchPage.emptyResultsTitle": { - "message": "搜索文档", - "description": "The search page title for empty query" - }, - "theme.SearchPage.inputPlaceholder": { - "message": "输入关键词", - "description": "The placeholder for search page input" - }, - "theme.SearchPage.inputLabel": { - "message": "搜索", - "description": "The ARIA label for search page input" - }, - "theme.SearchPage.algoliaLabel": { - "message": "Search by Algolia", - "description": "The ARIA label for Algolia mention" - }, - "theme.SearchPage.noResultsText": { - "message": "没有搜索到结果", - "description": "The paragraph for empty search result" - }, - "theme.SearchPage.fetchingNewResults": { - "message": "搜索中...", - "description": "The paragraph for fetching new search results" - }, - "theme.SearchBar.label": { - "message": "搜索", - "description": "The ARIA label and placeholder for search button" - } -} diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json deleted file mode 100644 index 39124bd..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version.label": { - "message": "下一页", - "description": "The label for version current" - }, - "sidebar.main.category.Getting Started": { - "message": "开始", - "description": "The label for category Getting Started in sidebar main" - }, - "sidebar.main.category.Guides": { - "message": "指南", - "description": "The label for category Guides in sidebar main" - }, - "sidebar.main.category.Diagram Reference": { - "message": "Diagram指南", - "description": "The label for category Diagram Reference in sidebar main" - }, - "sidebar.main.category.VS Code Extension": { - "message": "VS Code 扩展", - "description": "The label for category VS Code Extension in sidebar main" - } -} diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format-connections.gif b/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format-connections.gif deleted file mode 100644 index 89abd07..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format-connections.gif and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format.md deleted file mode 100644 index 33007f3..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/diagram-format.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: diagram.json文件格式 -sidebar_label: diagram.json ---- - -每个方阵项目都包含一个 diagram.json 文件。此文件定义了将用于仿真的组件、组件的特性以及它们之间的连接部分。 - -## 文件结构 - -diagram file文件是一个包含以下几个部分的 JSON 文件。基本文件结构为: - -```json -{ - "version": 1, - "author": "Uri Shaked", - "editor": "wokwi", - "parts": [], - "connections": [] -} -``` - -`"version"` 总是1,`"author"`是创建者的名字, `"editor"`是用于编辑的应用程序的名称文件(“wokwi”)。 - -此外,您可以在`"serialMonitor"` 中添加 [配置串行监视器](guides/serial-monitor#configuring-the-serial-monitor) 部分。 - -## Parts介绍 - - `"parts"` 部分定义了仿真中的组件列表。这是一个具有以下属性的数组对象: - -| 名称 | 类型 | 描述 | -| ------ | ------- | --------------------------------- | -| id | string | 部件的唯一标识符(例如“led1”) | -| type | string | 零件的类型(例如“wokwi-led”) | -| left | number | X屏幕坐标(以像素为单位) | -| top | number | Y屏幕坐标(以像素为单位) | -| attrs | object | 组件属性(例如wokwi-led的“颜色”) | -| rotate | number | 旋转角度(例如90) | -| hide | boolean | 如果为真,则该部件将无法显示 | - -`id` 和 `type` 是必需的,其他字段是可选的。 - -例如,以下是您在位置(x=100,y=50)定义名为“led1”的红色LED的方法: - -```json -{ - "id": "led1", - "type": "wokwi-led", - "left": 100, - "top": 50, - "attrs": { - "color": "red" - } -} -``` - -:::warning - -每个部件必须具有唯一的“id”属性。如果两个部分具有相同的“ID”,仿真可能无法正常工作。 - -::: - -组件类型的部分列表(例如 [wokwi-led](parts/wokwi-led))可以在本指南的“图表参考”部分中找到。我们目前正在努力扩展此列表。与此同时,一些部分也记录在 [Wokwi Elements](https://elements.wokwi.com) 上。 - -每个图表都应该包括一个微控制器部分。目前支持以下微控制器: - -- [`wokwi-attiny85`](parts/wokwi-attiny85) - ATtiny85 -- [`wokwi-arduino-nano`](parts/wokwi-arduino-nano) - Arduino Nano -- [`wokwi-arduino-mega`](parts/wokwi-arduino-mega) - Arduino Mega 2560 -- [`wokwi-arduino-uno`](parts/wokwi-arduino-uno) - Arduino Uno R3 -- [`wokwi-pi-pico`](parts/wokwi-pi-pico) - Raspberry Pi Pico -- `wokwi-esp32-devkit-v1` - ESP32 -- `board-esp32-s2-devkitm-1` - ESP32-S2 -- [`board-franzininho-wifi`](parts/board-franzininho-wifi) - ESP32-S2 -- `board-esp32-c3-devkitm-1` - ESP32-C3 -- `board-esp32-c3-rust-1` - ESP32-C3 - -:::tip - -您不需手动指定每个项目的左/顶部坐标,而是可以用鼠标将它们拖动到所需的位置。 - -::: - -## Connections部分 - - `"connections"` 部分定义了组件的连接方式。每个连接都是一个有四个元素的数组对象: - -- 源组件id和引脚名称,用冒号分隔,例如`partId:pinName` -- 目标组件ID和引脚名称 -- 连线的颜色(或隐藏电线的空字符串) -- 一个字符串数组用于说明如何放置电线(可选) - -例如,以下定义将连接`led1`的A(anode)引脚到`uno`组件的13脚: - -```json - ["led1:A", "uno:13", "green", []], -``` - -您可以通过将鼠标移动到组件引脚上来找到组件引脚的名称。 - -### 电线放置的迷你语言 - -`"connections"` 部分中的每个项目都可以指定一个说明列表如何为电线画线。电线总是直线,或者水平或垂直,或者从不对角线。 - -具体有以下三个说明: - -- “v”后跟一些像素:垂直移动(向上/向下) -- “h”后跟一些像素:水平移动(左/右) -- “\*”只能出现一次。“\*”前面显示的所有说明适用于源引脚,以及应用后出现的说明到目标引脚。 - -例如: - -```json -["v10", "h5", "*", "v-15", "h10"] -``` - -“v10”将从源引脚向下移动10像素,然后“h5”将移动右边五个像素。 - -“\*”之后显示的说明按相反的顺序应用:“h10”将在目标引脚右侧移动10像素,然后“v-15”将向上移动15像素。 - -最后,模拟器将用组合连接电线的两端必要时覆盖剩余距离的水平和垂直电线。 - -### 电线放置动画 - -如果您想通过视频学习,您可能会发现以下GIF动画很有用。 - -动画由Steve Sigma创作。 - -![diagram.json wire placement mini language](diagram-format-connections.gif) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md deleted file mode 100644 index 86f3a8e..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -slug: /faq -title: 常见问题 ---- - -## Wokwi是什么意思? - -在为Wokwi选择名字时,我们正在寻找一个易于发音且还没有任何意义的简短单词。我们想出了一份可能的名字清单,并挑选了我们最喜欢的名字,Wokwi。以下是一些没有被选上的名字:Duvav、Hajuu、Chipine、Zeprr。 - -## 我如何找到之前保存的项目? - -如果你尚未登录Wokwi,请使用保存项目的同一设备和浏览器,并访问[https://wokwi.com/arduino/projects](https://wokwi.com/arduino/projects)。 - -如果你登录了Wokwi后,并且保存了项目,那么上面的URL将显示你在任何设备/浏览器上保存的所有项目。 - -你还可以通过单击个人资料图片并从菜单中选择“我的项目”来找到到保存的项目。 - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/gdb-debugging.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/gdb-debugging.md deleted file mode 100644 index 50fdb79..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/gdb-debugging.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: GDB调试工具 -sidebar_label: 调试工具 ---- - -GDB是一个强大的代码调试工具,你可以用它来调试wokwi中的代码。 - -## 在Wokwi中运行GDB - -要启动GDB,在代码编辑器中按F1,在弹出的提示框中输入“GDB”,然后选择**"Start Web GDB Session (debug build)"** - -这会在浏览器中打开一个新tab启动GDB。如果这是你第一次使用这个功能,大概会花30秒的时间加载。 - -## 调试会话示例 - -当GDB加载完成后,你会看到如下提示: - -``` -0x00000000 in __vectors () -(gdb) -``` - -现在你可以输入GDB指令,例如,如果你想从`setup()`开始一行一行运行你的程序,先输入`tbreak setup`和`c`来启动程序,然后运行直到`setup()`的开始: - -``` -(gdb) tbreak setup -Temporary breakpoint 1 at 0x2ca: file sketch.ino, line 28. -(gdb) c -Continuing. - -Temporary breakpoint 1, setup () at sketch.ino:28 -28 pinMode(LED_BUILTIN, OUTPUT); -(gdb) -``` - -此时,输入`layout src`显示你程序的源代码,然后输入`next`来执行下一行代码,然后重复输入`next`继续执行后面的每一行。 - -`print`命令用来打印变量的值。例如使用`print ledIndex`来打印名为`ledIndex`的值。 - -## 了解更多 - -查看[AVR GDB 手册](https://blog.wokwi.com/gdb-avr-arduino-cheatsheet/),了解更多有用的 GDB 命令。学习所有的 GDB 功能并有效地使用它们需要时间,但即便只使用几个基本命令,它也可以非常强大。 - -如果你想了解我们如何让 GDB 在浏览器中工作,请查看[在浏览器中运行 GDB](https://blog.wokwi.com/running-gdb-in-the-browser/)。这不是使用 GDB 所必须了解的 - 只是让你看一下幕后的疯狂操作。 \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/circuitpython.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/circuitpython.md deleted file mode 100644 index dc22ff5..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/circuitpython.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: 在Wokwi使用CircuitPython -sidebar_label: 使用CircuitPython ---- - -你可以使用[Raspberry Pi Pico board](../parts/wokwi-pi-pico),在Wokwi上进行CircuitPython仿真。要开始新的仿真项目,请打开[Raspberry Pi Pico CircuitPython 项目实例](https://wokwi.com/projects/new/circuitpython-pi-pico)。 - -## 项目的工程结构 - -CircuitPython项目必须包含一个`code.py` 文件。此文件中的代码将在你开始仿真时执行。 - -Wokwi将所有项目文件复制到Pico的falsh文件系统中。这意味着你的项目可以包含额外的Python模块,你可以从`code.py` 或交互式REPL导入它们。你的项目还可以在文本文件中包含自定义数据。 - -你可以通过运行以下方式获得falsh文件系统中所有文件的列表: - -```python -import os -print(os.listdir('/')) -``` - -## 库的使用 - -你可以使用 [Adafruit CircuitPython Bundle](https://github.com/adafruit/Adafruit_CircuitPython_Bundle)中的任何库。在项目中创建一个“requirements.txt”文件,并写下你使用的库的名称,每行一个。开头为“#”的行是注释。 - -例如,如果你想同时安装[adafruit_display_text](https://circuitpython.readthedocs.io/projects/display_text/en/latest/) 和 [adafruit_dht](https://circuitpython.readthedocs.io/projects/dht/en/latest/),请创建一个包含以下内容的“requirements.txt”文件: - -``` -# requirements.txt example -adafruit_display_text -adafruit_dht -``` - -当你开始仿真时,Wokwi会下载所有库及其依赖项。它们会被复制到Flash文件系统中的“lib”文件夹中。你可以调用`os.listdir('/lib')`以获取已安装的所有库的列表。有关完整的代码示例,请参阅[CircuitPython Library List](https://wokwi.com/projects/309475039016649280)。 - -# CircuitPython REPL介绍 - -当`code.py` 中的代码终止(或者你用Ctrl+C中断它)时,你将进入CircuitPython REPL。REPL是一个交互式提示符,你可以在其中键入python命令并立即查看结果。要将代码粘贴到REPL,按下Ctrl+E进入粘贴模式。 - -## 项目例子 - -- [Blink with CircuitPython](https://wokwi.com/projects/309474946192507458) -- [CircuitPython SSD1306 Example](https://wokwi.com/projects/309427357921313345) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/diagram-editor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/diagram-editor.md deleted file mode 100644 index 67a110c..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/diagram-editor.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: 交互式图表编辑器 -sidebar_label: 图表编辑器 ---- - -组件编辑器提供一种交互式的编辑你的模拟器连接图的方法:在模拟器中添加元器件进行模拟以及定义元器件之间的连接,这是替代直接编辑[diagram.json](../diagram-format)文件的一种非常方便的方法。 - -## 编辑组件 - -### 添加组件 - -点击图表编辑器顶部的紫色“+”按钮来添加一个新的组件。 - -你会看到一个组件列表,选择一个组件,它将被添加到图表中的(0, 0)位置,你可以拖动到你想要的位置。 - -不是所有的组件都会显示在列表中,例如MCU板和[Arduino Nano](../parts/wokwi-arduino-nano)、 [ATtiny85](../parts/wokwi-attiny85)之类的微控制器就不会显示,但你可以通过[编辑 diagram.json 文件](../diagram-format#parts)来添加它们。 - -### 移动组件 - -点击一个组件并拖动鼠标来移动它。 - -### 旋转组件 - -点击一个组件选中,然后按下R键旋转,组件会按顺时针旋转90°。如果你需要旋转别的角度(例如45°),可以通过[编辑 diagram.json 文件](../diagram-format#parts)来实现。 - -### 复制组件 - -通过单击组件(选择它)并按“D”来创建新的副本。你可以按几次“D”来创建组件的多个副本。 - -### 删除组件 - -点击一个组件选中,然后按下Delete键删除。 - -## 编辑连线 - -### 在两个组件之间连线 - -要在两个组件之间创建新的连线,点击一个你想连接的起点管脚,再点击另一个目标管脚,就能在两个管脚之间连线。 - -如果你想要让电线走特定的路线,可以在点击第一个管脚之后再点击屏幕上的其他位置来调整电线是如何拐弯的。 - -如果要取消一个连线(在不选择目标引脚的情况下删除),点击鼠标右键或者按Esc键。 - -### 改变连线的颜色 - -连线的颜色是由引脚的功能自动决定的,从GND管脚起始的是黑色线,从5V管脚起始的是红色线,其他的线则是绿色。 - -你可以通过单击线,然后为线选择新颜色来更改颜色。你还可以使用以下键盘快捷键来设置线的颜色: - -| Shortcut | Color | -| -------- | ------ | -| 0 | 黑色 | -| 1 | 棕色 | -| 2 | 红色 | -| 3 | 橙色 | -| 4 | 金色 | -| 5 | 绿色 | -| 6 | 蓝色 | -| 7 | 蓝紫色 | -| 8 | 灰色 | -| 9 | 白色 | -| C | 青色 | -| L | 嫩绿色 | -| M | 紫红色 | -| P | 紫色 | -| Y | 黄色 | - -这些键盘快捷键也可以在绘制新线时使用。你也可以通过编辑[diagram.json](../diagram-format#connections)文件来改变线的颜色。 - -### 删除连线 - -点击一条连线来删除它。 - -## 键盘快捷键说明 - -键盘快捷键说明表: - -| 按键 | 功能 | -| ------ | ----------------------------| -| - | 缩小 | -| + | 放大 | -| F | 适合窗口的图表(自动缩放) | -| D | 对所选部件创建副本(复制) | -| R | 旋转选中的组件 | -| Delete | 删除选中的组件 | -| ? | 打开当前选中组件的说明文档 | -| Escape | 取消连线 (在连线状态下) | -| G | 切换网格 | -| Shift | 切换网格对齐模式 | -| Alt | 切换到精细网格对齐模式 | -| Ctrl | 切换到精细网格对齐模式 | - -对于火狐浏览器用户:如果键盘快捷键不起作用,请确保“Search for text when you start typing”设置处于关闭状态。 - -## 撤销 / 重做 - -你在交互式编辑器中的任何操作都会同步改变 [diagram.json](../diagram-format)。 - -交互式编辑器当前**没有**撤销功能(这里有一个[关于这个新功能的issue](https://github.com/wokwi/wokwi-features/issues/77)) - -你可以通过切换到"diagram.json"标签页来执行撤销操作,你在交互式编辑器里面的任何操作都会立即反映到代码编辑器中,然后就可以通过在代码编辑器中执行Ctrl+Z来进行撤销。 - -需要注意的是,只有在切换到"diagram.json"标签页之后进行的操作才会被记录下来能够撤销,这是我们在交互式编辑器里添加撤销操作之前的临时解决方案。 - -## 网格捕捉 - -按下G键或点击菜单中的网格按钮可以激活网格视图,显示网格和标尺。大颗粒的网格是2.54mm或0.1英寸,精细网格(默认网格大小的一半)是1.27mm或0.05英寸。标尺上的刻度标签以毫米为单位(默认情况下),但可以通过单击右上角的单位切换到英寸。 - -Shift键能够在网格模式和自由模式之间临时切换,如果网格视图是开启的,那么按下shift你可以随意拖动组件并让它定位在任何位置(不依据网格对齐),如果网格视图是关闭的,那么按下shift则可以让组件按照网格对齐(固定在最近的网格点)。 - -Alt键和Ctrl键则无论网格视图是否开启都可以临时切换到精细网格对齐(对齐到半个格子)。 - -网格对齐操作对于组件和连线是一样的,Shift,Alt和Ctrl键允许你在任何状态下进行网格对齐操作。 - -当你开始模拟时,Wokwi会隐藏网格。停止模拟将恢复网格。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png deleted file mode 100644 index 6d13909..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi-wireshark.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md deleted file mode 100644 index 88b0e0f..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32-wifi.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: ESP32的WIFI使用 -sidebar_label: ESP32的WiFi使用 ---- - -Wokwi可以模拟出具有完全互联网接入的WiFi网络。您可以使用[ESP32](./esp32)和虚拟WiFi来制作物联网项目原型。常见的用例包括: - -- 连接到MQTT服务器以发送传感器数据 -- 通过 HTTP、HTTPS 和 Web 套接字查询 Web 服务 -- 在ESP32中运行HTTP服务器,并从浏览器连接到它(需要[Wokwi IoT Gateway](#the-private-gateway)) - -## 连接到WIFI网络 - -模拟器提供了一个名为**Wokwi-GUEST**的虚拟WiFi接入点。这是一个开放的接入点-不需要密码。 - -### 使用Arduino连接 - -要在使用Arduino(在ESP32)的设备上连接,请使用以下代码: - -```cpp -#include - -void setup() { - Serial.begin(9600); - Serial.print("Connecting to WiFi"); - WiFi.begin("Wokwi-GUEST", "", 6); - while (WiFi.status() != WL_CONNECTED) { - delay(100); - Serial.print("."); - } - Serial.println(" Connected!"); -} - -void loop() { - delay(100); // TODO: Build something amazing! -} -``` - -注意:我们在调用`WiFi.begin()`时指定WiFi通道号(6)。这个步骤跳过了WiFi扫描阶段,连接到WiFi时节省了约4秒的时间。 - -### 使用MicroPython连接 - -要使用 [MicroPython项目](https://wokwi.com/projects/new/micropython-esp32)连接,请使用以下代码: - -```python -import network -import time - -print("Connecting to WiFi", end="") -sta_if = network.WLAN(network.STA_IF) -sta_if.active(True) -sta_if.connect('Wokwi-GUEST', '') -while not sta_if.isconnected(): - print(".", end="") - time.sleep(0.1) -print(" Connected!") -``` - -连接后,您可以使用 [urequests 库](https://mpython.readthedocs.io/en/master/library/mPython/urequests.html)发送HTTP和HTTPS请求,并使用[umqtt 库](https://mpython.readthedocs.io/en/master/library/mPython/umqtt.simple.html) 发送MQTT连接。 - -## 网络权限 - -Wokwi使用特殊的网关将您的模拟ESP32连接到互联网。由于网络浏览器不允许直接访问互联网,因此需要此网关。有两种方法可以使用Wokwi物联网网关:公共网关和私有网关。 - -| | 公共网关 | 私有网关 | -| -------------------- | --------------------- | ------------------------------------------------------ | -| 速度 | 慢 | 更快 | -| 稳定性 | 中等 | 高 | -| 位置 | 远程,在云端 | 在你的电脑上运行 | -| 隐私性 | 受监控的连接 | 不受监控 | -| 外网连接 | ✅ | ✅ | -| 内网连接 | ❌ | ✅ | -| 可用性 | 所有人 | [付费用户](https://wokwi.com/pricing?ref=docs_esp32_wifi) | - -### 公共网关 - -公共网关是默认的互联网连接方法。它开箱即用,可以访问互联网,但不能访问您的本地网络。为了安全起见,所有流量都会受到监控,因此**不要将其用于私人或敏感数据**。我们偶尔会检查流量,如果我们注意到网关的过度使用,可能会实施限制。 - -公共网关是在ESP32中随便玩一玩或者学习WiFi网络的绝佳选择。 - -### 私有网关 - -私有网关是一个小型应用程序,您可以在计算机上下载并运行。它允许更快、更强大的ESP32互联网访问:数据直接从模拟器(在浏览器中运行)传输到计算机的网络,而无需通过云。这意味着: - -- 不受监控。您的数据通信保持私密。 -- 您的ESP32项目可以访问在您的计算机或本地网络上运行的服务(例如本地MQTT或HTTP服务器) -- 您可以在ESP32上运行Web服务器,并从浏览器连接到它(下面会有解释) - -私有网关仅适用于[付费用户](https://wokwi.com/pricing?ref=docs_esp32_wifi)。 - -#### 安装 - -从[Wokwi IoT Gateway 发布界面](https://github.com/wokwi/wokwigw/releases/latest)下载最新版本的软件。您将看到Windows、macOS和Linux的版本。然后提取ZIP文件并运行里面的可执行文件。您的浏览器/操作系统可能会警告您,该文件可能不安全,因此您需要选择“无论如何都要运行它”。 - -网关不需要任何管理员或者root权限。它可以作为标准流程在您的计算机上顺利运行。 - -当您运行网关时,它会输出一个logo及它的版本,并且输出:“Listening on TCP port 9011”。祝贺,你已经完成了设置! - -如果您担心在计算机上运行网关可执行文件,请您查看 [source code](https://github.com/wokwi/wokwigw),甚至你可以自己构建可执行文件(在这里提问 [discord](https://wokwi.com/discord))。 - -#### 使用方法 - -运行网关后,在Wokwi中打开任何项目,转到代码编辑器,按“F1”,然后选择“Enable Private Wokwi IoT Gateway”。如果您想启用网关,系统会提示您。回答“确定”以启用专用网关,或“取消”将其禁用并切换回公共网关。 - -然后运行任何使用WiFi的ESP32项目。看看网关输出,它应该显示“Client connected”。这意味着您正在使用专用网关。 - -如果您的ESP32项目是HTTP服务器,您可以从浏览器进入地址:[http://localhost:9080/](http://localhost:9080)连接到它。连接将由网关转发到模拟ESP32上的默认HTTP端口(80)。如果您需要转发不同的端口,请[open an issue on Github](https://github.com/wokwi/wokwigw/issues/new).。 - -注意:由于 [技术限制](https://bugs.webkit.org/show_bug.cgi?id=171934#c96),Safari浏览器目前不支持专用物联网网关。请使用其他浏览器(例如Chrome、Firefox、Edge)。 - -## 高级使用篇 - -### 网络地址 - -ESP32从Wokwi物联网网关内运行的DHCP服务器获取IP地址。IP地址取决于您使用的网关类型: - -- 公共网关: 10.10.0.2 -- 私有网关: 10.13.37.2 - -模拟ESP32的MAC地址是 24:0a:c4:00:01:10 。 - -虚拟接入点(“Wokwi-GUEST”)的BSSID是 42:13:37:55:aa:01 ,它被监听在WiFi通道6上。 - -### 使用Wireshark查看wifi的传输信息 - -Wokwi模拟了一个完整的网络堆栈:从最低的802.11 MAC层开始,通过IP和TCP/UDP层,一直到DNS、HTTP、MQTT、CoAP等协议。您可以使用[Wireshark](https://www.wireshark.org)等网络协议分析器查看原始WiFi流量。 - -首先,运行一个使用模拟器中WiFi的ESP32项目。然后,转到代码编辑器,按F1并选择**下载WiFi数据包捕获(PCAP)文件**。您的浏览器将下载一个名为_wokwi.pcap_的文件。使用Wireshark打开此文件。 - -以下屏幕截图显示了HTTP请求数据包捕获的示例: - -![ESP32 WiFi Wireshark Packets: DNS, HTTP, and 802.11 MAC](esp32-wifi-wireshark.png) - -如您所见,PCAP文件包含各种数据包:802.11信标帧、DNS查询响应(列表中的第一个条目)和HTTP请求/响应数据包(第107和113号)。 - -在大多数情况下,您只想专注于特定的协议。您可以通过在Wireshark中按Ctrl+/并键入协议名称(http、tcp、ip、dns、dhcp等)来实现这一点。它将过滤列表,并仅显示相关数据包。 - -:::warning - -数据包捕获中的时间字段使用模拟时钟时间。如果模拟运行速度低于全速(100%),它可能会比钟表的时间慢。 - -::: - -### 限制 - -Wokwi物联网网关支持TCP和UDP。它不支持ICMP协议,因此Ping功能不可用。 - -## 项目例子 - -- [NTP Client](https://wokwi.com/projects/321525495180034642) - 从NTP服务器获取当前日期和时间,并将其显示在LCD屏幕上。 -- [MicroPython MQTT Weather Logger](https://wokwi.com/projects/322577683855704658) - 每秒读取当前温度+湿度,并向MQTT服务器报告变化。 -- [ESP32 HTTP Server](https://wokwi.com/projects/320964045035274834) - 提供了用于控制2个LED的网页。需要[Wokwi IoT Gateway](#the-private-gateway)。 - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32.md deleted file mode 100644 index ebf0a14..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/esp32.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: ESP32仿真 -sidebar_label: ESP32仿真 ---- - -ESP32是一款支持WiFi和蓝牙的流行的微控制器,被广泛用于物联网项目。Wokwi可以仿真ESP32、ESP32-S2和ESP32-C3(测试版)。 - - - -## ESP32支持的板卡 - -| Name | Chip | Description | -| --------------------------------------------------- | -------- | -------------------------------- | -| ESP32 DevKit v1 | ESP32 | 流行的ESP32开发板 | -| TinyPICO | ESP32 | UnexpectedMaker制作的小型ESP32板 | -| ESP32-S2-DevKitM-1 | ESP32-S2 | 入门级ESP32-S2开发板 | -| [Franzininho WiFi](../parts/board-franzininho-wifi) | ESP32-S2 | Franzininho社区制作的板卡 | -| ESP32-C3-DevKitM-1 | ESP32-C3 | 入门级ESP32-C3开发板 | -| Rust Board ESP32-C3 | ESP32-C3 | 用于Rust开发的ESP32-C3板 | - -您可以通过向[wokwi-boards](https://github.com/wokwi/wokwi-boards)发送拉取请求来贡献其他板卡。 - -## 立即开始 - -您可以通过三种方式使用ESP32仿真器: - -1. 使用ESP32 Arduino Core构建项目(包括ESP-IDF项目) -2. 运行MicroPython项目(也可以在ESP32-S2上运行CircuitPython) -3. 仿真您在计算机上构建的bin应用程序文件(例如使用ESP-IDF) - -### Arduino Core - -从[Arduino-ESP32 Project Template](https://wokwi.com/projects/new/esp32)或[ESP32 Blink Example](https://wokwi.com/projects/305452382231200320)开始学习。 - -如果您想使用第三方Arduino库,请添加一个包括您使用的库列表的[libraries.txt file](./libraries)。 - -### MicroPython - -从[MicroPython ESP32 Project Template](https://wokwi.com/projects/new/micropython-esp32)或[MicroPython ESP32 Blink Example](https://wokwi.com/projects/305452627045384768)开始学习。 - -注意:在仿真运行时,在串行终端内按Ctrl+C进入_MicroPython REPL_。或者,您可以编辑闪烁示例代码,删除while循环。有关更多信息,请查看[MicroPython Guide](./micropython)。 - -### 自定义bin应用文件 - -打开[ESP32 custom application project template](https://wokwi.com/projects/305457271083631168),然后在代码编辑器中按“F1”。然后选择“加载HEX文件并开始仿真...”。从您的计算机中选择任何.bin文件,仿真将开始。 - -## 仿真例子 - -### Arduino Examples - -- [Blink](https://wokwi.com/projects/305566932847821378) -- [Seven segment counter](https://wokwi.com/projects/305567166302782017) -- [FastLED NeoPixel Blink](https://wokwi.com/projects/312460386125218368) -- [APA102 Color Cycles (TinyPico Board)](https://wokwi.com/projects/308012505806930496) -- [WiFi Scanning](https://wokwi.com/projects/305569599398609473) - -### MicroPython Examples - -- [SSD1306 Example](https://wokwi.com/projects/305568836183130690) -- [NeoPixels](https://wokwi.com/projects/305569065545499202) -- [AES256 Encryption](https://wokwi.com/projects/321484545174012499) -- [WiFi Scanning](https://wokwi.com/projects/305570169692881473) - -### ESP-IDF Examples - -以下示例中使用了ESP-IDF函数。它们使用Arduino ESP32 Core编译: - -- [Blink using FreeRTOS API](https://wokwi.com/projects/304209256260829762) -- [Binary LED counter using FreeRTOS tasks](https://wokwi.com/projects/322609470223942226) -- [GPIO button input + interrupts](https://wokwi.com/projects/304633599712297536) - -## 仿真器特性 - -| 外设 | ESP32 | S2 | C3 | Notes | -| ------------------ | ----- | --- | --- | ------------------------------------------------------------------------ | -| Processor core(s) | ✔️ | ✔️ | ✔️ | | -| GPIO | ✔️ | ✔️ | ✔️ | 支持中断 | -| IOMUX | 🟡 | 🟡 | 🟡 | | -| PSRAM | ✔️ | ✔️ | — | 4MB 外部 SRAM | -| UART | ✔️ | ✔️ | ✔️ | | -| USB | — | ✔️ | ❌ | Support for UART over USB (CDC) | -| I2C | ✔️ | ✔️ | ✔️ | 仅支持主机模式。不支持10位寻址。 | -| I2S | ❌ | ❌ | ❌ | [Open for voting](https://wokwi.com/features#feature-1031718532) | -| SPI | ✔️ | ✔️ | ✔️ | | -| TWAI | ❌ | ❌ | ❌ | | -| RMT | 🟡 | 🟡 | 🟡 | 仅支持发送,用于控制NeoPixels | -| LEDC PWM | ✔️ | ✔️ | ✔️ | 用于 analogWrite()、舵机、蜂鸣器等。 | -| MCPWM | ❌ | — | — | | -| DMA | 🟡 | 🟡 | ❌ | | -| WiFi | ✔️ | ✔️ | ✔️ | See the [ESP32 WiFi Guide](./esp32-wifi) | -| Bluetooth | ❌ | — | ❌ | [Open for voting](https://wokwi.com/features#feature-1047159691) | -| Timers | 🟡 | ✔️ | ✔️ | | -| Watchdog | ❌ | ❌ | ❌ | | -| RTC | 🟡 | 🟡 | 🟡 | 只有RTC上拉/下拉电阻 | -| ADC | ✔️ | ✔️ | ❌ | 注意: analogRead()返回值最大为4095 | -| RNG | ✔️ | ✔️ | ✔️ | 随机数生成器 | -| AES Accelerator | ✔️ | ✔️ | ✔️ | | -| SHA Accelerator | ✔️ | ✔️ | ✔️ | | -| RSA Accelerator | ✔️ | ✔️ | ✔️ | | -| Hall Effect Sensor | ❌ | — | — | | -| ULP Processor | ❌ | ❌ | ❌ | | -| GDB Debugging | 🟡 | 🟡 | 🟡 | 要使用 [wokwi-gdbserver](https://github.com/wokwi/wokwi-gdbserver) | - -说明: -✔️ - 已支持 -🟡 - 部分支持/正在开发 -❌ - 不支持(但如果您需要,请[open a feature request](https://github.com/wokwi/wokwi-features/issues/new?labels=enhancement&template=feature_request.md)) -— - 此芯片不可用 - -## WiFi 仿真 - -看这里: [ESP32 WiFi Guide](./esp32-wifi). - -## 高级使用 - -### 自定义分区表(Partition Table) - -您可以通过向项目中添加“partitions.csv”文件来指定自定义分区表。查看[ESP32 Partition Table Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html)了解此文件的确切格式。 - -- [ESP32 Custom partition table code example](https://wokwi.com/projects/337425600260080210) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/libraries.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/libraries.md deleted file mode 100644 index bda6d9d..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/libraries.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Arduino库 -sidebar_label: Arduino库 - ---- - -当你想要引用一个库时,请转到代码编辑器,并在空行上键入`#`。你将看到一个自动完成下拉菜单,其中包含针对流行库的`#include`自动补全建议。 - -在默认情况下,Wokwi使用标准内置Arduino库(如Wire.h和SPI.h)编译你的代码。 - -## 添加第三方库 - -要将第三方库添加到项目中,请转到代码编辑器中的“库管理器”选项卡,然后按紫色的“+”按钮。在搜索框中输入一些文本以搜索库(例如“FastLED”),然后单击列表中的一个库名称来添加它。 - -你可以使用此方法从Arduino库管理器安装任何Arduino库。 - -### 上传自定义库 - -[俱乐部成员](https://wokwi.com/club?ref=docs_libman) 可以通过从他们的计算机中选择一个文件夹来上传任何Arduino库。要上传自定义库,请单击Arduino库管理器中的紫色“+”按钮,然后单击“上传库”。 - -所选文件夹应包含库的源代码(.h和.c/.cpp文件)。选择文件夹后,Wokwi将压缩其内容并将其上传到Wokwi的构建服务器(build server)。你将会看到这个库以.zip文件出现在库管理器中。 - -任何打开该项目的人都可以从库管理器那里下载该库。任何创建项目副本的用户都可以在复制的项目中使用该库。 - -## libraries.txt文件 - -当你通过内置的“库管理器”添加库时,它将在你的项目中创建一个“libraries.txt”文件。这是一个简单的文本文件,列出了项目中安装的所有库,每行一个库。开头为“#”的行是注释。 - -通常,你不需要自己编辑此文件——“库管理器”会为你编辑此文件。但是,如果你想安装库的特定版本,你就会发现这个文件的用处了。要选择特定版本,请在库名称后添加“@”,然后添加要安装的版本。 - -例如,以下文件将安装最新版本的 Servo 库和 FastLED 库,以及 MySensors 库的 2.3.0 版本: - -``` -# Sample libraries.txt file: -Servo -FastLED - -# Install a specific version of a library: -MySensors@2.3.0 -``` - -自定义库有以下格式:库名称,后跟文本“@wokwi:”,以及Wokwi服务器上库zip文件的唯一标识符。 - -通过将相关行从 libraries.txt 复制到另一个项目中,你可以将自定义库拷贝到另一个项目中。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png deleted file mode 100644 index a8c9b71..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-i2c-decoder.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png deleted file mode 100644 index c2cf00a..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-1.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png deleted file mode 100644 index f752cc5..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer-pulseview-2.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md deleted file mode 100644 index d124064..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/logic-analyzer.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: 逻辑分析仪使用指南 -sidebar_label: 逻辑分析仪 ---- - -import LogicAnalyzerI2CImage from './logic-analyzer-i2c-decoder.png'; - -[逻辑分析仪](../parts/wokwi-logic-analyzer) 用于记录项目中数字信号的值。这是一个强大的调试工具,可以帮助你诊断电路和代码中的问题。它作为学习辅助工具也非常有用。 - -下面是一些使用案例: - -- 观测 [analogWrite() 函数](https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/) 生成的PWM信号 -- 看 [舵机](../parts/wokwi-servo) 的控制信号 -- 开发、调试 [Raspberry Pi Pico](../parts/wokwi-pi-pico) 的PIO状态机 -- 查看SCL/SDA信号来学习I2C协议 - -
- I2C protocol signals decoded in PulseView -
Logic Analyzer: I2C protocol signals decoded in PulseView
-
- - -## 特点 - -Wokwi逻辑分析仪有8个数字通道,称为D0到D7。它的采样率为1GHz,这对大多数应用程序来说应该绰绰有余。 - -每个通道都有一个指示灯,每当通道上有活动时,LED就会变成绿色。指示灯提供了一种简单的方式来查看信号是否正确连接。 - -逻辑分析仪有一个小显示器。它显示了自仿真开始以来捕获的样本数量。 - - [可配置触发器](#using-the-trigger) 允许你仅记录部分数据。例如,你可以在按下按钮时开始记录,或者仅在SPI通信处于活动状态时记录(使用SS引脚作为触发器)。 - -## 逻辑分析仪的使用 - -首先,将Logic Analyzer添加到你的项目中。可以点按紫色 Plus 按钮,然后选择“Logic Analyzer (8 个通道)”。 - -接下来,将要记录的信号连接到Logic Analyzer引脚。例如,如果你想记录Arduino Uno与某些外围设备(如 [DS1307 RTC](../parts/wokwi-ds1307) ),之间的I2C通信,你可以将引脚A4/A5(SDA/SCL信号)连接到Logic Analyzer的引脚D0/D1。 - -开始仿真。当信号传入时,你应该会看到绿色指示灯闪烁,并且显示的样本点数量会上升。 - -要查看捕获信号,请停止仿真。然后,将下载一个名为“wokwi-logic.vcd”的文件到你的计算机上。该文件是使用 [Value Change Dump](https://en.wikipedia.org/wiki/Value_change_dump) 格式记录的信号。 - -你可以使用PulseView或GTKWave等软件打开和查捕获信号文件。这些软件还包括强大的协议分析器,可以解码许多常见的协议,如UART、I2C、WS2812等。 - -### 触发器的使用 - -默认情况下,逻辑分析仪会记录整个仿真期间的数据。通过设置数字分析器输入引脚(默认为D7),你可以使用触发器控制数据的记录。 - -这里有一些一般情况的用例: - -- [当按键按下时开始记录](https://wokwi.com/projects/313698551063380544)-将“触发模式”设置为“边缘”,并通过下拉电阻将触发引脚(D7)连接到地。将按钮的另一端连接到正电源(VCC/5V)。 -- [当按键按下时开始记录](https://wokwi.com/projects/313706149095408193) - 与上面的设置相同,但`triggerMode`设置为“电平”("level")。 -- [在1.5s之后开始记录](https://wokwi.com/projects/313706408220557888) - 将`triggerMode`设置为“边缘”( "edge"),连接触发器引脚(D7),并在1.5秒后将引脚电平更改为高。 - -使用`triggerPin` 和 `triggerLevel` 属性,可配置触发引脚并设置触发电平(“高”或“低”)。有关更多信息,请查看[wokwi-logic-analyzer documentation](../parts/wokwi-logic-analyzer)。 - -### 在PulseView中观测数据 - -PulseView是一个开源逻辑分析仪 GUI。它在Linux、Windows、Mac OS X上都可以运行,甚至还有一个Android版本。你可以访问他们的[下载界面](https://sigrok.org/wiki/Downloads) 以获取最新版本。 - -通过单击“Open”按钮旁边的小箭头并选择:“Import Value Change Dump data...”来加载所采集信号(VCD)文件。 - -![PulseView: Import Value Change Dump data](logic-analyzer-pulseview-1.png) - -你将看到一个对话框,你可以在其中选择要导入的VCD文件。选择文件后,将出现另一个带有导入选项的对话框: - -![PulseView: Compress idle periods](logic-analyzer-pulseview-2.png) - -不幸的是,默认选项通常会导致PulseView消耗大量RAM并变得处理很慢。你可以通过设置**下采样因子**来减少内存使用量。**50**的值应该适用于大多数用例。下表列出了一些常见的值: - -| Downsampling factor | Sample rate | 适用条件 | -| ------------------- | ----------- | ---------------------------------------- | -| 1000 | 1MHz | 低频信号/长时间采集(10分钟以上) | -| **50** | **20MHz** | 常见信号(UART、I2C、LED PWM、WS2812等) | -| 10 | 100MHz | 高速信号(10MHz+) | -| 1 | 1GHz | 超高速信号(50MHz+) | - -确认导入选项后,你应该会在屏幕上看到导入的信号。信号名称将是“logic.D0”、“logic.D1”等。 - -要了解有关使用PulseView的更多信息,请参阅[PulseView user manual](https://sigrok.org/doc/pulseview/unstable/manual.html)。 - -#### 将Windows配置为在PulseView中打开VCD文件 - -你可以将Windows配置为在自动使用PulseView打开VCD文件。**以管理员**打开命令提示符(cmd)窗口,然后键入以下命令: - -``` -ftype vcdfile="%ProgramFiles%\sigrok\PulseView\pulseview.exe" "-I" "vcd:downsample=50" "%1" -assoc .vcd=vcdfile -``` - -请注意,这些命令在powershell中不起作用。仅在具有管理员权限的cmd下才可以。该命令将下采样因子设置为50,但你可以选择适合你需求的不同值(见上表)。 - -### 在GTKWave中查看数据 - -[GTKWave](http://gtkwave.sourceforge.net/) 是一个开源的跨平台波形查看器软件。GTKWave可以打开Wokwi Logic Analyzer生成的VCD文件。 - -[wokwi2gtkwave Python script](https://github.com/bvandepo/wokwi2gtkwave) 是一个用户贡献的自动化项目,用于将GTKWave与Wokwi一起使用:它可以监控你的下载目录,并使用GTKWave自动打开新文件。该脚本还将GTKWave配置为自动显示来自VCD文件的信号,并缩放它们以适合你的屏幕。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/micropython.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/micropython.md deleted file mode 100644 index b057ea1..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/micropython.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: 在Wokwi使用MicroPython -sidebar_label: 使用MicroPython ---- - -你可以在Wokwi上创建和运行MicroPython项目。[Raspberry Pi Pico MicroPython 工程样例](https://wokwi.com/projects/new/micropython-pi-pico)帮助你快速开始。 - -## 项目的工程结构 - -所有的MicroPython项目必须包含一个 `main.py` 文件。当你开始仿真时,MicroPython将自动从 `main.py` 加载和执行代码。 - -Wokwi将所有项目文件复制到Pico的falsh文件系统中。这意味着你的项目可以包括额外的Python模块,你可以从`main.py`或[交互式REPL(交互式命令,开始仿真后,绘图界面出现的黑色的区域)](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop)导入它们。你的项目还可以在文本文件中包含自定义数据。 - -你可以通过运行以下方式获得falsh文件系统中所有文件的列表: - -```python -import os -print(os.listdir('/')) -``` - -# MicroPython REPL介绍 - -当`main.py`中的代码终止(或者你用Ctrl+C中断它)时,你将进入MicroPython REPL。REPL是一个交互式提示符,你可以在其中键入python命令并立即查看结果。输入`help()`可查看MicroPython API备忘表。要将代码粘贴到REPL中,按下Ctrl+E后可进入粘贴模式。 - -## 项目例子 - -- [Blink with MicroPython](https://wokwi.com/projects/300504213470839309) -- [MicroPython 7-Segment Display](https://wokwi.com/projects/300210834979684872) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/serial-monitor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/serial-monitor.md deleted file mode 100644 index e7de55f..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/serial-monitor.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: 串行监视器 -sidebar_label: 串行监视器 ---- - -串行监视器提供了一种向/从你的 Arduino 代码发送/接收信息的方法。 -你可以使用它来查看程序打印的调试消息,或发送命令控制你的程序。 - -## Arduino Uno and Mega - -Arduino Uno和Mega在硬件上都支持串行协议(USART)。串行监视器将自动连接到硬件串行端口并检测波特率,因此它是开箱即用的,无需任何特殊配置。 - -你可以使用 [Arduino's Serial class](https://www.arduino.cc/reference/en/language/functions/communication/serial/) 与串行监视器交互: - -```cpp -void setup() { - Serial.begin(115200); // Any baud rate should work - Serial.println("Hello Arduino\n"); -} - -void loop() { - // Do nothing... -} -``` - -:::warning - -只有当你从程序中打印一些输出时,串行监视器才会显示。要更改这种行为,[见下文](#display)。 - -::: - - - -Arduino Mega有多个硬件串行端口。你可以通过在 diagram.json 中配置引脚,将串行监视器连接到其他串行端口。例如,要将`Serial2`连接到串行监视器,请在diagram.json中的`connections` 部分添加以下行: - -```json - [ "mega:17", "$serialMonitor:TX", "" ], - [ "mega:16", "$serialMonitor:RX", "" ], -``` - -将 `mega` 部分替换为 你的`wokwi-arduino-mega` 板卡使用的实际ID。 - -请注意:你需要将 `$serialMonitor:TX` 连接到你的串行端口的 `RX` 引脚,并将 `$serialMonitor:RX` 连接到你的串行端口的 `TX` 引脚。我知道,这可能会令人困惑。(交叉相连,互换角色,你发我收,我发你收)。 - -## ATtiny85 + SoftwareSerial - -ATtiny85芯片硬件上没有内置串口(USART)。但是你可以使用一个USART协议的软件实现,使用`SoftwareSerial`库与串行监视器交互。 - -首先,通过将以下行添加到[diagram.json](../diagram-format)中的`connections` 部分,来声明将用于串行通信的引脚: - -```json - [ "tiny:PB0", "$serialMonitor:TX", "" ], - [ "tiny:PB1", "$serialMonitor:RX", "" ], -``` - -将 `tiny` 部分替换为`wokwi-attiny85`板卡使用的实际ID,将`PB1`/`PB0`替换为你想要使用的引脚名称。 - -然后,根据下面来配置SoftwareSerial库: - -```cpp -#include - -SoftwareSerial Serial(PB0, PB1); - -void setup() { - Serial.begin(9600); // Must be 9600 - Serial.println("Hello Arduino\n"); -} - -void loop() { - // Do nothing... -} -``` - -要保证在代码中的引脚名称与图表文件中的引脚名称匹配。第一个参数和`SoftwareSerial`的构造函数匹配并连接到`$serialMonitor:TX`的引脚,并且第二个参数应和连接到`$serialMonitor:RX`的引脚相匹配。 - -:::warning -波特率必须设置为**9600**。这是在模拟器中硬编码的!如果使用不同的值,串行监视器会中出现垃圾信息。 - -::: - -如果你想参考完整示例,请查看[ATtiny85 SoftwareSerial example project](https://wokwi.com/projects/290883003139228169)。 - -注意:如果你只想使用串行监视器打印调试消息,请查看[the TinyDebug library](../parts/wokwi-attiny85#debug-prints-with-tinydebug)。 - -## 串行监视器的配置 - -你可以通过在[diagram.json](../diagram-format)文件中添加`"serialMonitor"` 部分来配置串行监视器。 - -默认配置如下: - -```json -"serialMonitor": { - "display": "auto", - "newline": "lf" -} -``` - -当你添加 `"serialMonitor"`部分时,务必在 diagram.json 的最后一个项目之后添加它,或者确保在关闭花括号后添加逗号。你可以在[这里](https://wokwi.com/projects/308893120796295745)查看完整示例。 - -### Display - -`display` 属性用于配置何时/如何显示串行监视器。有效的值如下: - -| Value | Description | -| -------- | ------------------------------------------------ | -| auto | 当有输出时,串行监视器显示(默认值) | -| always | 当仿真开始时,串行监视器始终显示 | -| never | 串行监视器关闭显示 | -| plotter | 仿真开始时显示串行绘图仪 | -| terminal | 显示终端 (使用 [XTerm.js](https://xtermjs.org/)) | - -注意:“终端”模式支持调整文本和背景颜色。你可以查看[the Arduino ANSI colors example](https://wokwi.com/projects/308893120796295745)以查看其输出情况。 - -### Newline - -当你在串行监视器中输入一行文本时,模拟器会将该文本发送到你的程序。 - -你的程序可以使用`Serial.read()` ,也可以参看其他[Serial methods](https://www.arduino.cc/reference/en/language/functions/communication/serial/)来读取它。 - -默认情况下,模拟器还会在你输入的文本的每一行附加一个换行符(“\n”,ASCII 码 10)。 - -你可以使用`newline` 属性来更改此行为,并配置不同的字符序列: - -| Value | Characters | ASCII codes | Description | -| ----- | ---------- | ----------- | -------------------------- | -| lf | "\n" | 10 | 附加换行(the default) | -| cr | "\r" | 13 | 附加回车 | -| crlf | "\r\n" | 10 13 | 附加回车+换行 | -| none | "" | | 不将任何字符附加到输入行中 | diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/translating.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/translating.md deleted file mode 100644 index 74f7c99..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/translating.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: 翻译Wokwi交互界面 -sidebar_label: 交互界面的翻译 ---- - -本页面将介绍如何为Wokwi贡献翻译。 - -## 用户交互界面的翻译 - -要将用户界面翻译成新的语言,请下载当前版本的 [英文字符文件](https://wokwi.com/api/i18n/en.json)。翻译文件是标准JSON格式的文本文件。它可以通过任何文本编辑器以及许多翻译工具进行编辑。 - -如果您希望为现有语言之一提供翻译,您可以从[github的这个issue](https://github.com/wokwi/wokwi-features/issues/221)的列表中下载特定语言的翻译文件,并从那里开始工作。 - -当您准备提交翻译时,请[open an issue](https://github.com/wokwi/wokwi-features/issues/new?assignees=&labels=enhancement&template=translation.md&title=)并附加文件。GitHub不支持直接附加JSON文件,因此您可以将文件内容复制到新问题中,也可以压缩并附加Zip文件。 - -目前并非所有文本都可以翻译,但我们一直在添加新文本。您可以订阅[这个issue](https://github.com/wokwi/wokwi-features/issues/221),以便在有新文本可供翻译时收到通知。 - -### 现有的翻译 - -- [Chinese](https://wokwi.com/projects/new?lang=zh) -- [Spanish (spain)](https://wokwi.com/projects/new?lang=es-ES) -- [German](https://wokwi.com/projects/new?lang=de) -- [Hungarian](https://wokwi.com/projects/new?lang=hu) -- [Italian](https://wokwi.com/projects/new?lang=it) -- [Portuguese](https://wokwi.com/projects/new?lang=pt-BR) -- [Ukrainian](https://wokwi.com/projects/new?lang=ua) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md deleted file mode 100644 index edb5311..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/keyboard-shortcuts.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: 编辑器键盘快捷键 -sidebar_label: 键盘快捷键 ---- - -## 一般快捷键 - -| 描述 | Windows / Linux | Mac | -| ------------------------------ | --------------- | ------- | -| 启动模拟器 | Ctrl + Enter | ⌘ Enter | -| 保存项目 | Ctrl + S | ⌘ S | -| 代码格式化 | Alt + Shift + F | ⌥ ⇧ F | -| 开/关代码自动补全 | Ctrl + Space | ⌘ Space | -| 显示所有命令列表 | F1 | F1 | -| 跳转到文件中的下个错误 | F8 | F8 | -| 跳转到文件中的上个错误 | Shift + F8 | ⇧ F8 | - -## 普通编辑快捷键 - -| 描述 | Windows / Linux | Mac | -| -------------------------- | --------------- | --- | -| 缩进\* | Ctrl + ] | ⌘ ] | -| 反向缩进\* | Ctrl + [ | ⌘ [ | -| 注释 / 取消注释\* | Ctrl + / | ⌘ / | -| 查找 | Ctrl + F | ⌘ F | -| 替换 | Ctrl + H | ⌘ H | - -\* 如果你选中了一部分代码,这会在选中部分起作用而不是当前行。 - - -## 高级编辑快捷键 - -这些快捷键提供强大的编辑操作,例如控制多行光标和选中部分。 - -| 描述 | Windows / Linux | Mac | -| --------------------------------------- | ------------------- | --------- | -| 选中当前选中部分文字的下一处 | Ctrl + D | ⌘ D | -| 选中所有和当前选中文字相同的部分 | Ctrl + Shift + L | ⌘ ⇧ L | -| 复制上一行\* | Alt + Shift + Up | ⌥ ⇧ Up | -| 复制下一行\* | Alt + Shift + Down | ⌥ ⇧ Down | -| 将当前行上移一行\* | Alt + Up | ⌥ Up | -| 将当前行下移一行\* | Alt + Down | ⌥ Down | -| 在上一行增加一个光标 | Ctrl + Alt + Up | ⌘ ⌥ Up | -| 在下一行增加一个光标 | Ctrl + Alt + Down | ⌘ ⌥ Down | -| 扩展选中区域 | Alt + Shift + Right | ⌥ ⇧ Right | -| 缩小选中区域 | Alt + Shift + Left | ⌥ ⇧ Left | - -\* 如果你选中了一部分代码,这会在选中部分起作用而不是当前行。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md deleted file mode 100644 index ca6ed34..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-franzininho-wifi.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: board-franzininiho-wifi板卡参考 -sidebar_label: board-franzininiho-wifi板卡参考 ---- - -有关更多在巴西创建的开源ESP32-S2开发板信息,请参阅 [ESP32 Guide](../guides/esp32) 。 - -![Franzininho WiFi](https://raw.githubusercontent.com/wokwi/wokwi-boards/main/boards/franzininho-wifi/board.svg) - -## 板卡硬件 - -这个板卡包括三个内置的LED: - -- 绿色电源LED -- 连接在33号脚的橙色LED -- 连接在21号脚的蓝色LED - -## 仿真例子 - -- [Franzininho WiFi LCD Clock (NTP) client](https://wokwi.com/projects/323796775459619410) -- [Servo motor control](https://wokwi.com/projects/327061759288410708) -- [LED RGB Mixer (using 3 potentiometers)](https://wokwi.com/projects/324682033130373716) -- [CircuitPython blink example](https://wokwi.com/projects/313606939786347074) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md deleted file mode 100644 index 13cba47..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/board-ssd1306.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: board-ssd1306显示模块参考 -sidebar_label: board-ssd1306显示模块 ---- - -具有I2C接口的单色128x64 OLED显示器 - -![SSD1306](https://raw.githubusercontent.com/wokwi/wokwi-boards/main/boards/ssd1306/board.svg) - -## 引脚名称 - -| 名称 | 介绍 | Arduino Uno pin | -| ---- | --------- | --------------- | -| GND | 接地 | GND | -| VCC | 接电源 | 5V | -| SCL | I2C时钟线 | A5 | -| SDA | I2C数据线 | A4 | - -SSD1306模块的默认I2C地址为0x3c(60)。 - -## 属性 - -| Name | Description | Default value | -| ----------- | --------------- | ------------- | -| i2cAddress | 显示器的I2C地址 | "0x3c" | - -## 在Arduino中使用 - -您可以在几个SSD1306 Arduino库之间进行选择: - -- [Adafruit SSD1306](https://wokwi.com/arduino/libraries/Adafruit_SSD1306) -- [ssd1306](https://wokwi.com/arduino/libraries/ssd1306) -- [lcdgfx](https://wokwi.com/arduino/libraries/lcdgfx) -- [U8glib](https://github.com/olikraus/u8glib) -- [U8g2](https://github.com/olikraus/u8g2) (also U8x8) -- [SSD1306Ascii](https://github.com/greiman/SSD1306Ascii) -- [Tiny4kOLED](https://www.arduino.cc/reference/en/libraries/tiny4koled/) - for ATtiny85 users - -上述所有库都可以在Wokwi上找到。 - -## 仿真案例 - -- [SSD1306 Snake Game](https://wokwi.com/projects/296135008348799496) (using Adafruit SSD1306) -- [ATtiny85 Digital Temperature + Humidity on SSD1306](https://wokwi.com/projects/292900020514980360) -- [U8glib Progress Bar](https://wokwi.com/projects/300867986768527882) -- [SSD1306Ascii Fonts](https://wokwi.com/projects/291197274604700168) -- [Adafruit SSD1306 Showcase](https://wokwi.com/projects/344892392214626898) -- [U8g2 Menu](https://wokwi.com/projects/291572875238834696) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md deleted file mode 100644 index eba982a..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: wokwi-74hc165参考 -sidebar_label: wokwi-74hc165模块 ---- - -8位并行输入-串行输出(PISO)移位寄存器(输入) - -![74HC165](wokwi-74hc165.svg) - -使用74HC165移位寄存器扩展微控制器上的_input_引脚数量。有关输出移位寄存器(例如,只需几个引脚即可控制多个LED),请参阅 [wokwi-74hc595](wokwi-74hc595)。 - -## 引脚名称 - -| Pin | 介绍 | -| ----- | -------------------------- | -| D0…D7 | 并行输入 | -| PL | 并行装载(低有效) | -| CP | 串行时钟 | -| CE | 时钟使能(低有效) | -| Q7 | 串行输出 | -| Q7_N | 翻转串行输出(通常不使用) | -| DS | 串行输入* | -| GND | 接地 | -| VCC | 接电源 | - -\* 使用DS将多个74HC165单元拼凑在一起。将DS连接到芯片链中的之前74HC165芯片的Q7引脚。如果您不串联连接中的第一个芯片,您可以断开DS的连接。 - -## 工作方式 - -74HC165是一个具有八个并行输入的移位寄存器:它使您能够同时采样八个输入引脚,然后一次读取一个结果。换句话说,这是增加微控制器输入引脚数量的简单方法。 - -移位寄存器有两个状态:采样和移位。PL引脚选择活动状态。 - -### 采样 (PL low) - -当PL低时,移位寄存器处于采样状态:它从引脚D0...D7读取输入并存储它们。它还在Q7引脚中输出D7的值(因此Q7 == D7)。 - -### 移位 (PL high) - -当PL高时,移位寄存器处于移位状态。它保留从输入中读取的值,并允许您通过Q7引脚一次读取此值。您可以通过将CP(串行时钟)高脉动来读取下一个位。最初,Q7包含从D7读取的值。当您将时钟脉冲高时,您将从D6中获得值。当你再次脉冲它时,你会从D5等中获得值。 - -在PL高时更改输入引脚没有效果。 - -### 移位寄存器的使用 - -要使用移位寄存器,请将引脚D0...D7连接到您的输入(例如[滑动开关](wokwi-slide-switch) or [按键](wokwi-pushbutton))。您可能需要添加外部上拉或下拉[电阻](wokwi-resistor),特别是如果您使用按钮。 - -您还需要将PL、CP和Q7连接到微控制器。将PL和CP配置为数字输出,Q7配置为数字输入。 - -最后,连接到CE引脚接地。您可以使用此引脚禁用移位(通过将其推高),但通常不需要。不要让CE浮空,他必须有确定的状态! - -通过将PL设置为低来采样输入。 - -通过将PL设置为高来读取值。读取Q7的第一个(最重要的)位,然后脉冲CP高以获得下一个位。重复八次,直到您读取移位寄存器中的所有位。 - -### 链接多个移位寄存器 - -您可以链接多个移位寄存器,但仍然使用单个微控制器输入引脚。这种配置也被称为级联。连接如下: - -1. 将每个单元(最后一个单元除外)的Q7引脚连接到下一个单元的DS(序列输入)引脚。 - -2. 将最后一个单元的Q7引脚连接到微控制器。 - -3. PL(并行负载)和CP(时钟)引脚在所有单元之间共享。因此,您只需要两个微控制器引脚来控制整个链条。如果您使用CE(时钟启用引脚),它也可以共享。否则,只需将其连接到地面即可。 - -操作与上面相同:采样,然后移动。但有一个区别:你移位时读数超过8位。对于n个移位寄存器的链,您将通过重复读取Q7,然后给CP高脉冲来移动8\*n位。因此,对于两个74hc165单元,您将移动16位,对于三个单元,您将移动24位,等等。 - -如果您不需要所有位(例如,您有两个移位寄存器单元,只需使用10个输入),那么您可以移动更少的位,只移出您需要的就可以。 - -## Arduino代码示例 - -此示例假设您将Shift寄存器连接到Arduino,如下所示: - -| Arduino pin | 74HC165 pin | -| ----------- | ----------- | -| 2 | Q7\* | -| 3 | CP | -| 4 | PL | -| GND | CE | -| GND | GND | -| 5V | VCC | - -\* 如果您链接多个移位寄存器,请仅将链中最后一个寄存器的Q7引脚连接到Arduino。 - -```cpp -const int dataPin = 2; /* Q7 */ -const int clockPin = 3; /* CP */ -const int latchPin = 4; /* PL */ - -const int numBits = 8; /* Set to 8 * number of shift registers */ - -void setup() { - Serial.begin(115200); - pinMode(dataPin, INPUT); - pinMode(clockPin, OUTPUT); - pinMode(latchPin, OUTPUT); -} - -void loop() { - // Step 1: Sample - digitalWrite(latchPin, LOW); - digitalWrite(latchPin, HIGH); - - // Step 2: Shift - Serial.print("Bits: "); - for (int i = 0; i < numBits; i++) { - int bit = digitalRead(dataPin); - if (bit == HIGH) { - Serial.print("1"); - } else { - Serial.print("0"); - } - digitalWrite(clockPin, HIGH); // Shift out the next bit - digitalWrite(clockPin, LOW); - } - - Serial.println(); - delay(1000); -} -``` - -[Run this example on Wokwi](https://wokwi.com/projects/306031380875182657). - -## 仿真实例 - -- [Single input shift register](https://wokwi.com/projects/306031380875182657) -- [74HC165 shift register cascade](https://wokwi.com/projects/306024460940476993) - four units daisy-chained to read the state of 32 switches diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg deleted file mode 100644 index 118617e..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc165.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - 74HC165 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md deleted file mode 100644 index 78cad1b..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: wokwi-74hc595模块参考 -sidebar_label: wokwi-74hc595模块 ---- - -8位串行并行输出(SIPO)移位寄存器 - -![74HC595](wokwi-74hc595.svg) - -使用74HC595移位寄存器扩展微控制器上的_output_引脚数量。对于输入移位寄存器(例如,使用单个输入引脚读取多个按钮),请参阅[wokwi-74hc165](wokwi-74hc165) 。 - -## 引脚名称 - -| Pin | 描述 | -| ----- | --------------------------------------------- | -| DS | 串行输入 | -| SHCP | 串行时钟 | -| STCP | 锁存引脚 | -| OE | 输出使能,低有效。如果不使用,请连接到GND。 | -| Q0…Q7 | 并行输出 | -| Q7S | 串行输出* | -| MR | 复位(清除),低有效。如果不使用,请连接到VCC | -| GND | 接地 | -| VCC | 接电源 | - -\* 使用Q7S将多个74HC595单元连接在一起。将Q7S连接到链中的下一个74HC595芯片的DS引脚。 - -## 在Arduino中使用 - -您需要将至少3个引脚连接到微控制器:DS、SHCP和STCP。 - -OE引脚可用于禁用移位寄存器的输出。如果您需要该功能,请将其连接到您的微控制器。否则,将其连接到地面以永久启用输出。 - -移位寄存器的输出引脚Q0到Q7,通常连接到 [LEDs](wokwi-led)或7段显示器。 - -以下代码示例假设您将DS连接到Arduino引脚2,SHCP连接到Arduino引脚3,并且STCP到Arduino的4号引脚。它输出一个8位的数,该数每秒翻转两次: - -```cpp -const int dataPin = 2; /* DS */ -const int clockPin = 3; /* SHCP */ -const int latchPin = 4; /* STCP */ - -void setup() { - pinMode(dataPin, OUTPUT); - pinMode(clockPin, OUTPUT); - pinMode(latchPin, OUTPUT); -} - -int pattern = 0b10101010; -void loop() { - digitalWrite(latchPin, LOW); - shiftOut(dataPin, clockPin, LSBFIRST, pattern); - digitalWrite(latchPin, HIGH); - delay(500); - pattern = ~pattern; // Invert the pattern -} -``` - -你可以 [尝试该项目](https://wokwi.com/projects/301192672203244042). - -## 仿真实例 - -- [75HC595 shift register with 8 LEDs](https://wokwi.com/projects/301188813482361352) -- [Arduino 16-LED shift register blink](https://wokwi.com/projects/301213976182653448) -- [ATtiny85 75HC595 clock](https://wokwi.com/projects/301366580039647753) -- [8-digit seven-segment hex counter](https://wokwi.com/projects/301304715310793225) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg deleted file mode 100644 index b26e3d3..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-74hc595.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - 74HC595 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg deleted file mode 100644 index 4f89500..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-diagram.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - A - B - C - D - E - G - F - DP - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg deleted file mode 100644 index a53ca80..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment-digits.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - DIG1 DIG2 DIG3 DIG4 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md deleted file mode 100644 index 525185f..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-7segment.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: wokwi-7segment模块参考 -sidebar_label: wokwi-7segment模块 ---- - -七段LED显示屏 - - - -## 引脚名称 - -| Name | 描述 | -| ---- | --------------- | -| A | 顶部段 | -| B | 上部右段 | -| C | 底部右段 | -| D | 底部段 | -| E | 底部左段 | -| F | 上部右段 | -| G | 中段 | -| DP | 点 LED | -| COM | 公共端\* | -| DIG1 | 数字1引脚* | -| DIG2 | 数字2引脚\* | -| DIG3 | 数字3引脚\* | -| DIG4 | 数字4引脚\* | -| CLN | 冒号引脚 (可选) | - -\* COM是单个数字7段显示器的常见引脚。对于多位数显示器,请使用DIG1...DIG4。 - -默认情况下,段引脚(A...G、DP、CLN)连接到LED的阳极(正侧),并且普通引脚(COM,DIG1...DIG4)连接到LED的阴极(负侧)。您可以设置“common”属性为“cathode”来翻转。 - -分段映射如下: - -![7-segment display segment mapping](wokwi-7segment-diagram.svg) - -数字映射: - -![7-segment display digit mapping](wokwi-7segment-digits.svg) - -## 属性 - -| Name | 描述 | 默认值 | -| ------ | ------------------------------------ | ------- | -| common | 公用的引脚:“阴极”或“阳极” | "anode" | -| digits | 显示数字的选择: "1", "2", "3" or "4" | "1" | -| colon | 设置为“1”以显示冒号(时钟模式) | "" | -| color | 段LED的颜色 | "red" | - -### 示例 - -| 结果 | 属性 | -| ------------------------------------------------------------ | --------------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#d040d0" }` | -| | `{ "digits": "2" }` | -| | `{ "digits": "4" }` | -| | `{ "digits": "4", "colon": "1" }` | - -## 使用7段数码管显示 - -对于一位数,您需要8个微控制器GPIO引脚。每个引脚都应该通过电阻器连接到单个段, - -公共引脚应连接到5V(如果您使用的是共用阴极,则连接到GND)。如果你不使用点LED,你可以腾出一个引脚(DP)。通过打开相应驱动段来显示,低有效(或着共阴极为高有效)。 - -对于多个数字,您需要为段和点添加8个微控制器引脚,并为每个数字加一个额外的微控制器引脚。因此,如果您有4位数字,您总共需要12个微控制器引脚。在这个模式下控制显示有点棘手,因为您需要在不同的数字之间不断交替。 - -幸运的是,这里有些库可以帮助你: - -- 在 Arduino 上: 使用 [SevSeg library](https://wokwi.com/arduino/libraries/SevSeg). -- 在 Raspberry Pi Pico 上: PIO外围设备可以为您刷新显示屏。请参阅下面的 [examples](#simulator-examples) 。 - -如果您的微控制器没有其他引脚,请考虑使用[74HC595 Shift Register](wokwi-74hc595) 来驱动显示器。 - -## 仿真实例 - -- [SevSeg example: Counter](https://wokwi.com/arduino/libraries/SevSeg/SevSeg_Counter) -- [SevSeg example: String with period](https://wokwi.com/arduino/libraries/SevSeg/stringWithPeriod) -- [Arduino Alarm Clock](https://wokwi.com/playground/alarm-clock) -- [ATtiny85 7-Segment clock](https://wokwi.com/projects/301366580039647753) -- [ATtiny85 8 digit counter](https://wokwi.com/projects/301304715310793225) -- [7-Segment on the Raspberry Pi Pico (using PIO)](https://wokwi.com/projects/301404853501952521) -- [7-Segment on the Raspberry Pi Pico (MicroPython)](https://wokwi.com/projects/300936948537623048) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md deleted file mode 100644 index 177ff9d..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: wokwi-a4988模块参考 -sidebar_label: wokwi-a4988模块 ---- - -A4988步进电机驱动器,用于 [wokwi-stepper-motor](./wokwi-stepper-motor) - -![Wokwi A4988](wokwi-a4988.svg) - -## 引脚名称 - -| 名称 | 描述 | 默认 \* | -| ------ | ---------------------------- | -------- | -| ENABLE | 使能引脚,低有效(向下拉) | Low (0) | -| MS1 | 步进选择引脚1 | Low (0) | -| MS2 | 步进选择引脚2 | Low (0) | -| MS3 | 步进选择引脚3 | Low (0) | -| RESET | 复位引脚,低有效(浮空) | | -| SLEEP | 休眠引脚,低有效(上拉) | High (1) | -| STEP | 步进输入,连接到微控制器 | | -| DIR | 方向输入:0=逆时针,1=顺时针 | | -| GND | 接地 | | -| VDD | 逻辑电源 | | -| 1B | 连接到电机的B- | | -| 1A | 连接到电机的B+ | | -| 2B | 连接到电机的A+ | | -| 2A | 连接到电机的A- | | -| VMOT | 电机电源,未用于仿真 | | - -\* 默认值为Low(0)的数字引脚被拉下,默认值为High(1)的数字引脚被拉高。没有默认值的引脚是浮动的。 - -### 微步进值配置 - -标准步进电机每转有200步(步数相距1.8度)。步进驱动器支持微步进:每个脉冲将电机转动不到一步。微步法可以更精细地控制电机运动。 - -使用MS1/MS2/MS3引脚为步进驱动器选择微步进配置: - -| MS1 | MS2 | MS3 | 工作模式 | 角度 | 微步进数/每圈 | -| ---- | ---- | ---- | ------------------- | ------ | ------------- | -| 0 | 0 | 0 | Full step (default) | 1.8 | 200 | -| 1 | 0 | 0 | Half step | 0.9 | 400 | -| 0 | 1 | 0 | 1/4 step\* | 0.45 | 800 | -| 1 | 1 | 0 | 1/8 step\* | 0.225 | 1600 | -| 1 | 1 | 1 | 1/16 step\* | 0.1125 | 3200 | - -\* [Wokwi-stepper-motor](./wokwi-stepper-motor)还不完全支持这些模式。使用这些模式时,每转的步数仍然正确,但电机角度只会每半步更新一次。例如,如果您使用1/8步模式,电机将每四个步进引脚脉冲移动半步(0.9度)。 - -## 使用A4988步进驱动器 - -将步进电机连接到驱动器的1B/1A/2A/2B引脚。复位引脚必须为高,因此您可以将其连接到相邻的休眠引脚(默认情况下拉高)。或者,您可以通过将RESET/SLEEP引脚连接到微控制器,从代码中启用/禁用步进电机驱动器。 - -使用步进驱动步进电机。此引脚上的每个高脉冲都将移动电机一步(或微步,具体取决于MS1/MS2/MS3引脚)。当DIR引脚高时,步进电机将顺时针移动。当DIR引脚低时,电机将逆时针移动。 - -例如,如果DIR、MS1和MS3是LOW,而MS2是HIGH(1/4步模式),那么脉动STEP引脚将逆时针移动电机1/4步(0.45度)。 - -## 仿真案例 - -- [A4988 control using a button + switch](https://wokwi.com/projects/327823888123691604) - 按绿色按钮移动电机一步,然后移动开关以改变方向。 -- [4-Motor GCODE controller](https://wokwi.com/projects/327761195587076690) - 键入“G00 X10 Y25”以移动第一个电机10步,第二个25步。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg deleted file mode 100644 index 5001cbe..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-a4988.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A4988 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md deleted file mode 100644 index 08fb6c7..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-analog-joystick.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: wokwi-analog-joystick模块参考 -sidebar_label: wokwi-模拟摇杆模块 ---- - -带有两个轴(水平/垂直)和一个集成按钮的模拟操纵杆。 - - - -## 引脚名称 - -| Name | 描述 | -| ---- | ------------ | -| VCC | 电源输入 | -| VERT | 垂直模拟输出 | -| HORZ | 水平模拟输出 | -| SEL | 按键 | -| GND | 接地 | - -空闲位置电压为VCC/2。沿着垂直轴移动操纵杆将VERT引脚的电压从0伏特(底部)更改为VCC(顶部)。沿着水平轴移动操纵杆将HORZ引脚的电压从0伏特(右)更改为VCC(左)。 - -SEL引脚通常打开(浮动)。按下操纵杆的中心,将SEL与地连接。默认情况下,操纵杆的按钮是被模拟 [弹起](wokwi-pushbutton#bouncing) 。您可以通过将 "bounce"属性设置为“0”来禁用反弹。 - -## 属性 - -| Name | Description | Default value | -| ------ | ------------------- | ------------- | -| bounce | 设置为“0”以禁用反弹 | "" | - -## 操作操纵杆 - -您可以通过在操纵杆上移动光标来操作鼠标操作操纵杆。你会看到四个箭头,对应于四个运动方向,中间有一个圆圈。单击其中一个箭头将操纵杆轴朝这个方向移动,然后单击中间的圆圈按下操纵杆的按钮(连接到SEL引脚)。 - -要使用键盘操作操纵杆,请首先聚焦它(使用选项卡键或用鼠标单击它),然后使用箭头键移动操纵杆的轴,以及按下操纵杆按钮的空间键(连接到SEL引脚)。现在可以组合多个键,例如左箭头和顶部箭头,以对角线方向移动轴。您还可以在按住箭头的同时按下空格键在移动轴时按下操纵杆。 - -目前不支持部分移动和触摸控制。不过,我们希望看到它们得到支持-因此,如果您能胜任任务,看这里[an open issue waiting for your love](https://github.com/wokwi/wokwi-elements/issues/62)。 - -## 在Arduino使用操纵杆 - -| Joystick Pin | Arduino Pins | Example code pin | -| ------------ | ------------------------ | ---------------- | -| VCC | 5V | | -| VERT | any analog pin (A0...A5) | A0 | -| HORZ | any analog pin (A0...A5) | A1 | -| SEL | any digital pin | 2 | -| GND | GND | | - -要在Arduino中使用操纵杆,请将VERT和HORZ引脚连接到模拟引脚(A0...A6),并将这些引脚配置为输入。使用 `analogRead()`读取操纵杆位置。 - -```cpp -#define VERT_PIN A0 -#define HORZ_PIN A1 -#define SEL_PIN 2 - -void setup() { - pinMode(VERT_PIN, INPUT); - pinMode(HORZ_PIN, INPUT); - pinMode(SEL_PIN, INPUT_PULLUP); -} - -void loop() { - int vert = analogRead(VERT_PIN); - int horz = analogRead(HORZ_PIN); - bool selPressed = digitalRead(SEL_PIN) == LOW; - // horz goes from 0 (right) to 1023 (left) - // vert goes from 0 (bottom) to 1023 (top) - // selPressed is true is the joystick is pressed -} -``` - -### 操纵杆位置表 - -下表显示了`analogRead()`返回的不同操纵杆位置和相应的HORZ / VERT值: - -| Position | HORZ | VERT | Joystick | -| ------------ | ---- | ---- | ---------------------------------------------------------- | -| Top-Left | 1023 | 1023 | | -| Top | 512 | 1023 | | -| Top-Right | 0 | 1023 | | -| Left | 1023 | 512 | | -| Center | 512 | 512 | | -| Right | 0 | 512 | | -| Bottom-Left | 1023 | 0 | | -| Bottom | 512 | 0 | | -| Bottom-Right | 0 | 0 | | - -### 使用map() - -您可以使用 [map() function](https://www.arduino.cc/reference/en/language/functions/math/map/) 将值重新映射到不同的范围。 - -例如,当操纵杆一直向右时,`map(analogRead(HORZ_PIN), 0, 1023, -100, 100)`将返回 -100,当操纵杆时返回 -100 - -居中,当操纵杆一直向左时为100。 - -## 仿真案例 - -- [Etch-a-sketch](https://wokwi.com/projects/296234816685212169) - A simple drawing game using a MAX7219 LED Dot Matrix diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md deleted file mode 100644 index 8c084ae..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-mega.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: wokwi-arduino-mega参考 -sidebar_label: wokwi-arduino-mega参考 ---- - -Arduino Mega 2560。由ATmega2560芯片提供支持,该芯片拥有256K字节的Flash程序内存、8k字节的SRAM和4K字节的EEPROM。该板具有54个数字引脚、16个模拟输入引脚和4个串行端口。它以16MHz运行。 - - - -## 引脚名称 - -引脚0到53是数字GPIO引脚。引脚A0至A15除了是数字GPIO引脚外,还兼作模拟输入引脚。 - -有五个接地引脚:GND.1(引脚13旁边)、GND.2/GND.3(Vin引脚旁边)和GND.4/GND.5(在双排母头连接器的底部) - -引脚VIN/5V连接到正电源。双排母头连接器顶部还有两个额外的电源引脚,5V.1/5V.2。 - -模拟中没有引脚3.3V / IOREF / AREF / RESET。 - -数字引脚2 ... 13、44、45和46支持硬件PWM(共15个PWM通道)。 - -一些数字引脚还具有额外的功能: - -| Pin | Function | Signal | External interrupt | -| --- | -------- | ---------------- | ------------------ | -| 0 | Serial | RX | | -| 1 | Serial | TX | | -| 2 | | | INT4 | -| 3 | | | INT5 | -| 19 | Serial1 | RX | INT2 | -| 18 | Serial1 | TX | INT3 | -| 17 | Serial2 | RX | | -| 16 | Serial2 | TX | | -| 15 | Serial3 | RX | | -| 14 | Serial3 | TX | | -| 20 | I2C | SDA (Data) | INT1 | -| 21 | I2C | SCL (Clock) | INT0 | -| 50 | SPI | MISO | | -| 51 | SPI | MOSI | | -| 52 | SPI | SCK (Clock) | | -| 53 | SPI | SS (Chip select) | | - -### 板载LED - -主板包括四个LED: - -| LED | Function | -| ---- | --------------------------- | -| L | 连接至数字脚13 | -| RX | 串口RX工作指示灯 | -| TX | 串口TX工作指示灯 | -| ON | 电源LED。模拟运行时始终打开 | - -一般来说,只有“L”LED才能由用户的代码控制。您可以使用 `LED_BUILTIN` 常量从代码中引用它: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -有关完整的代码示例,请参阅[Blink](https://wokwi.com/arduino/libraries/demo/blink-mega) 。 - -## 仿真功能 - -Arduino Mega 2560使用 [AVR8js Library](https://github.com/wokwi/avr8js)进行仿真。下表总结了现有功能的状态: - -| 外设 | 状态 | 注意 | -| ------------------------ | ------ | ----------------------------------------------- | -| Processor | ✔️ | | -| GPIO | ✔️ | Including External/Pin Change Interrupts | -| 8-bit timers | ✔️ | Timer0, Timer2 | -| 16-bit timers | ✔️ | Timer1, Timer3, Timer4, Timer5 \* | -| Output Compare Modulator | ❌ || -| Watchdog Timer | ✔️ | | -| USART | ✔️ | USART0, USART1, USART1, USART3 | -| SPI | 🟡 | Master mode only | -| I2C | 🟡 | Master mode only | -| EEPROM | ✔️ | | -| Clock Prescale | ✔️ | | -| ADC | ✔️ | Used by analogRead() | -| Analog Comparator | ❌ | | -| GDB Debugging | ✔️ | See the [GDB Debugging Guide](../gdb-debugging) | - -说明: -✔️ 可仿真 -🟡 可以仿真, 但是要看注意 -❌ 不支持 - -\* 16位计时器中没有实现输入捕获。 - -如果您需要任何缺失的功能,请 [open an issue on the AVR8js repo ](https://github.com/wokwi/avr8js/issues/new)或者 [reach out on Discord](https://wokwi.com/discord).。 - -### 串行监视器 - -您可以使用串行监视器从Arduino代码接收信息,例如调试打印。您还可以使用它向代码发送信息,例如文本命令。 - -有关更多信息和代码示例,请查看 [the Serial Monitor guide](../guides/serial-monitor)。它还解释了如何将串行监视器连接到其他引脚(例如,连接到`Serial2` 而不是`Serial` ),以及如何配置行尾字符。 - -### 库 - -该模拟器支持许多流行的Arduino库。有关完整列表,请参阅[Libraries guides](../guides/libraries)。 - -## 仿真案例 - -- [Arduino Mega Blink](https://wokwi.com/arduino/libraries/demo/blink-mega) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md deleted file mode 100644 index 0923903..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-nano.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: wokwi-arduino-nano参考 -sidebar_label: wokwi-arduino-nano参考 ---- - -Arduino Nano与[Arduino Uno](wokwi-arduino-uno)非常相似,但外形较小。它携带相同的ATmega328p芯片,该芯片具有32K字节的Flash程序内存、2k字节的SRAM和1K字节的EEPROM。 - - - -有关更多信息,请参阅 [wokwi-arduino-uno reference](wokwi-arduino-uno)。 - -## 与Arduino Uno的区别 - -Arduino Nano包括两个额外的模拟引脚:A6和A7。这些引脚只能用于模拟输入。它们不能用作数字GPIO引脚。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md deleted file mode 100644 index 3bccfd8..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-arduino-uno.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: wokwi-arduino-uno参考 -sidebar_label: wokwi-arduino-uno参考 ---- - -Arduino Uno是Arduino家族中最受欢迎的板卡。它由ATmega328p芯片供电,该芯片具有32K字节的Flash程序内存、2k字节的SRAM和1K字节的EEPROM。 - - - -## 引脚名称 - -引脚0到13是数字GPIO引脚。引脚A0至A5除了是数字GPIO引脚外,还兼作模拟输入引脚。 - -有三个接地引脚:GND.1,在板的顶部,在引脚13旁边,GND.2/GND.3在底部。 - -引脚VIN/5V连接到正电源。 - -模拟中没有引脚3.3V / IOREF / AREF / RESET。 - -数字引脚3、5、6、9、10和11支持硬件PWM。 - -一些数字引脚还具有额外的功能: - -| Pin | Function | Signal | -| --- | ------------------ | ---------------- | -| 0 | Serial (USART) | RX | -| 1 | Serial (USART) | TX | -| 2 | External interrupt | INT0 | -| 3 | External interrupt | INT1 | -| 10 | SPI | SS (Chip select) | -| 11 | SPI | MOSI | -| 12 | SPI | MISO | -| 13 | SPI | SCLK (Clock) | -| A4 | I2C | SDA (Data) | -| A5 | I2C | SCL (Clock) | - -### 板载LED - -主板包括四个LED: - -| LED | Function | -| ---- | --------------------------- | -| L | 连接至数字脚13 | -| RX | 串口RX工作指示灯 | -| TX | 串口TX工作指示灯 | -| ON | 电源LED。模拟运行时始终打开 | - -一般来说,只有“L”LED才能由用户的代码控制。您可以使用 `LED_BUILTIN` 常量从代码中引用它: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -有关完整的代码示例,请参阅[Blink](https://wokwi.com/arduino/libraries/demo/blink) 。 - -## 属性 - -| Name | Description | Default value | -| --------- | ------------------------------------------------------------ | ------------- | -| frequency | MCU时钟频率,以赫兹为单位。常见值: "8m", "16m", and "20m" \* | "16m" | - -\* 许多Arduino库假设16MHz时钟频率。更改时钟频率可能将使您的功能失效! - -## 仿真功能 - -Arduino Uno使用 [AVR8js Library](https://github.com/wokwi/avr8js)进行仿真。下表总结了现有功能的状态: - -| 外设 | 状态 | 注意 | -| ----------------- | ------ | ---------------------------------------------------------------------- | -| Processor | ✔️ | | -| GPIO | ✔️ | Including External/Pin Change Interrupts | -| 8-bit timers | ✔️ | Timer0, Timer2 | -| 16-bit timer | ✔️ | Timer1 | -| Watchdog Timer | ✔️ | [Usage example](https://wokwi.com/projects/309372800631571009) | -| USART | ✔️ | | -| SPI | 🟡 | Master mode only | -| I2C | 🟡 | Master mode only | -| EEPROM | ✔️ | | -| Clock Prescale | ✔️ | | -| ADC | ✔️ | Used by analogRead() | -| Analog Comparator | ❌ | | -| GDB Debugging | ✔️ | See the [GDB Debugging Guide](../gdb-debugging) | - -说明: -✔️ 可仿真 -🟡 可以仿真, 但是要看注意 -❌ 不支持 - -如果您需要任何缺失的功能,请 [open an issue on the AVR8js repo ](https://github.com/wokwi/avr8js/issues/new)或者 [reach out on Discord](https://wokwi.com/discord).。 - -### 串行监视器 - -您可以使用串行监视器从Arduino代码接收信息,例如调试打印。您还可以使用它向代码发送信息,例如文本命令。 - -有关更多信息和代码示例,请查看[the Serial Monitor guide](../guides/serial-monitor).。它还解释了如何配置串行监视器,例如设置行尾字符。 - -### 库 - -该模拟器支持许多流行的Arduino库。有关完整列表,请参阅 [Libraries guides](../guides/libraries)。 - -## 仿真案例 - -- [Arduino Blink](https://wokwi.com/arduino/libraries/demo/blink) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md deleted file mode 100644 index 223359c..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: wokwi-attiny85参考 -sidebar_label: wokwi-attiny85参考 ---- - -ATtiny85是一款小型8位AVR微控制器。它有8KB的Flash程序内存、512字节的SRAM和512字节的EEPROM。 - -![ATtiny85](wokwi-attiny85.svg) - -## 引脚名称 - -| Pin | Name | Functions | Analog Channel | -| --- | ---- | ----------------- | -------------- | -| 1 | PB5 | Reset | 0 | -| 2 | PB3 | | 3 | -| 3 | PB4 | | 2 | -| 4 | GND | Ground | | -| 5 | PB0 | SPI:MOSI, I2C:SDA | | -| 6 | PB1 | SPI:MISO | | -| 7 | PB2 | SPI:SCK, I2C:SCL | 1 | -| 8 | VCC | Positive voltage | | - -## 属性 - -| Name | Description | Default value | -| --------- | ------------------------------------------------------------ | ------------- | -| env | 使用Arduino核心:“attiny”或“ATTinyCore” | "attiny" | -| frequency | MCU时钟频率,以赫兹为单位。共同价值观:: "1m", "8m", "16m", and "20m" | "8m" | - -## 代码和库 - -Arduino核心提供内置的Arduino函数,如`pinMode()` and `digitalRead()`,以及一组标准Arduino库,如Servo、Wire和SPI。 - -在为ATtiny85编译代码时,您可以在两个不同的内核中进行选择: - -- [attiny](https://github.com/damellis/attiny) - 一个最小的核心,提供大多数标准的Arduino函数。这是默认值。 - -- [ATTinyCore](https://github.com/SpenceKonde/ATTinyCore)-高级核心,包括Wire、SPI、Servo和Serial库。在 [ATTinyCore documentation](https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/ATtiny_x5.md)中了解更多信息)。 - -注意:ATTinyCore是一个新选项,尚未经过广泛测试。 - -要选择核心,请设置 `wokwi-attiny85`部分的“env”属性,例如 - -```json - "parts": [ - { - "type": "wokwi-attiny85", - "id": "tiny", - "attrs": { - "env": "ATTinyCore" - } - … - }, - … - ] -``` - -### 使用TinyDebug进行调试打印 - -您可以使用 [TinyDebug library](https://github.com/wokwi/TinyDebug) 从代码中打印调试消息。这些消息显示在Wokwi的串行监视器中。要使用该库,请在项目中包含“TinyDebug.h”,并创建一个文本为“TinyDebug”的[libraries.txt](../guides/libraries) 文件。 - -调用`Debug.begin()`,然后使用`Debug.println()`打印调试消息: - -```cpp -#include - -void setup() { - Debug.begin(); - Debug.println(F("Hello, TinyDebug!")); -} - -void loop() { - /* Sprinkle some magic code here */ -} -``` - -同样,您可以使用`Debug`对象从模拟器的串行监视器读取输入: - -```cpp -if (Debug.read() == 'c') { - // Do something, e.g. toggle an LED -} -``` - -有关可用方法的更多信息,请查看[Stream class documentation](https://www.arduino.cc/reference/en/language/functions/communication/stream/#_functions)。 - -“调试”接口消耗约30字节的SRAM和150字节的闪存,具体取决于您在代码中使用的方法。这有时可能是一个问题,因为ATtiny85只有512字节的SRAM。 - -这就是为什么TinyDebug还提供了一个不使用任何SRAM的替代轻量级日志界面。它提供了两个函数,`tdPrint()`和`tdPrintln()`。缺点是,您只能打印c样式(`char*`)字符串: - -```cpp -#include - -void setup() { - tdPrintln(F("I do not use any SRAM!")); -} - -void loop() { - /* ... */ -} -``` - -TinyDebug库在Wokwi中开箱即用,对您的图表没有任何更改。它使用内部调试接口是Wokwi仿真引擎的一部分,不使用任何MCU引脚。 - -您可以在物理ATtiny85芯片上安全地运行使用TinyDebug的代码。物理芯片没有有调试界面,所以你显然不会看到调试消息,但除此之外,它不干扰你的代码。 - -有关完整的代码示例,请查看[TinyDebug demo project on Wokwi](https://wokwi.com/projects/300650387867697672)。 - -### 串口输出 - -ATtiny85没有专用的UART外围设备,但仍然可以使用软件串行库获得串行输出。 - -有关更多信息和演示代码,请参阅[Serial Monitor Guide](../guides/serial-monitor#attiny85--softwareserial)。 - -### I2C - -对于I2C通信,请使用 [TinyWireM](https://github.com/adafruit/TinyWireM) 库。 - -## 仿真功能 - -ATtiny85使用 [AVR8js Library](https://github.com/wokwi/avr8js)仿真。下表总结了功能的状态: - -| 外设 | 状态 | 注意 | -| ----------------- | ------ | ----------------------------------------------- | -| Processor | ✔️ | | -| GPIO | ✔️ | 6 GPIO pins (PB0...PB6), INT0 / PCINT support | -| USI | 🟡 | Only works in I2C mode | -| Timer0 | ✔️ | PWM support for PB0/PB1 | -| Timer1 | ❌ | | -| Watchdog Timer | ✔️ | | -| EEPROM | ✔️ | | -| ADC | ✔️ | Used by analogRead() | -| Analog Comparator | ❌ | | -| GDB Debugging | ✔️ | See the [GDB Debugging Guide](../gdb-debugging) | - -说明: -✔️ 可仿真 -🟡 可以仿真, 但是要看注意 -❌ 不支持 - -如果您需要任何缺失的功能,请 [open an issue on the AVR8js repo ](https://github.com/wokwi/avr8js/issues/new)或者 [reach out on Discord](https://wokwi.com/discord).。 - -## 仿真案例 - -- [ATtiny85 Blink](https://wokwi.com/projects/283019827166052872) -- [ATtiny85 Simon Game](https://wokwi.com/projects/285525640477671948) -- [ATtiny85 FastLED Matrix](https://wokwi.com/projects/283910810787381773) -- [ATtiny85 Charlieplexing](https://wokwi.com/projects/283912288194265608) -- [ATtiny85 SSD1306 + DHT](https://wokwi.com/projects/292900020514980360) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg deleted file mode 100644 index 591ceba..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-attiny85.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - ATTINY8520PU - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md deleted file mode 100644 index a2569a9..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-buzzer.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: wokwi-buzze参考 -sidebar_label: wokwi-buzzer参考 ---- - -压电蜂鸣器 - - - -## 引脚名称 - -| Name | Description | -| ---- | ----------- | -| 1 | 负(黑色)引脚 | -| 2 | 正(红色)引脚 | - -## 属性 - -| Name | Description | Default value | -| ------ | ----------------------------------------- | ------------- | -| mode | 蜂鸣器操作模式:"smooth" or "accurate" | "smooth" | -| volume | 声音的音量(响度),介于“0.01”和“1.0”之间 | "1.0" | - -### 工作模式 - -蜂鸣器可以以两种模式运行:“smooth”(默认)和“accurate”。 - -“smooth”听起来更好,适合简单的单频音调。可以在使用Arduino的`tone()`函数演奏旋律或演奏音调时使用。复杂和复调声音在“平滑模式”下可能无法正常播放(或根本无法播放)。 - -当您需要播放复杂的声音时,请使用“accurate”模式。它将准确地播放你输入的声音。然而,它会为您的声音添加可听到的咔嗒声。这些噪音是由于模拟速度的波动-它并不总是能够提供完整的实时声音缓冲区。 - -## Arduino例子 - -将蜂鸣器的引脚1连接到Arduino GND引脚,将蜂鸣器引脚2连接到Arduino引脚8。然后使用`tone()`函数播放声音: - -```cpp -tone(8, 262, 250); // Plays 262Hz tone for 0.250 seconds -``` - -## 仿真案例 - -- [Simon game](https://wokwi.com/arduino/libraries/demo/simon-game) - 一个有4个按钮的记忆游戏 -- [Diatonic piano](https://wokwi.com/projects/291958456169005577) -一架8音符钢琴,使用1-8键按下按钮并播放音符 -- [Alarm clock](https://wokwi.com/playground/alarm-clock) - 使用蜂鸣器播放闹钟声 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md deleted file mode 100644 index 856bdc7..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dht22.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: wokwi-dht22参考 -sidebar_label: wokwi-dht22参考 ---- - -数字湿度和温度传感器。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------------------- | -| VCC | Positive voltage | -| SDA | 数字数据引脚(输入/输出) | -| NC | Not connected | -| GND | Ground | - -## 属性 - -| Name | Description | Default value | -| ----------- | ------------------------ | ------------- | -| temperature | 初始温度值(摄氏度) | "24" | -| humidity | 初始相对湿度值(百分比) | "40" | - -## 控制温度 - -您可以在模拟运行期间更改温度和湿度值。单击DHT22传感器,将打开一个小弹出窗口。使用温度和湿度滑块来改变值。点按“隐藏”以关闭弹出窗口。 - -:::warning - -如果您尝试从ESP32读取此传感器,请使用“DHT sensor library for ESPx”库。其他DHT22库可能无法在ESP32上可靠地工作。您可以使用此 [example project](https://wokwi.com/projects/322410731508073042) 作为开始的点。 - -::: - -## 仿真案例 - -- [DHTlib DHT22 test](https://wokwi.com/arduino/libraries/DHTlib/dht22_test) -- [DHT-sensor-library code examples](https://wokwi.com/arduino/libraries/DHT-sensor-library) -- [DHT22 on the ESP32](https://wokwi.com/projects/322410731508073042) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md deleted file mode 100644 index da0d065..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-dip-switch-8.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: wokwi-dip-switch-8参考 -sidebar_label: wokwi-dip-switch-8参考 ---- - -一个8路开关 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------------- | -| 1a | 开关1的第一个连接点 | -| 1b | 开关1的第二个连接点 | -| 2a | 开关2的第一个连接点 | -| 2b | 开关2的第二个连接点 | -| … | … | -| 8a | 开关8的第一个连接点 | -| 8b | 开关8的第二个连接点 | - -## 键盘操作 - -在仿真运行期间,您可以使用键盘切换开关。单击DIP开关进行选择,然后按键“1”到“8”切换开关。 - -Firefox用户:如果键盘快捷键不能工作,请确保禁用“开始键入时搜索文本”设置。 - -## 仿真案例 - -- [DIP Switch + LED Bar example](https://wokwi.com/projects/314167394611233344) -- [Arduino PIND register example](https://wokwi.com/projects/314168546236039745) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md deleted file mode 100644 index 032b3a7..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ds1307.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: wokwi-ds1307参考 -sidebar_label: wokwi-ds1307参考 ---- - -带有I2C接口和56字节NV SRAM的RTC(实时时钟)模块。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------------------ | -| GND | Ground | -| 5V | Positive voltage (5V) | -| SDA | I2C 数据线 | -| SCL | I2C 时钟线 | -| SQW | 方波输出。模拟中不可用。 | - -DS1307的I2C地址是0x68。 - -## 仿真工作 - -模拟的DS1307在开始模拟时会自动初始化为当前系统时间。然后它继续数时间。 - -仿真中运行的代码可以更新DS1307的日期/时间,DS1307将跟踪更新时间。 - -## 仿真案例 - -- [Reading current date/time using RTClib](https://wokwi.com/projects/305979285237137984) -- [Alarm clock](https://wokwi.com/playground/alarm-clock) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md deleted file mode 100644 index bf5956a..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-franzininho.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: wokwi-franzininho参考 -sidebar_label: wokwi-franzininho参考 ---- - -一个基于ATtiny85的小型开发板,在巴西很受欢迎。 - - - -## 关于Franzininho - -Franzininho DIY在巴西设计的开源Arduino兼容板中。它是基于在ATtiny85芯片上,因此请参阅[ATtiny85 documentation](wokwi-attiny85) 了解技术信息。 - -黄色LED(LED1)连接到ATtiny85芯片的引脚PB1。您可以进一步了解 [Franzininho homepage](https://franzininho.com.br/) (葡萄牙语)中的开发板及其背后的人。 - -## 引脚名称 - -| Pin | ATtiny85 Pin | Functions | Analog Channel | PWM | -| --- | ------------ | --------------------- | -------------- | --- | -| 0 | PB0 | SPI:MOSI, I2C:SDA | | Yes | -| 1 | PB1 | SPI:MISO, LED1 | | Yes | -| 2 | PB2 | SPI:SCK, I2C:SCL | A1 | - | -| 3 | PB3 | | A3 | - | -| 4 | PB5 | Reset | A0 | - | -| 5 | PB4 | | A2 | Yes | -| VCC | VCC | Positive voltage (5V) | | - | -| GND | GND | Ground | | - | - -### 板载Led - -主板包括两个3毫米LED: - -| LED | Color | Function | -| ---- | ------ | --------------------------- | -| ON | Green | 电源LED。模拟运行时始终打开 | -| LED1 | Yellow | 连接到PB1 | - -## 仿真案例 - -- [Franzininho Blink](https://wokwi.com/projects/301693553069785610) -- [Franzininho Clock](https://wokwi.com/projects/301738586036765194), using two [74HC595 shift registers](wokwi-74hc595) and [DS1307 RTC](wokwi-ds1307) -- [Franzininho Analog Temperature Sensor](https://wokwi.com/projects/301751077214093834), using [NTC thermistor](wokwi-ntc-temperature-sensor) and [SSD1306](wokwi-ssd1306) -- [Franzininho Digital Humidity and Temperature](https://wokwi.com/projects/301745949656482317), using [DHT22](wokwi-dht22) and [SSD1306](wokwi-ssd1306) -- [Ultrasonic Sensor](https://wokwi.com/projects/302020345098928648), using [74HC595](wokwi-74hc595) and HC-SR04 -- [Servo Motor control](https://wokwi.com/projects/302291615188255242), using [Motor Micro Servo](wokwi-servo) and [LCD1602](wokwi-lcd1602) -- [External pulse counter](https://wokwi.com/projects/302199144424931848) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md deleted file mode 100644 index e4a26ef..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-hc-sr04.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: wokwi-hc-sr04参考 -sidebar_label: wokwi-hc-sr04参考 ---- - -HC-SR04超声波距离传感器 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------------------ | -| VCC | Voltage supply (5V) | -| TRIG | 脉冲开始测量 | -| ECHO | 测量高脉冲长度以获得距离 | -| GND | Ground | - -## 属性 - -| Name | Description | Default value | -| -------- | ---------------------- | ------------- | -| distance | 初始距离值,单位:厘米 | "400" | - -## 工作方式 - -要开始新的距离测量,请将TRIG引脚设置为10uS或更高的高度。然后等到ECHO引脚变高,并计算它保持高的时间(脉冲长度)。ECHO高脉冲的长度与距离成正比。下表将ECHO脉冲长度(以微秒为单位)转换为厘米/英寸: - -| 单位 | 距离 | -| ----------- | -------------- | -| Centimeters | 脉冲长度 / 58 | -| Inches | 脉冲长度 / 148 | - -### 设置距离 - -要在模拟运行时更改距离,请单击图表中的HC-SR04图并使用滑块设置距离值。您可以选择2厘米到400厘米之间的任何值。 - -## Arduino代码参考 - -```cpp -#define PIN_TRIG 3 -#define PIN_ECHO 2 - -void setup() { - Serial.begin(115200); - pinMode(PIN_TRIG, OUTPUT); - pinMode(PIN_ECHO, INPUT); -} - -void loop() { - // Start a new measurement: - digitalWrite(PIN_TRIG, HIGH); - delayMicroseconds(10); - digitalWrite(PIN_TRIG, LOW); - - // Read the result: - int duration = pulseIn(PIN_ECHO, HIGH); - Serial.print("Distance in CM: "); - Serial.println(duration / 58); - Serial.print("Distance in inches: "); - Serial.println(duration / 148); - - delay(1000); -} -``` - -在这里尝试 [this example on Wokwi](https://wokwi.com/projects/304444938977804866) - -## 仿真实例 - -- [Distance sensor and LED](https://wokwi.com/projects/290056311044833800) -- [Display distance on LCD screen](https://wokwi.com/projects/290043622233997832) -- [Seven segment distance display](https://wokwi.com/projects/295030553275532810) -- [Franzininho ultrasonic sensor](https://wokwi.com/projects/302020345098928648) -- [Parking sensor](https://wokwi.com/projects/290964046833779209) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md deleted file mode 100644 index 56b2163..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ili9341.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: wokwi-ili9341 Reference -sidebar_label: wokwi-ili9341 ---- - -使用SPI接口的全彩240X320的LCD-TFT显示屏 - - - -## 引脚名称 - -| # | Name | Description | Arduino Uno pin | -| --- | ---- | --------------------- | --------------- | -| 1 | VCC | Supply voltage | 5V | -| 2 | GND | Ground | GND | -| 3 | CS | Chip select | 10† | -| 4 | RST | Reset\* | - | -| 5 | D/C | Data/command pin | 9† | -| 6 | MOSI | SPI data (MCU → LCD) | 11 | -| 7 | SCK | SPI clock | 13 | -| 8 | LED | Backlight LED\* | 5V | -| 9 | MISO | SPI data (LCD → MCU)‡ | 12 | - -\* RST和背光灯(LED)引脚在模拟中不可用。 -† 您可以将CS和D/C连接到任何数字Arduino引脚。这里的引脚数字只是一个例子。 -‡ 您可以断开MISO的连接,除非您需要从LCD读取数据。 - -## 属性 - -| Name | Description | Default value | -| -------------- | ------------------------- | ------------- | -| flipHorizontal | 设置为“1”以水平翻转显示器 | "" | -| flipVertical | 设置为“1”以垂直翻转显示器 | "" | - -## 在Arduino使用 - -您可以使用_Adafruit_ILI9341_库或_lcdgfx_库驱动液晶显示器接口。以下代码示例显示了_Adafruit_ILI9341_的基本用法。它适用于上表中的引脚连接: - -```cpp -#include "SPI.h" -#include "Adafruit_GFX.h" -#include "Adafruit_ILI9341.h" - -#define TFT_DC 9 -#define TFT_CS 10 -Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); - -void setup() { - tft.begin(); - - tft.setCursor(26, 120); - tft.setTextColor(ILI9341_RED); - tft.setTextSize(3); - tft.println("Hello, TFT!"); - - tft.setCursor(20, 160); - tft.setTextColor(ILI9341_GREEN); - tft.setTextSize(2); - tft.println("I can has colors?"); -} - -void loop() { } -``` - -[Run this example on Wokwi](https://wokwi.com/projects/308024602434470466) - -## 仿真案例 - -- [Adafruit ILI9341 GFX Example](https://wokwi.com/projects/307567201804616256) -- [Fingerprint Pattern](https://wokwi.com/projects/307567963154678338) -- [Mandelbrot Set](https://wokwi.com/projects/307567275170333248) -- [Neon Ribbons](https://wokwi.com/projects/307577144545903170) -- [Wokwi Logo over Plamsa](https://wokwi.com/projects/307664460274729536) -- [Lode Runner with lcdgfx](https://wokwi.com/projects/308022099088245312) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md deleted file mode 100644 index 0f6be4f..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-receiver.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: wokwi-ir-receiver参考 -sidebar_label: wokwi-ir-receiver参考 ---- - -38KHz红外接收器 - - - -## 引脚名称 - -| Name | Description | -| ---- | ---------------- | -| GND | Ground | -| VCC | Positive voltage | -| DAT | Digital output | - -## 使用接收器 - -The receiver can be used in two ways: - -1. Use the [IR Remote](wokwi-ir-remote) to send infrared commands. -2. Click on the receiver (while the simulation is running) to send arbitrary [NEC-encoded IR signals](https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051#NEC_Protocol). The user interface lets you specify both the address and the command fields on the NEC message. - -To read the commands from your Arduino Code, you can use the [IRRemote](https://github.com/Arduino-IRremote/Arduino-IRremote) or [IRMP](https://github.com/ukw100/IRMP) libraries. - -接收器可以通过两种方式使用: - -1. 使用 [IR Remote](wokwi-ir-remote) 发送红外命令。 - -2. 单击接收器(在模拟运行时)发送任意 [NEC-encoded IR signals](https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051#NEC_Protocol) 。用户界面允许您指定NEC消息上的地址和命令字段。 - -要从Arduino代码中读取命令,您可以使用 [IRRemote](https://github.com/Arduino-IRremote/Arduino-IRremote) 或者 [IRMP](https://github.com/ukw100/IRMP) 库。 - -## 仿真案例 - -- [IRRemote + LCD Display](https://wokwi.com/projects/298934082074575369) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md deleted file mode 100644 index 14c0403..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ir-remote.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: wokwi-ir-remote参考 -sidebar_label: wokwi-ir-remote参考 ---- - -38KHz红外遥控器,带20个功能键。与[IR Receiver module](wokwi-ir-receiver)一起使用。 - - - -## 功能键 - -密钥发送使用[NEC frame format](https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051#NEC_Protocol).编码的红外消息。每个键发送不同的命令值(见下表),地址字段始终为0。 - -每个按键都有一个键盘快捷键,可以在遥控器对焦时激活该键。 - -下表列出了NEC命令、NEC编码值和键盘快捷键,对于每个按键: - -| Key | Command | NEC encoded | Keyboard Shortcut | -| -------- | ------- | ----------- | ----------------- | -| Power | 162 | 0xFFA25D | O | -| Menu | 226 | 0xFFE21D | M | -| Test | 34 | 0xFF22DD | T | -| Plus | 2 | 0xFF02FD | + | -| Back | 194 | 0xFFC23D | B | -| Previous | 224 | 0xFFE01F | Left arrow key | -| Play | 168 | 0xFFA857 | P | -| Next | 144 | 0xFF906F | Right arrow key | -| 0 | 104 | 0xFF6897 | 0 | -| Minus | 152 | 0xFF9867 | - (minus) | -| C | 176 | 0xFFB04F | C | -| 1 | 48 | 0xFF30CF | 1 | -| 2 | 24 | 0xFF18E7 | 2 | -| 3 | 122 | 0xFF7A85 | 3 | -| 4 | 16 | 0xFF10EF | 4 | -| 5 | 56 | 0xFF38C7 | 5 | -| 6 | 90 | 0xFF5AA5 | 6 | -| 7 | 66 | 0xFF42BD | 7 | -| 8 | 74 | 0xFF4AB5 | 8 | -| 9 | 82 | 0xFF52AD | 9 | - -## 仿真案例 - -- [IRRemote + LCD Display](https://wokwi.com/projects/298934082074575369) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg deleted file mode 100644 index 8626146..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5-diagram.svg +++ /dev/null @@ -1,102 +0,0 @@ - - Coil Unpowered - - - - - - - - - - - - - - - - - - P1 - NC1 - NO1 - - - - - - - - - - - - - - - - - - - - P2 - NC2 - NO2 - - - - Coil Powered - - - - - - - - - - - - - - - - - - - - P1 - NC1 - NO1 - - 5V - GND - - - - - - - - - - - - - - - - - - - - P2 - NC2 - NO2 - - - - - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md deleted file mode 100644 index 616e564..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ks2e-m-dc5.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ks2e-m-dc5 Relay参考 -sidebar_label: wokwi-ks2e-m-dc5继电器参考 ---- - -双路双刀(DPDT)继电器 - - - -## 引脚名称 - -| Name | Description | -| ----- | --------------------------------- | -| COIL1 | 线圈的第一个端子 | -| COIL2 | 线圈的第二个端子 | -| P1 | 第一个连接点 | -| NC1 | 正常关闭 - 当线圈不供电时连接到P1 | -| NO1 | 正常打开-线圈供电时连接到P1 | -| P2 | 第二个连接点 | -| NC2 | 正常关闭-当线圈无法供电时连接到P2 | -| NO2 | 正常打开-线圈供电时连接到P2 | - -## 操作方式 - -继电器是一种具有两种状态的电子开关:线圈无动力和线圈供电。默认情况下,线圈没有动力。您可以通过在引脚COIL1和COIL2之间施加电压来为线圈供电。 - -当线圈断开电源时,P1连接到NC1,P2连接到NC2(通常关闭/连接的NC手段)。 - -当线圈供电时,P1连接到NO1,P2连接到NO2(NC表示正常打开/断开)。 - -下图总结了继电器的状态: - -![Relay connections diagram](wokwi-ks2e-m-dc5-diagram.svg) - -## 仿真案例 - -- [One relay controlling two LEDs](https://wokwi.com/projects/322846360729551444) -- [Relay Flip-Flop](https://wokwi.com/projects/322802227591774802) - 使用三个继电器的单位内存元素 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg deleted file mode 100644 index ea16027..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-diagram.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - A - B - C - S1 - S2 - - - - - - - - - - - CLK - DT - VCC - SW - GND - - - - - - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png deleted file mode 100644 index 88c5ef7..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040-timing.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md deleted file mode 100644 index 77a03bf..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ky-040.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: wokwi-ky-040旋转编码器参考 -sidebar_label: wokwi-ky-040旋转编码器参考 ---- - -KY-040旋转编码器模块,每转20步。 - - - -## 引脚名称 - -| Name | 描述 | -| ---- | --------------------------------------------- | -| CLK | 旋转编码器引脚A | -| DT | 旋转编码器引脚B | -| SW | 按钮按下引脚。正常情况下为断开,在按下时为GND | -| VCC | Voltage supply | -| GND | Ground | - -## 工作方式 - -旋转编码器提供了两种交互方式: - -- **旋转** - 您可以通过单击箭头来旋转旋钮。上箭头顺时针旋转一步,下箭头箭头逆时针旋转一步。旋转旋钮将在DT和CLK引脚上产生数字信号,下面会有解释。 - -- **按钮** - 单击旋钮按下按钮。按下时,按钮将SW引脚与GND引脚连接起来。 - -每次用户旋转旋钮时,它都会产生低信号在DT和CLK引脚上: - -- 顺时针旋转导致CLK引脚先变低,然后DT引脚也变低了。逆时针旋转导致DT引脚先变低,然后CLK别针低了。 - -两个引脚将在几毫秒内恢复高。以下的图表说明了这一点: - -![KY-040 Logic Analyzer capture](wokwi-ky-040-timing.png) - -您可以通过将DT/CLK引脚定时连接到[Wokwi Logic Analyzer](wokwi-logic-analyzer)。查看 [Logic Analyzer Guide](../guides/logic-analyzer)学习如何使用逻辑分析仪。 - -### 原理图 - -KY-040模块包括两个内部上拉电阻上拉引脚CLK和DT到VCC。仿真总是上拉这些引脚,即使你让VCC引脚浮空起来。 - -![KY-040 Module Schematics](wokwi-ky-040-diagram.svg) - -## 在Arduino中使用旋转编码器 - -### 读取角度 - -您可以通过检查CLK引脚的状态来读取旋转。每当它变低时,请阅读确定方向的DT引脚值:HIGH表示顺时针旋转,LOW表示逆时针旋转。代码示例: - -```cpp -#define ENCODER_CLK 2 -#define ENCODER_DT 3 - -void setup() { - Serial.begin(115200); - pinMode(ENCODER_CLK, INPUT); - pinMode(ENCODER_DT, INPUT); -} - -int lastClk = HIGH; - -void loop() { - int newClk = digitalRead(ENCODER_CLK); - if (newClk != lastClk) { - // There was a change on the CLK pin - lastClk = newClk; - int dtValue = digitalRead(ENCODER_DT); - if (newClk == LOW && dtValue == HIGH) { - Serial.println("Rotated clockwise ⏩"); - } - if (newClk == LOW && dtValue == LOW) { - Serial.println("Rotated counterclockwise ⏪"); - } - } -} -``` - -您还可以 [仿真该例子在Wokwi](https://wokwi.com/projects/304184298969236032)。 - -注意:您的代码需要经常读取引脚的状态才能检测到正确的旋转。 - -如果您的`loop()`时间太长(例如,您在代码中使用`delay()`),我们建议使用[attachInterrupt()](https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/) 来监听CLK引脚的变化。假设CLK连接到引脚2,DT连接到引脚3(和以前一样): - -```cpp -#define ENCODER_CLK 2 -#define ENCODER_DT 3 - -void setup() { - pinMode(ENCODER_CLK, INPUT); - pinMode(ENCODER_DT, INPUT); - attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING); -} - -void readEncoder() { - int dtValue = digitalRead(ENCODER_DT); - if (dtValue == HIGH) { - Serial.println("Rotated clockwise ⏩"); - } - if (dtValue == LOW) { - Serial.println("Rotated counterclockwise ⏪"); - } -} - -void loop() { - // Do whatever -} -``` - -### 使用按键 - -要读取编码器按钮的状态,请连接到任何Arduino IO引脚,并将此引脚初始化为`INPUT_PULLUP`。然后使用`digitalRead()`读取按钮的状态。 - -只要按下按钮,它就会读低。 - -只要按下按钮,以下代码示例就会打开Arduino的内置LED(13)。 - -它假设您将SW连接到Arduino引脚4。 - -您还需要将GND引脚连接到Arduino的GND引脚之一。 - -```cpp -#define ENCODER_BTN 4 - -void setup() { - pinMode(ENCODER_BTN, INPUT_PULLUP); - pinMode(LED_BUILTIN, OUTPUT); -} - -void loop() { - if (digitalRead(ENCODER_BTN) == LOW) { - digitalWrite(LED_BUILTIN, HIGH); - } else { - digitalWrite(LED_BUILTIN, LOW); - } -} -``` - -## 键盘控制 - -要使用键盘控制旋转编码器,请先打开它,然后使用以下键: - -| Key | Function | -| ----------- | ---------------- | -| Right / Up | 顺时针旋转一步\* | -| Left / Down | 逆时针旋转一步\* | -| Spacebar | 按下按键 | - -\* 按住箭头键以持续旋转编码器,在CLK/DT引脚上生成一系列脉冲。 - -## 仿真案例 - -- [Basic usage example](https://wokwi.com/projects/304184298969236032) -- [Rotary encoder counter](https://wokwi.com/projects/304184909747978816) -- [Volume/Bass/Treble controller](https://wokwi.com/projects/304919215794553409) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg deleted file mode 100644 index c832cd3..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-1.svg +++ /dev/null @@ -1,202 +0,0 @@ - - - 32 - 33 - - 34 - - 35 - - 36 - - 37 - - 38 - - 39 - - 40 - - 41 - - 42 - - 43 - - 44 - - 45 - - 46 - - 47 - - 48 - - 49 - - 50 - - 51 - - 52 - - 53 - - 54 - - 55 - - 56 - - 57 - - 58 - - 59 - - 60 - - 61 - - 62 - - 63 - - 64 - - 65 - - 66 - - 67 - - 68 - - 69 - - 70 - - 71 - - 72 - - 73 - - 74 - - 75 - - 76 - - 77 - - 78 - - 79 - - 80 - - 81 - - 82 - - 83 - - 84 - - 85 - - 86 - - 87 - - 88 - - 89 - - 90 - - 91 - - 92 - - 93 - - 94 - - 95 - - 96 - - 97 - - 98 - - 99 - - 100 - - 101 - - 102 - - 103 - - 104 - - 105 - - 106 - - 107 - - 108 - - 109 - - 110 - - 111 - - 112 - - 113 - - 114 - - 115 - - 116 - - 117 - - 118 - - 119 - - 120 - - 121 - - 122 - - 123 - - 124 - - 125 - - 126 - - 127 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg deleted file mode 100644 index d137204..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602-fonta00-2.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - 160 - 161 - - 162 - - 163 - - 164 - - 165 - - 166 - - 167 - - 168 - - 169 - - 170 - - 171 - - 172 - - 173 - - 174 - - 175 - - 176 - - 177 - - 178 - - 179 - - 180 - - 181 - - 182 - - 183 - - 184 - - 185 - - 186 - - 187 - - 188 - - 189 - - 190 - - 191 - - 192 - - 193 - - 194 - - 195 - - 196 - - 197 - - 198 - - 199 - - 200 - - 201 - - 202 - - 203 - - 204 - - 205 - - 206 - - 207 - - 208 - - 209 - - 210 - - 211 - - 212 - - 213 - - 214 - - 215 - - 216 - - 217 - - 218 - - 219 - - 220 - - 221 - - 222 - - 223 - - 224 - - 225 - - 226 - - 227 - - 228 - - 229 - - 230 - - 231 - - 232 - - 233 - - 234 - - 235 - - 236 - - 237 - - 238 - - 239 - - 240 - - 241 - - 242 - - 243 - - 244 - - 245 - - 246 - - 247 - - 248 - - 249 - - 250 - - 251 - - 252 - - 253 - - 254 - 255 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md deleted file mode 100644 index e7aeb08..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd1602.md +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: wokwi-lcd1602显示模块参考 -sidebar_label: wokwi-lcd1602显示模块参考 ---- - -import FontA00p1 from './wokwi-lcd1602-fonta00-1.svg'; -import FontA00p2 from './wokwi-lcd1602-fonta00-2.svg'; - -带有2行的液晶显示器,每行16个字符。 - - - -## 引脚名称 - -LCD1602有两种可能的配置:I2C配置和标准配置。I2C配置通常使用起来更简单。 - -下表总结了主要差异: - -| Property | Standard | I2C | -| -------------------------- | ------------- | ----------------- | -| Number of Arduino I/O pins | 7\* | 2 (SCL)/SDA | -| 背光控制 | Optional | Yes | -| 库名称 | LiquidCrystal | LiquidCrystal_I2C | - -\* 控制背光灯需要另一个I/O引脚。 - -您可以通过设置`pins`属性来选择所需的配置。对于I2C配置,将其设置为“i2c”,对于标准配置(默认配置)将其设置为“full”。 - -### I2C配置 - -| Name | Description | -| ---- | -------------- | -| GND | Ground | -| VCC | Supply voltage | -| SDA | I2C data line | -| SCL | I2C clock line | - -LCD1602模块的默认I2C地址为0x27。 - -注:I2C 配置模拟了控制 LCD 模块的 PCF8574T 芯片。通常,您不必担心这一点,因为LiquidCrystal_I2C库负责与芯片的通信。 - -### 标准配置 - -| Name | Description | Arduino Pin\* | -| ---- | ----------------------------------- | ------------- | -| VSS | Ground | GND.1 | -| VDD | Supply voltage | 5V | -| V0 | Contrast adjustment (not simulated) | | -| RS | Command/Data select | 12 | -| RW | Read/Write. Connect to Ground. | GND.1 | -| E | Enable | 11 | -| D0 | Parallel data 0 (optional) † | | -| D1 | Parallel data 1 (optional) † | | -| D2 | Parallel data 2 (optional) † | | -| D3 | Parallel data 3 (optional) † | | -| D4 | Parallel data 4 | 10 | -| D5 | Parallel data 5 | 9 | -| D6 | Parallel data 6 | 8 | -| D7 | Parallel data 7 | 7 | -| A | Backlight anode | 5V / 6‡ | -| K | Backlight cathode | GND.1 | - -\* 这些只是示例引脚编号,它们不是强制性的。您需要使用任何其他数字/模拟引脚,但请务必相应地更新代码! -† 通常,您将在4位并行模式下配置芯片,这意味着您只需要将RS、E、D4、D5、D6和D7引脚连接到Arduino。 -‡ 如果您需要控制背光灯,请将阳极连接到I/O引脚。否则,将其连接到电源电压。对于一个真正的电路,你也会需要一个限流电阻,但您可以在模拟环境中不接它。 - -#### Arduino代码例子 - -当您在代码中初始化LiquidCrystal库时,您需要将引脚号传递给构造函数。 - -以下示例使用与上表匹配的引脚编号: - -```cpp -#include - -LiquidCrystal lcd(12, 11, 10, 9, 8, 7); - -void setup() { - lcd.begin(16, 2); - // you can now interact with the LCD, e.g.: - lcd.print("Hello World!"); -} - -void loop() { - // ... -} -``` - -你可以 [try this example on Wokwi](https://wokwi.com/projects/294342288335700490). - -## 属性 - -| Name | Description | Default value | -| ---------- | ------------------------ | ------------- | -| pins | 对于I2C配置,设置为“i2c” | "full" | -| i2cAddress | I2C地址(I2C配置) | "0x27" | -| color | 文本的颜色 | "black" | -| background | 背光颜色 | "green" | - -### 示例 - -| Result | Attrs | -| --------------------------------------------------------------------- | -------------------------------------------- | -| | `{ }` | -| | `{ "pins": "i2c" }` | -| | `{ "background": "blue", "color": "white" }` | - -## 字体 - -LCD1602使用[Hitachi HD44780 LCD Controller chip](https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller)。 - -该芯片内置字体,并能够定义多达8个自定义字符。芯片的ROM有两个版本,有两种不同的字体:HD44780UA00,其中包括日语片假名字符,和HD44780UA02,包括西欧字符。 - -Wokwi模拟了HD44780UA00变体。它共有256个字符: - -| Range | Description | -| ------- | --------------------------------------------------- | -| 0-7 | [User defined characters](#user-defined-characters) | -| 8-31 | Blank characters | -| 32-127 | Standard ASCII characters | -| 128-160 | Blank characters | -| 161-255 | Japanese katankana and symbols | - -ASCII字符字形: - - - -其他字符字形: - - - -注意:如果您需要HD44780UA02字体变体,请[open a feature request](https://github.com/wokwi/wokwi-features/issues/new) 或者联系 [Discord](https://wokwi.com/discord).。 - -### 用户定义的字符 - -您可以使用LiquidCrsytal(或LiquidCrystal_I2C)库的 [createChar](https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar) 方法定义自定义字符。自定义字符是字体的前8个字符,索引从0到7。你可以把它们打印到LCD上使用`write()`方法或使用C字符串转义序列显示,例如`"\x07"`。 - -以下代码示例定义了一个心形字符,将其存储在索引3,然后使用它来显示文本“I (heart) Arduino”: - -```cpp -#include - -LiquidCrystal lcd(12, 11, 10, 9, 8, 7); - -uint8_t heart[8] = { - 0b00000, - 0b01010, - 0b11111, - 0b11111, - 0b11111, - 0b01110, - 0b00100, - 0b00000, -}; - -void setup() { - lcd.createChar(3, heart); - lcd.begin(16, 2); - lcd.print(" I \x03 Arduino"); -} - -void loop() { } -``` - -你也可以 [run this example on Wokwi](https://wokwi.com/projects/294395602645549578). - -您可以在程序运行时修改任何自定义字符。这种方法对创建简单的动画。例如,将上面代码示例中`loop()`更改为缓慢逐行显示心形图标: - -```cpp -void loop() { - uint8_t heart2[8] = {0}; - for (int i = 0; i < 8; i++) { - heart2[i] = heart[i]; - lcd.createChar(3, heart2); - delay(100); - } - delay(500); -} -``` - -## 仿真实例 - -- [LiquidCrystal Hello World](https://wokwi.com/projects/294342288335700490) -- [LiquidCrystal I2C Hello World](https://wokwi.com/arduino/libraries/LiquidCrystal_I2C/HelloWorld) -- [LiquidCystal Custom characters](https://wokwi.com/projects/294395602645549578) -- [Electronic Safe](https://wokwi.com/arduino/libraries/demo/electronic-safe) -- [DS1307 Clock](https://wokwi.com/projects/298783436806554120) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md deleted file mode 100644 index 5a3d39f..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-lcd2004.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: wokwi-lcd2004显示模块参考 -sidebar_label: wokwi-lcd2004显示模块参考 ---- - -液晶显示器,每行4行,20个字符。 - - - -这个组件具有与wokwi-lcd1602相同的引脚和属性。 - -有关**完整信息和代码示例**,请参阅 [wokwi-lcd1602 reference](wokwi-lcd1602)。 - -### 示例 - -| Result | Attrs | -| --------------------------------------------------------------------- | -------------------------------------------- | -| | `{ }` | -| | `{ "pins": "i2c" }` | -| | `{ "background": "blue", "color": "white" }` | - -## 仿真案例 - -- [LCD2004 Tiny Pacman on Wokwi](https://wokwi.com/projects/294590769009787402) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md deleted file mode 100644 index 5c4267d..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led-bar-graph.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: wokwi-led-bar-graph参考 -sidebar_label: wokwi-led-bar-graph参考 ---- - -10段LED条形图。 - - - -## 引脚名称 - -| Name | Description | -| ------ | ------------------------------------ | -| A**n** | LED的阳极(正引脚) **n** (n = 1…10) | -| C**n** | LED的阴极(负引脚) **n** (n = 1…10) | - -例如,例如A1是顶部LED的阳极,C1是顶部LED的阴极。 - -## 属性 - -| Name | Description | Default value | -| ----- | ---------------------------------------- | ------------- | -| color | LED主体的颜色,或特殊值“GYR”/“BCYR”之一* | "red" | - -\* GYR的意思是绿色-黄色-红色。BCYR的意思是青蓝色-黄色-红色 - -### 示例 - -| Result | Attrs | -| ----------------------------------------------------------------------- | ------------------------ | -| | `{ "color": "yellow" }` | -| | `{ "color": "#9EFF3C" }` | -| | `{ "color": "GYR"}` | -| | `{ "color": "BCYR"}` | - -## 仿真案例 - -- [Arduino LED Graph Bar](https://wokwi.com/projects/309829489359061570) - Move the potentiometer knob to control the LEDs -- [Raspberry Pi Pico Binary Counter](https://wokwi.com/projects/309828467927548481) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led.md deleted file mode 100644 index d49d8e2..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-led.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: wokwi-led参考 -sidebar_label: wokwi-led参考 ---- - -标准5mm的LED。 - - - -## 引脚名称 - -| Name | Description | -| ---- | -------------- | -| A | 阳极(正引脚) | -| C | 阴极(负引脚) | - -## 属性 - -| Name | Description | Default value | -| ---------- | --------------------- | -------------------- | -| color | 灯身的颜色 | "red" | -| lightColor | 光的颜色 | depends on the color | -| label | 显示在 LED 下方的文本 | | -| gamma | 伽马校正系数 | "2.8" | -| flip | 水平翻转LED | "" | - -注意:要旋转LED,请单击它们并按“R”,或设置 ["rotate" property](../diagram-format#parts)。 - -### 示例 - -| Result | Attrs | -| --------------------------------------------------------- | --------------------------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#FFFF00" }` | -| | `{ "label": "Status" }` | -| | `{ "color": "white"}` | -| | `{ "color": "white", "lightColor": "orange"}` | -| | `{ "color": "red", "flip": "1"}` | - -### Gamma亮度校正 - -LED会自动应用伽马校正。这意味着即使是非常短的电流爆发也会产生一些可见光,类似于物理LED的工作方式,因此在以下情况下,您可以获得更准确的模拟: - -1。使用值很小(占空比短)的`analogWrite()`, - -2。LED扫描技术,如 [Charlieplexing](https://goodarduinocode.com/guides/charlieplexing)。 - -您可以通过将“gamma”属性设置为“1.0”来禁用伽马校正。您还可以选择不同的gamma值:将此属性设置为所需的值来实现伽马因子。默认伽马校正系数为2.8。 - -[Gamma Correction Demo project](https://wokwi.com/projects/304762988710068800) 显示了不同伽马值的行为:左侧的LED默认伽马因子为2.8,而右侧的LED的伽马因子为1.0。你可以看到`analogWrite()`的较低值在左侧LED上看起来要亮得多。 - -有关_gamma correction_的更多信息,包括一些代码示例,请查看此[great guide from Adafruit](https://learn.adafruit.com/led-tricks-gamma-correction)。 - -## 仿真实例 - -- [Blink](https://wokwi.com/arduino/libraries/demo/blink) - Arduino的标准闪烁示例 -- [Fade](https://wokwi.com/projects/313268562698437186) - 使用 analogWrite() + 伽马校正 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md deleted file mode 100644 index 3a25da5..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: wokwi-logic-analyzer参考 -sidebar_label: wokwi-logic-analyzer参考 ---- - -8通道数字逻辑分析仪 - -![Logic Analyzer](wokwi-logic-analyzer.svg) - -## 引脚名称 - -引脚D0到D7连接到逻辑分析仪的输入通道。还有一个GND引脚,应该连接到数字地面。 - -## 属性 - -| Name | Description | Default value | -| ------------ | ---------------------------------- | ------------- | -| bufferSize | 要采集的最大样本数量 | "1000000" | -| filename | 录音文件的名称,不带扩展名 | "wokwi-logic" | -| triggerMode | 触发模式: "off", "level" or "edge" | "off" | -| triggerLevel | "high" or "low" | "high" | -| triggerPin | "D0" … "D7" | "D7" | - -### 采样缓冲区 - -逻辑分析仪使用缓冲区来存储记录的引脚数据。每个引脚电平变化(例如从低到高)占据缓冲区中的一个插槽。模拟器分配提前为缓冲区提供内存,以确保快速模拟。 - -您可以通过设置`bufferSize`属性来选择缓冲区的大小。缓冲区中的每个插槽使用9字节的RAM。因此,100万的默认缓冲区大小样本将使用约9 MB的RAM。分配一个大缓冲区可能会使您的浏览器紧张。 - -逻辑分析仪显示模拟运行时捕获的样本数量。您可以使用此数字来估计所需的缓冲区大小。 - -### 触发 - -触发器控制逻辑分析器何时开始记录数据。默认情况下,触发器处于关闭状态,因此逻辑分析器会捕获所有数据。您可以使用三个属性`triggerMode`、`triggerPin`和`triggerEdge`来配置触发器。 - -下表总结了可用的触发模式: - -| triggerMode | Description | Behavior | -| ----------- | --------------- | ------------------------------------------ | -| "off" | Disable trigger | 所有数据都已记录 | -| "edge" | Edge trigger | 当`triggerPin`等于`triggerLevel`时开始记录 | -| "level" | Level trigger | 仅当`triggerPin`等于`riggerLevel`时才记录 | - -当`triggerPin`更改为`triggerLevel`时,“边缘”模式开始记录,并持续记录,直到仿真结束。例如,如果您将`triggerPin`设置为“D7”,将`triggerLevel`设置为“高”(其默认值),当引脚D7变高时,逻辑分析器将开始记录。 - -“级别”模式更通用:就像“边缘”模式一样,当`triggerPin`更改为`triggerLevel`时,它会开始记录,但一旦`triggerPin`再次更改,它就会暂停记录。 - -有关使用示例,请查看Logic Analyzer指南中的[Using the Trigger section](../guides/logic-analyzer#using-the-trigger) 。 - -## 查看数据 - -当您停止仿真时,逻辑分析器会将包含录制样本的文件下载到您的计算机上。录音文件使用标准[Value Change Dump (VCD)](https://en.wikipedia.org/wiki/Value_change_dump) 格式。该文件默认称为“wokwi-logic.vcd”,但您可以使用`filename` 属性配置名称。 - -要了解如何查看数据,请访问我们的[Logic Analyzer Guide](../guides/logic-analyzer#using-the-logic-analyzer)。 - -## 仿真实例 - -- [Logic Analyzer recording I2C protocol signals](https://wokwi.com/projects/325933824665977428) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg deleted file mode 100644 index 23b416b..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-logic-analyzer.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - D0D1D2D3D4D5D6D7GND - - - - - - - LOGICbeta version - - - - - 24.2K samples - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg deleted file mode 100644 index 485ba09..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix-chain-4.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md deleted file mode 100644 index 050f149..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: wokwi-max7219-matrix点阵参考 -sidebar_label: wokwi-max7219-matrix参考 ---- - -import DotMatrix from './wokwi-max7219-matrix.svg'; -import DotMatrixChain4 from './wokwi-max7219-matrix-chain-4.svg'; - -带MAX7219控制器的8x8 LED点阵 - -![MAX7219 LED Dot Matrix](wokwi-max7219-matrix.svg) - -## 引脚名称 - -| Name | Description | -| ---- | -------------- | -| VCC | Voltage supply | -| GND | Ground | -| DIN | Data input | -| CS | Chip Select | -| CLK | Clock input | -| DOUT | Data output | - -## 属性 - -| Name | Description | Default value | -| ------ | -------------------------------- | ------------- | -| chain | 链在一起需要多少个单元 | "1" | -| color | LED颜色(点亮时) | "red" | -| layout | 矩阵连接布局: "parola" or "fc16" | "parola" | - -### 链(chain) - -每个点阵单元都是一个8x8 LED矩阵。矩阵中的所有LED颜色相同。您可以通过设置“链式”属性来扩大显示范围。例如,将“chain”设置为4将水平链导四个点矩阵单元,从而产生32x8矩阵(四次乘以8x8矩阵)。 - -如果您想以自定义方式链接单元(例如为每个单元选择不同的像素颜色,垂直链条等),请将一个单元的DOUT引脚连接到下一个单元的DIN引脚。您还需要将设备的CLK/CS引脚连接在一起。有关示例,请参阅[32x32 LED Matrix Tunnel](https://wokwi.com/projects/318864638990090834) 。 - -### 矩阵布局(layout) - -根据常用模块,有几种类型的矩阵布局。您可以设置“layout”属性来选择所需的像素布局: - -- “parola”-有关这些模块布局的信息,请参阅 [Parola documentation](https://majicdesigns.github.io/MD_MAX72XX/page_parola.html) - -- “fc16”-FC-16模块可从eBay和AliExpress获得。它们通常由四个8x8矩阵组成,因此它们总共有32x8像素。 - -选择错误的布局将导致您的文本/绘图被旋转和/或镜像。 - -### 示例 - -| Result | Attrs | -| ------------------------------------------------ | ---------------------- | -| | `{ "color": "green" }` | -| | `{ "chain": "4" }` | - -## 仿真实例 - -- [Dot Matrix Clock](https://wokwi.com/projects/289186888566178317) -- [Etch A Sketch game](https://wokwi.com/projects/296234816685212169) -- [Electronic Dice (on ATtiny85)](https://wokwi.com/projects/291779699024069128) -- [Arduino QR Code Generator](https://wokwi.com/projects/318641692720759379) -- [32x32 LED Matrix Tunnel](https://wokwi.com/projects/318864638990090834) -- [MD_Parola library examples](https://wokwi.com/arduino/libraries/MD_Parola) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg deleted file mode 100644 index 9426947..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-max7219-matrix.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md deleted file mode 100644 index 81b7006..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-membrane-keypad.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: wokwi-membrane-keypad参考 -sidebar_label: wokwi-membrane-keypad参考 ---- - -标准的4x4键盘。非常适合数字输入,例如安全密码。 - - - -## 引脚名称 - -| Name | Description | Example pin\* | -| ---- | ------------------ | ------------- | -| R1 | Row 1 (top row) | 9 | -| R2 | Row 2 | 8 | -| R3 | Row 3 | 7 | -| R4 | Row 4 (bottom row) | 6 | -| C1 | Column 1 (left) | 5 | -| C2 | Column 2 | 4 | -| C3 | Column 3 | 3 | -| C4 | Column 4 (right) | 2 | - -\* 这些只是下面代码示例中使用的Arduino Uno引脚编号。您可以使用任何输入数字输入引脚。 - -## 属性 - -| Name | Description | Default value | -| ------- | ---------------- | ------------------------------------------------------------ | -| columns | 列数: "3" or "4" | "4" | -| keys | 按键的标签 | ["1", "2", "3", "A", "4", "5", "6", "B", "7", "8", "9", "C", "*", "0", "#", "D"] | - -您可以根据需要更改关键标签。数组中的前四个项目设置了第一行键的标签,下一个四个项目设置第二行键的标签等。支持Unicode字符,因此您可以使用特殊字符,重音字母,上标/下标(例如Xn或A1),甚至表情符号。 - -#### Arduino代码示例 - -下面的示例使用Arduino的键盘库。在`keys` 数组中设置的键名定义 `keypad.getKey()` 返回的值。他们不必与实际的关键标签相匹配(但如果它们不这样做,可能会令人困惑),并且它们必须包含一个ASCII字符。 - -```cpp -#include - -const uint8_t ROWS = 4; -const uint8_t COLS = 4; -char keys[ROWS][COLS] = { - { '1', '2', '3', 'A' }, - { '4', '5', '6', 'B' }, - { '7', '8', '9', 'C' }, - { '*', '0', '#', 'D' } -}; - -uint8_t colPins[COLS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4 -uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4 - -Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); - -void setup() { - Serial.begin(9600); -} - -void loop() { - char key = keypad.getKey(); - - if (key != NO_KEY) { - Serial.println(key); - } -} -``` - -你可以 [try this example on Wokwi](https://wokwi.com/projects/294980637632233994). - -### 示例 - -| Result | Attrs | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| | `{ }` | -| | `{ "columns": "3" }` | -| | `{ "keys": ["1","2","3","4","Q","W","E","R","A","S","D","F","Z","X","C","V"] }` | - -## 仿真实例 - -- [Basic Keypad example](https://wokwi.com/projects/294980637632233994) -- [Arduino Calculator](https://wokwi.com/projects/276825819240727048) -- [Electronic Safe](https://wokwi.com/arduino/libraries/demo/electronic-safe) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png deleted file mode 100644 index 7c6a6e4..0000000 Binary files a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card-upload.png and /dev/null differ diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md deleted file mode 100644 index b2222fc..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-microsd-card.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: wokwi-microsd-card参考 -sidebar_label: wokwi-microsd-card参考 ---- - -带有SPI接口的microSD卡 - - - -:::warning -microSD卡模拟器仍处于测试阶段。界面/行为容易改变! -::: - -## 引脚名称 - -| Name | Description | -| ---- | ---------------------- | -| CD | Card detect \* | -| DO | SPI data output (MISO) | -| GND | Ground | -| SCK | SPI clock | -| VCC | Voltage supply | -| DI | SPI data input (MOSI) | -| CS | Chip select | - -\* 当插座中没有卡时,CD引脚会连接到接地。在模拟器中,插座中总是有一张卡片,所以这个引脚总是断开连接。 - -## 文件系统 - -当您开始仿真时,Wokwi会创建一个FAT16文件系统,并将其附加到microSD卡上。默认情况下,Wokwi将您的所有项目文件复制到microSD卡中。 - -### 上传二进制文件 - -[Club](https://wokwi.com) 用户可以将自定义二进制文件(例如位图、声音等)上传到microSD卡的文件系统。将microSD卡添加到项目后,您将在代码编辑器中的其他选项卡旁边看到一个新的“SD卡”选项卡。单击紫色的“上传文件”按钮,然后选择您想要上传的任何文件。 - -您还可以上传完整的文件夹树(如果您的计算机上附加了物理SD卡,并且您希望上传其中的所有数据,则有用)。点按“上传文件”按钮旁边的小箭头,然后选择“上传完整文件夹”。然后选择包含要上传的文件的文件夹。 - - - -Wokwi将上传的文件与您的项目一起存储。任何打开您的项目并开始模拟的人都必须等待所有micro SD卡文件下载,然后才能开始模拟。 - -实例: [microSD Card project with a custom bitmap file](https://wokwi.com/projects/319810932695892564) - -## Arduino 代码示例 - -下面的示例使用流行的_SdFat_ Arduino库。它打印卡片中所有文件的列表。代码假设以下连接: - -| SD card pin | Arduino Uno pin | -| ----------- | --------------- | -| SCK | 13 | -| DO | 12 | -| DI | 11 | -| CS | 10 | - -```cpp -#include "SdFat.h" - -#define SPI_SPEED SD_SCK_MHZ(4) -#define CS_PIN 10 - -SdFat sd; - -void setup() { - Serial.begin(115200); - if (!sd.begin(CS_PIN, SPI_SPEED)) { - if (sd.card()->errorCode()) { - Serial.println("SD initialization failed."); - } else if (sd.vol()->fatType() == 0) { - Serial.println("Can't find a valid FAT16/FAT32 partition."); - } else { - Serial.println("Can't determine error type"); - } - return; - } - - Serial.println("Files on card:"); - Serial.println(" Size Name"); - - sd.ls(LS_R | LS_SIZE); -} - -void loop() { -} -``` - -[Run this example on Wokwi](https://wokwi.com/projects/310692660849410626) - -## 仿真案例 - -- [SD library example](https://wokwi.com/projects/310542489623724609) -- [SdFat library example](https://wokwi.com/projects/310692660849410626) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md deleted file mode 100644 index ca5fef3..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-mpu6050.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: wokwi-mpu60506轴加速和陀螺仪传感器 -sidebar_label: wokwi-mpu60506轴加速和陀螺仪传感器 ---- - - 带3轴加速度计、3轴陀螺仪和带I2C接口的温度传感器的集成传感器。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------------ | -| VCC | Voltage supply | -| GND | Ground | -| SCL | I2C clock line | -| SDA | I2C data line | -| XDA | Unused\* | -| XCL | Unused\* | -| AD0 | Address select pin | -| INT | Interrupt\* | - -\* 这些引脚目前没有在模拟器中实现。如果你需要, 请 [open a request](https://github.com/wokwi/wokwi-features/issues/new). - -您通常只需要连接VCC、GND、SCL和SDA引脚。设备的I2C地址是0x68。您可以通过将AD0引脚连接到VCC来更改0x69的地址。 - -## 属性 - -| Name | Description | Default value | -| ----------- | ----------------------------------- | ------------- | -| accelX | Initial x acceleration value (g) | "0" | -| accelY | Initial y acceleration value (g) | "0" | -| accelZ | Initial z acceleration value (g) | "1" | -| rotationX | Initial x rotation value (deg/sec) | "0" | -| rotationY | Initial y rotation value (deg/sec) | "0" | -| rotationZ | Initial z rotation value (deg/sec) | "0" | -| temperature | Initial temperature value (celsius) | "24" | - -### 单位 - -所有加速度值(x/y/z)都使用g力单位,其中1g = 9.80665 m/s2。陀螺仪测量角旋转,并返回每秒的度数。 - -#### Arduino 代码示例 - -下面的示例使用Adafruit MPU6050库读取和显示传感器的加速度值。在Arduino Uno上,将SDA引脚连接到A4,将SCL引脚连接到A5。 - -```cpp -#include -#include -#include - -Adafruit_MPU6050 mpu; - -void setup(void) { - Serial.begin(115200); - - while (!mpu.begin()) { - Serial.println("MPU6050 not connected!"); - delay(1000); - } - Serial.println("MPU6050 ready!"); -} - -sensors_event_t event; - -void loop() { - mpu.getAccelerometerSensor()->getEvent(&event); - - Serial.print("["); - Serial.print(millis()); - Serial.print("] X: "); - Serial.print(event.acceleration.x); - Serial.print(", Y: "); - Serial.print(event.acceleration.y); - Serial.print(", Z: "); - Serial.print(event.acceleration.z); - Serial.println(" m/s^2"); - delay(500); -} -``` - -[Run this example on Wokwi](https://wokwi.com/projects/305937248748044864) - -## 仿真示例 - -- [MPU6050 X/Y/Z acceleration plotter](https://wokwi.com/projects/305937156771152449) -- [Adafruit MPU6050 Demo](https://wokwi.com/projects/305936654686749250) -- [3D gyro/acceleration visualization on an OLED display](https://wokwi.com/projects/306115576172905024) -- [3D Wokwi "W" controlled by Gyroscope rotation](https://wokwi.com/projects/306399551789466177) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md deleted file mode 100644 index cfe48c9..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: wokwi-nlsf595参考 -sidebar_label: wokwi-nlsf595参考 ---- - -串行(SPI)三色LED驱动器 - -![NLSF595](wokwi-nlsf595.svg) - -使用NLSF595移位寄存器将耗电的RGB LED连接到微控制器。一个单元可以控制两个RGB LED,一个由两个单元组成的链条最多可以控制五个RGB LED。 - -## 引脚名称 - -| Pin | Description | -| ----- | ------------------------------------------------------ | -| SI | Serial input | -| SCK | Serial clock | -| RCK | Storage (latch) pin | -| OE | Output enable, active low. Connect to GND if not used. | -| QA…QH | Parallel output | -| SQH | Serial output\* | -| SCLR | Reset (clear), active low. Connect to VCC if not used | -| GND | Ground | -| VCC | Supply voltage | - -\* 使用Q7S将多个NLSF595设备链接在一起。将SQH连接到链式下一个NLSF595芯片的SI引脚。 - -## 使用NLSF595 - -您需要将至少3个引脚连接到微控制器:SI、SCK和RCK。 - -OE引脚可用于禁用移位寄存器的输出。如果您需要该功能,请将其连接到您的微控制器。否则,将其连接到地面以永久启用输出。 - -移位寄存器的输出引脚QA通过QH,通常连接到共极的[RGB LEDs](wokwi-rgb-led)输入引脚。 - -## 仿真案例 - -- [NLSF595 LED Driver with 2 RGB LEDs](https://wokwi.com/projects/315085666329297472) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg deleted file mode 100644 index 83a678c..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-nlsf595.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - NLSF595 - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md deleted file mode 100644 index 94fa75b..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ntc-temperature-sensor.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: wokwi-ntc-temperature-sensor参考 -sidebar_label: wokwi-ntc-temperature-sensor参考 ---- - -模拟温度传感器:NTC(负温度系数)热敏电阻。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ---------------------- | -| VCC | Positive power supply | -| OUT | Output signal (analog) | -| GND | Ground | - -## 属性 - -| Name | Description | Default value | -| ----------- | -------------------- | ------------- | -| temperature | 初始温度值(摄氏度) | "24" | -| beta | 热敏电阻的β系数 | "3950" | - -## 读取温度 - -温度传感器模块包括一个10K NTC热敏电阻和10K电阻串联。 - -这种设置产生的电压取决于温度。您可以通过以下方式读取此电压 - -将热敏电阻的OUT引脚连接到模拟输入引脚,然后使用 - -`analogRead()`函数。 - -使用以下代码将`analogRead()` 的返回值转换为温度值(以摄氏度为单位): - -```cpp -const float BETA = 3950; // should match the Beta Coefficient of the thermistor -int analogValue = analogRead(A0); -float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; -``` - -## 仿真实例 - -- [NTC Thermistor Basic Example](https://wokwi.com/projects/299330254810382858) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md deleted file mode 100644 index 8854c38..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: wokwi-photoresistor-sensor参考 -sidebar_label: wokwi-photoresistor-sensor参考 ---- - -光电阻(LDR)传感器模块 - - - -## 引脚名称 - -| Name | Description | -| ---- | --------------------- | -| VCC | Positive power supply | -| GND | Ground | -| DO | Digital output | -| AO | Analog output | - -## 属性 - -| Name | Description | Default value | -| --------- | -------------------------------- | ------------- | -| lux | 初始光值(lux) | "500" | -| threshold | 数字输出阈值电压 | "2.5" | -| rl10 | LDR电阻@ 10lux(以千欧姆为单位) | "50" | -| gamma | log(R) / log(lux)图的斜率 | "0.7" | - -## 工作方式 - -光电阻传感器模块包括一个LDR(光依赖电阻)和一个10K电阻串联。AO引脚连接在LDR和10K电阻之间。 - -AO引脚上的电压取决于照明——即落在传感器上的光量。您可以通过将光电阻传感器的AO引脚连接到模拟输入引脚,然后使用`analogRead()`函数来读取此电压。 - -有两个参数控制LDR的灵敏度:rl10和γ。rl10是LDR在10勒克斯照明水平上的电阻。伽马值决定了log(R) / log(lux)图的斜率。您通常可以在LDR的数据表中找到这两个值。 - -下表显示了照明电平(lux)、电阻(R)和电压电平之间的关系 - -当gamma = 0.7和rl10 = 50时,在AO引脚上(默认值): - -| Condition | Illumination (lux) | LDR Resistance | Voltage\* | analogRead() value | -| -------------------- | ------------------ | -------------- | --------- | ------------------ | -| Full moon | 0.1 | 1.25MΩ | 4.96 | 1016 | -| Deep twilight | 1 | 250kΩ | 4.81 | 985 | -| Twilight | 10 | 50kΩ | 4.17 | 853 | -| Computer monitor\*\* | 50 | 16.2kΩ | 3.09 | 633 | -| Stairway lighting | 100 | 9.98kΩ | 2.50 | 511 | -| Office lighting | 400 | 3.78kΩ | 1.37 | 281 | -| Overcast day | 1,000 | 1.99kΩ | 0.83 | 170 | -| Full daylight | 10,000 | 397Ω | 0.19 | 39 | -| Direct sunlight | 100,000 | 79Ω | 0.04 | 8 | - -\* When VCC = 5V -\*\* 在距离显示器一米远的地方测量 - -以下代码将`analogRead()`的返回值转换为照明值(勒克斯): - -```cpp -// These constants should match the photoresistor's "gamma" and "rl10" attributes -const float GAMMA = 0.7; -const float RL10 = 50; - -// Convert the analog value into lux value: -int analogValue = analogRead(A0); -float voltage = analogValue / 1024. * 5; -float resistance = 2000 * voltage / (1 - voltage / 5); -float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA)); -``` - -### 数字输出 - -数字输出(“DO”)引脚在黑暗时会很高,在有光时会变低。在物理传感器上,您可以调整车载小电位器以设置阈值。在模拟器中,使用“阈值”属性来设置阈值电压。默认阈值为2.5伏特,或约100勒克斯。 - -底部LED(“DO LED”)连接到数字输出,每当DO引脚低时都会亮起。换句话说,当传感器被照亮时,它会发光。 - -### 原理图 - -![Wokwi Photoresistor (LDR) Sensor Module Schematics](wokwi-photoresistor-sensor.svg) - -## 仿真实例 - -- [Photoresistor Digital Example](https://wokwi.com/projects/305193592908939842) -- [Photoresistor Analog Example](https://wokwi.com/projects/305193627138654786) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg deleted file mode 100644 index 62d1849..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-photoresistor-sensor.svg +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - VCC - - - - - - - GND - - - - - - - - - - - - - - - - - - - - - - 1 - - 2 - - 3 - - - - - - - - - - - - PWR - LED - VCC - GND - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DO - LED - - 1 - - - - - - - - - - 3 - - - - - - - 2 - - - - - - - - - - - - LDR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DO - AO - - - - - - - - - 10K - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md deleted file mode 100644 index 094fd8e..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: wokwi-pi-pico参考 -sidebar_label: wokwi-pi-pico ---- - -Raspberry Pi Pico,RP2040微控制器板,具有双核ARM Cortex-M0+处理器,264k内部RAM,灵活可编程I/O(PIO)功能。 - -![Raspberry Pi Pico](wokwi-pi-pico.svg) - -## 引脚名称 - -引脚GP0到GP22是数字GPIO引脚。引脚GP26、GP27和GP28是具有模拟输入功能的数字GPIO引脚。 - -| Name | Description | Analog input channel | -| --------------- | --------------------------- | -------------------- | -| GP0 … GP22 | Digital GPIO pins (0 to 22) | | -| GP26 | Digital GPIO pin 26 | 0 | -| GP27 | Digital GPIO pin 27 | 1 | -| GP28 | Digital GPIO pin 28 | 2 | -| GND.1 … GND.8 | Ground pins \* | | -| VSYS, VBUS, 3V3 | Positive power supply | | -| TP4 † | Digital GPIO pin 23 | | -| TP5 † | Digital GPIO pin 25 + LED | | - -\* 接地引脚的物理引脚编号为3、8、13、18、23、28、33和38。 -† 这些引脚不会出现在可视化图表编辑器中,但您可以在[diagram.json](../diagram-format)文件中使用它们。 - -引脚3V3_EN / RUN / ADC_VREF在模拟中不可用,因此从表中删除。 - -### 板载led - -Raspberry Pi Pico有一个板载LED,连接到GPIO PIN 25。当引脚被推高时,LED会点亮。 - -您还可以使用`LED_BUILTIN`常量在Arduino代码中引用LED: - -```cpp -pinMode(LED_BUILTIN, OUTPUT); -digitalWrite(LED_BUILTIN, HIGH); -``` - -有关完整的代码示例,请参阅[Blink](https://wokwi.com/projects/297755575592157709) 。 - -## 仿真功能 - -Raspberry Pi Pico使用[RP2040js Library](https://github.com/wokwi/rp2040js) 模拟。本表总结了仿真功能的现状: - -| 外设 | 状态 | 注意 | -| ----------------- | ------ | ----------------------------------------------------------------------- | -| Processor core | ✔️ | Only a single core is simulated | -| GPIO | ✔️ | | -| PIO | ✔️ | PIO Debugger available | -| USB | 🟡 | USB CDC (Serial) supported, see [Serial Monitor](#serial-monitor) below | -| UART | ✔️ | | -| I2C | ✔️ | Master mode only | -| SPI | ✔️ | Master mode only | -| PWM | ✔️ | | -| DMA | ✔️ | Only for the PIO peripheral | -| Timer | ✔️ | Pausing the timer not implemented yet | -| ARM SysTick Timer | 🟡 | Partial implementation | -| Watchdog | ❌ | | -| RTC | ❌ | | -| ADC + Temp sensor | ✔️ | Temperature sensor always reads 0 | -| SSI | 🟡 | Just the minimum to make the bootloader happy | -| GDB Debugging | ✔️ | See the [GDB Debugging guide](../gdb-debugging) | - -说明: -✔️ 可仿真 -🟡 可以仿真, 但是要看注意 -❌ 不支持 - -### Arduino核心 - -Arduino核心提供内置的Arduino函数,如`pinMode()`和`digitalRead()`,以及一组标准Arduino库,如Servo、Wire和SPI。 - -在为Raspberry Pi Pico编译代码时,您可以在两个不同的核心之间进行选择: - -- 基于Mbed OS的[official Pi Pico core](https://github.com/arduino/ArduinoCore-mbed)。这是默认值。 - -- [The community maintained Pi Pico Arduino Core](https://github.com/earlephilhower/arduino-pico),建立在[the Pi Pico SDK](https://github.com/raspberrypi/pico-sdk)之上。 - -您可以在 [this GitHub comment](https://github.com/earlephilhower/arduino-pico/issues/117#issuecomment-830356795)中了解这两个核心之间的主要区别。 - -要选择核心,请设置`wokwi-pi-pico`部分的“env”属性。对于官方Arduino核心,请使用“arduino-core”值。对于社区维护的核心,将“env”设置为“arduino-community”。例如: - -```json - "parts": [ - { - "type": "wokwi-pi-pico", - "id": "pico", - "attrs": { - "env": "arduino-community" - } - … - }, - … - ] -``` - -### 串行监视器 - -您可以使用串行监视器从Pi Pico上运行的代码接收信息,例如调试打印。默认情况下,串行监视器通过USB与Pi Pico通讯。 - -设置USB连接可能需要一些时间,并且在USB设置时间将丢失打印的消息。因此,建议告诉`setup()`等待串行监视器连接后再打印任何东西: - -```cpp -void setup() { - Serial.begin(115200); - while (!Serial) { - delay(10); // wait for serial port to connect. Needed for native USB - } - // Now you can safely print message: - Serial.println("Hello, Serial Monitor!"); -} -``` - -### UART上的串行监视器 - -串行监视器还可以通过物理UART接口与Pi Pico通信。要配置Raspberry Pi Pico和串行监视器之间的UART通信,请将以下连接添加到您的[diagram.json](../diagram-format#connections) 文件中: - -```json - "connections": [ - [ "$serialMonitor:RX", "pico:GP0", "", [] ], - [ "$serialMonitor:TX", "pico:GP1", "", [] ], - … - ] -``` - -该示例假设Pi Pico是用“pico”的ID定义的,例如 - -```json - "parts": [ - { - "type": "wokwi-pi-pico", - "id": "pico", - … - }, - … - ] -``` - -在代码中使用`Serial1` 对象:使用`Serial1.begin(115200)`初始化端口,然后使用`Serial1.println()`打印消息。例如: - -```cpp -void setup() { - Serial1.begin(115200); - Serial1.println("Hello, world!"); -} - -void loop() { } -``` - -有关完整示例,请查看[Pi Pico Serial Monitor over UART Example](https://wokwi.com/projects/297755360074138125)。 - -## 输出UF2二进制文件 - -您可以将程序从模拟器直接上传到物理Raspberry Pi Pico板中。这些步骤是: - -1. 在Wokwi代码编辑器中按“F1”,然后选择“下载UF2二进制文件”。下载应该在几秒钟内开始。 - -2. 在引导加载程序模式下启动Pi Pico。您可以通过按下引导加载程序按钮来做到这一点,同时将Pi Pico插入计算机的USB端口。 - -3. 您应该会在电脑上看到一个名为“RPI-RP2”的新驱动器。将您下载的UF2文件复制到该驱动器中。 - -## MicroPython支持 - -Raspberry Pi Pico支持MicroPython,您可以在Wokwi中运行MicroPython项目。有关更多信息,请查看[MicroPython Guide](../guides/micropython)。 - -## 仿真实例 - -- [Pi Pico and LCD1602](https://wokwi.com/projects/297323005822894602) -- [Pi Pico Traffic Light](https://wokwi.com/projects/297322571959894536) -- [Pi Pico C++ SDK Blink](https://wokwi.com/projects/298013072042230285) -- [Pi Pico C++ SDK 7-Segment Example](https://wokwi.com/projects/298014884249993738) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg deleted file mode 100644 index 8abea95..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pi-pico.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B - O - O - T - S - E - L - - - L - E - D - 1 - 2 - 3 - 9 - U - S - B - - - - R - a - s - p - b - e - r - r - y - P - i - P - i - c - o - © - 2 - 0 - 2 - 0 - - - R - P - 2 - - - 8 - 0 - 2 - 0 - / - 2 - 1 - P - 6 - 4 - M - 1 - 5 - . - 0 - 0 - T - T - T - - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md deleted file mode 100644 index 8a3c4a1..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pir-motion-sensor.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: wokwi-pir-motion-sensor参考 -sidebar_label: wokwi-pir-motion-sensor参考 ---- - -被动红外(PIR)运动传感器。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ---------------- | -| GND | Ground | -| OUT | Output (digital) | -| VCC | Supply voltage | - -## 属性 - -| Name | Description | Default value | -| ----------- | ------------------------------------------- | ------------- | -| delayTime | OUT引脚的保持高电平的时间 | "5" | -| inhibitTime | 当OUT恢复到低电平时,传感器将忽略运动的秒数 | "1.2" | -| retrigger | 设置为“0”以禁用重新触发 | "" | - -## 使用传感器 - -要触发PIR运动传感器: - -1. 通过单击传感器(在模拟运行时)选择传感器。 - -2. 将打开一个小弹出窗口。点按“模拟运动”。 - -触发传感器将使OUT引脚高5秒(延迟时间),然后又变低。在接下来1.2秒(抑制时间),传感器将忽略任何进一步的输入,然后再次开始感应运动。 - -您可以通过设置延迟时间来调整OUT引脚的高持续时间属性(在物理传感器上,您使用电位器设置延迟)。 - -传感器的默认设置是重新触发:传感器不断检查在OUT引脚高时进行运动。它将延长每次的延迟时间检测到另一个运动事件的时间。您可以通过以下方式禁用此行为设置“retrigger”属性为“0”。 - -## 仿真实例 - -- [PIR sensor example (from AdaFruit)](https://wokwi.com/projects/299284655047180808) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md deleted file mode 100644 index a689c08..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-potentiometer.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: wokwi-potentiometer参考 -sidebar_label: wokwi-potentiometer参考 ---- - -旋钮控制可变电阻(线性电位器) - - - -以下信息也适用于[slide potentiometer](wokwi-slide-potentiometer)。 - -## 引脚名称 - -| Name | Description | -| ---- | -------------------------------------- | -| GND | Ground | -| SIG | Output, connect to an analog input pin | -| VCC | Supply voltage | - -注意:Wokwi**不**支持完整的模拟仿真,因此您将获得相同的结果,即使您没有连接GND/VCC引脚。 - -这在将来可能会改变,所以无论如何,总是连接GND/VCC是个好习惯。 - -## 属性 - -| Name | Description | Default value | -| ----- | ----------------------------- | ------------- | -| value | 电位器的初始值,在0到1023之间 | "0" | - -## 在Arduino中使用电位器 - -将SIG引脚连接到Arduino的模拟输入引脚之一(A0、A1、...)。然后使用`analogRead()`函数读取电位器的当前值。 - -以下代码示例假设电位器连接到A0。 - -它将每100毫秒读取和打印电位器的当前值: - -```cpp -void setup() { - Serial.begin(115200); - pinMode(A0, INPUT); -} - -void loop() { - int value = analogRead(A0); - Serial.println(value); - delay(100); -} -``` - -您可以 [run the example on Wokwi](https://wokwi.com/projects/298685457758159369)。观察绘图仪在移动电位器旋钮时如何变化。 - -## 键盘控制 - -您可以使用键盘控制电位器: - -- 左/右 - 精细运动 - -- 上页/下页 - 粗略的移动 - -- 主页/结束 - 移动到范围的开始(0)或结束(1023) - -在使用这些键盘快捷键之前,您需要单击电位器。 - -## 仿真实例 - -- [Knob](https://wokwi.com/arduino/libraries/Servo/Knob) - Control a [servo](wokwi-servo) with a potentiometer -- [Plot](https://wokwi.com/projects/298685457758159369) - Plot potentiometer values in the Serial Plotter -- [Block shooter](https://wokwi.com/projects/291960996581343753) - Breakout style game diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg deleted file mode 100644 index 5f7a84e..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton-diagram.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.l - 2.l - 1.r - 2.r - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md deleted file mode 100644 index 316f400..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-pushbutton.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: wokwi-pushbutton参考 -sidebar_label: wokwi-pushbutton参考 ---- - -12毫米触觉开关按钮(初级按钮)。 - - - -## 引脚名称 - -| Name | Description | -| --------- | ------------------------- | -| 1.l / 1.r | 第一个触点 (left / right) | -| 2.l / 2.r | 第二个触电 (left / right) | - -按钮有两组引脚(触点),1和2。 - -当按下按钮时,它会连接这两个触点,从而关闭电路。 - -每个触点都有一个按钮左侧的引脚,另一个引脚位于按钮的右侧。 - -因此,引脚`1.l`是第一次接触的左引脚,`1.r`是第一次接触的右引脚。因为两者都属于即使没有按下按钮,他们也会始终连接到同一个联系人。 - -下图说明了按钮内部的连接: - -![Pushbutton connection diagram](wokwi-pushbutton-diagram.svg) - -与Arduino合作时,您通常会连接一个接触点(例如`1.r`或`1.l`)到数字引脚并配置 - -那个引脚为`INPUT_PULLUP`,另一个接触点(例如`2.r`或`2.l`)到地面。数字引脚将读取为`LOW`当按下按钮时,不按下按钮时为`HIGH`。 - -## 属性 - -| Name | Description | Default value | -| ------ | -------------------- | ------------- | -| color | 按下按钮的颜色 | "red" | -| label | 显示在按钮下方的文本 | "" | -| key | 按钮的键盘快捷键 | | -| bounce | 设置为“0”以禁用反弹 | "" | - -### 定义键盘快捷键 - -您可以使用“键”属性来定义控制按钮的键盘按键。 - -只有当模拟运行并且图表有焦点时,按键才处于活动状态。 - -例如,假设您将“key”定义为“Q”。然后,当您运行模拟时,在键盘中按_Q_将按下按钮。按钮将保留处于按下状态,只要你继续按_Q_,一旦你松开键,该按钮也将被释放。 - -您可以定义任何字母数字键盘快捷键(例如英语字母和数字),对于字母,“key”的值不区分大小写(所以“q”和“Q”的意思相同)。 - -您还可以瞄准一些特殊密钥,例如“Escape”、“ArrowUp”、“F8”、“(空格)或“PageDown”,但一些键可能会被浏览器阻止(例如“F5”刷新页面)。按键的完整列表 [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)。 - -请注意,特殊键名区分大小写-因此“Escape”将起作用,“escape”不会起作用。 - -Firefox用户:如果键盘快捷键不能用,请确保禁用“开始键入时搜索文本”设置。 - -### 弹跳 - -当您按下物理按钮时,电路会打开和关闭数十次或数百次。这种现象被称为弹跳。发生这种情况是因为按钮的机械性质:金属触点结合在一起时,有一段短暂的过度时间——触点的接触不充分,这导致一系列快速的开放/关闭。 - -Wokwi默认模拟按钮弹跳。您可以通过以下方式禁用弹跳模拟"Bounce" 至 "0": - -`{ "bounce": "0" }` - -弹跳模拟遵循Horowitz & Hill在《电子艺术》中描述的行为: - ->当开关关闭时,两个触点实际上分离并重新连接,通常为10到100次,大约1ms的时间。 - -例如,[这个项目展示了弹跳和非弹跳的不同](https://wokwi.com/projects/288681423014986248). 。它有两个按钮连接到同一个Arduino输入引脚: - -- 蓝色按钮不会模拟弹跳。按一次只会打印一对“按下”和“释放”的消息。 - -- 红色按钮模拟弹跳。按一次将打印多条“按下”和“释放”的消息。 - -### 保持 - -如果您希望该按钮保持按下状态,请按住 Ctrl 键单击它(在 Mac 上按住 Cmd 键单击)。它将导致按钮保持按下状态,直到下次单击。 - -当您需要同时按下多个按钮时,这非常有用。 - -### 示例 - -| Result | Attrs | -| ------------------------------------- | ------------------------- | -| | `{ "color": "green" }` | -| | `{ "color": "#FFFF00" }` | -| | `{ "label": "Push me!" }` | - -## 仿真案例 - -- [Simon Game](https://wokwi.com/arduino/libraries/demo/simon-game) - A memory game with 4 push buttons -- [Diatonic Piano](https://wokwi.com/projects/291958456169005577) - A 8-note piano, use keys 1-8 to press the buttons and play the notes. -- [Bounce vs non-bounce](https://wokwi.com/projects/288681423014986248) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md deleted file mode 100644 index 59c71bb..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-resistor.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: wokwi-resistor参考 -sidebar_label: wokwi-resistor参考 ---- - -这就是电阻。 - - - -:::warning - -Wokwi只有一个非常基本的模拟电路仿真。您将无法同时使用电阻器和模拟组件(例如电位器或NTC温度传感器)。您仍然可以将电阻用作外部上拉/下拉电阻。 - -::: - -## 引脚名称 - -| Pin | Description | -| --- | ----------- | -| 1 | First pin | -| 2 | Second pin | - -## 属性 - -| Name | Description | Default value | -| ----- | -------------------- | ------------- | -| value | 电阻值,以欧姆为单位 | "1000" | - -### 示例 - -| Result | Attrs | -| ----------------------------------- | ------------------------- | -| | `{ "value": "1" }` | -| | `{ "value": "220" }` | -| | `{ "value": "10000000" }` | - -查看[resistor showcase by Koepel](https://wokwi.com/projects/300936732038136328) 以获取更多示例。 - -## 仿真案例 - -- [External pull-down resistor](https://wokwi.com/projects/302214836102627848) - 如何使用电阻作为按钮的下拉 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md deleted file mode 100644 index 6f41a25..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-rgb-led.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: wokwi-rgb-led参考 -sidebar_label: wokwi-rgb-led参考 ---- - -5毫米红色、绿色和蓝色(RGB)LED。 - - - -## 引脚名称 - -| Name | Description | -| ---- | ------------ | -| R | Red LED | -| G | Green LED | -| B | Blue LED | -| COM | Common pin\* | - -\* 默认情况下,公共引脚是阳极(正引脚)。您可以通过将“通用”属性设置为“cathode”来更改它。 - -## 属性 - -| Name | Description | Default value | -| ------ | ---------------------------------- | ------------- | -| common | 常见的引脚类型:“cathode”或“anode” | "anode" | - -## 仿真实例 - -- [RGB LED with 3 linear sliders](https://wokwi.com/projects/306455554559050306) -- [Soft pulsating RGB LED](https://wokwi.com/projects/306461175146611264) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md deleted file mode 100644 index 0d248b7..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-servo.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: wokwi-servo参考 -sidebar_label: wokwi-servo参考 ---- - -标准微伺服电机 - - - -## 引脚名称 - -| Name | Description | -| ---- | --------------------- | -| PWM | Servo control signal | -| V+ | Positive voltage (5V) | -| GND | Ground | - -## 属性 - -| Name | Description | Default value | -| --------- | ------------------------------------------- | ------------- | -| horn | 安装角的类型: "single", "double" or "cross" | "single" | -| hornColor | 伺服角的颜色 | "#ccc" | - -### 示例 - -| Result | Attrs | -| -------------------------------- | ---------------------------- | -| | `{ "horn": "single" }` | -| | `{ "hornColor": "#000088" }` | -| | `{ "horn": "double" }` | -| | `{ "horn": "cross" }` | - -## 仿真实例 - -- [Sweep](https://wokwi.com/arduino/libraries/Servo/Sweep) -- [Knob](https://wokwi.com/arduino/libraries/Servo/Knob) -- [Arduino Nano controlling 1 servo with two pushbuttons](https://wokwi.com/projects/328312829780165204) -- [Arduino Uno controlling 5 servos](https://wokwi.com/projects/305087394119418434) -- [Arduino Mega animating 32 servos](https://wokwi.com/projects/305336312628511297) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md deleted file mode 100644 index 67bd3b8..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-potentiometer.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: wokwi-slide-potentiometer参考 -sidebar_label: wokwi-slide-potentiometer参考 ---- - -滑动可变电阻(线性电位器) - - - -滑动电位器的功能和引脚与 [wokwi-potentiometer](wokwi-potentiometer)相同。查看 [wokwi-potentiometer docs](wokwi-potentiometer) 了解更多信息。 - -## 属性 - -| Name | Description | Default value | -| ------------ | ------------------------------------------------------------ | ------------- | -| value | 电位器的初始值,在0到1023之间 | "0" | -| travelLength | 尖端的行程长度(毫米)。控制电位器的宽度.
常用值: "15", "20", "30", "45", "60", "100" | "30" | - -### 示例 - -| Result | Attrs | -| ------------------------------------------------ | --------------------------- | -| | `{ "travelLength": "15" }` | -| | `{ "travelLength": "60" }` | -| | `{ "travelLength": "100" }` | - -## 仿真实例 - -- [Slide potentiometer + Servo](https://wokwi.com/projects/297604176384360973) - Control a [servo](wokwi-servo) with a slide potentiometer diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg deleted file mode 100644 index c13e279..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch-diagram.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - Left - Position - - - - - - - - - - - - - - 1 - 2 - 3 - - - Right - Position - - - - - - - - - - - - - 1 - 2 - 3 - - - diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md deleted file mode 100644 index b484825..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-slide-switch.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: wokwi-slide-switch参考 -sidebar_label: wokwi-slide-switch参考 ---- - -标准单极双掷(SPDT)滑动开关。 - - - -## 引脚名称 - -| Name | Description | -| ---- | --------------- | -| 1 | Left terminal | -| 2 | Common terminal | -| 3 | Right terminal | - -滑动开关有三个引脚。引脚2(中间)是常见的引脚。根据在不同开关的手柄中的位置,它连接到引脚1或3: - -| Handle position | Description | -| --------------- | --------------------- | -| Left | Shorting pins 1 and 2 | -| Right | Shorting pins 3 and 2 | - -下图说明了滑动开关内部的连接。你可以看到灰色的滑动与手柄一起移动并在引脚2和引脚1或3之间建立连接的触点: - -![Slide switch connection diagram](wokwi-slide-switch-diagram.svg) - -## 属性 - -| Name | Description | Default value | -| ------ | -------------------------------------------------------------------- | ------------- | -| value | 滑动开关的初始位置:
"" for left, "1" for right | "" | -| bounce | 设置为“0”以禁用反弹 | "" | - -### 弹跳 - -当您移动物理滑动开关时,电路会打开和关闭数十次或数百次。 - -这种现象被称为 [Bouncing](wokwi-pushbutton#bouncing)。 - -Wokwi默认模拟开启反弹。您可以通过将单个开关的“bounce”设置为“0”来禁用: - -`{ "bounce": "0" }` - -## 仿真实例 - -- [Slide Switch and LED](https://wokwi.com/projects/288276100805558797) - Using a slide switch to toggle an LED -- [Slide Switch and 2 LEDs](https://wokwi.com/projects/288278249939665421) - A slide switch toggles between 2 LEDs -- [Digital Pin Output Switching](https://wokwi.com/projects/292033853022798344) - A slide switch redirects the output of a digital pin to one of two LEDs diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md deleted file mode 100644 index 32f4eea..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-ssd1306.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: wokwi-ssd1306显示模块参考 -sidebar_label: wokwi-ssd1306参考 ---- - -具有I2C接口的单色128x64 OLED显示器 - - - -注:此部件已被弃用。请改用[board-ssd1306](./board-ssd1306)。 - -## 引脚名称 - -| Name | Description | Arduino Uno pin | -| ----------- | --------------------- | --------------- | -| DATA | I2C data line (SDA) | A4 | -| CLK | I2C clock line (SCL) | A5 | -| DC, RST, CS | Unused\* | - | -| 3V3 | 3.3V regulated output | - | -| GND | Ground | GND | -| VIN | Supply voltage | 5V | - -\* DC、RST和CS适用于SPI模式。SSD1306模拟仅支持I2C模式,因此这些引脚不起作用。 - -SSD1306模块的默认I2C地址为0x3c(60)。 - -## 属性 - -| Name | Description | Default value | -| ---------- | -------------------------- | ------------- | -| i2cAddress | I2C address of the display | "0x3c" | - -## 仿真实例 - -See [board-ssd1306](board-ssd1306#simulator-examples). diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md deleted file mode 100644 index 2dc3684..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-stepper-motor.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: wokwi-stepper-motor参考 -sidebar_label: wokwi-stepper-motor参考 ---- - -双极步进电机 - - - -## 引脚名称 - -| Name | Description | -| ---- | ---------------------- | -| A- | Coil A negative signal | -| A+ | Coil A positive signal | -| B+ | Coil B positive signal | -| B- | Coil B negative signal | - -## 属性 - -| Name | Description | Default value | -| --------- | ------------------------------------------------------------ | ------------- | -| arrow | 显示一个箭头来指示步进器的位置。设置为箭头的颜色,例如“orange” | "" | -| display | 步进器上显示什么数字?有效值“步steps”、“angle”(以度为单位)、“none” | "steps" | -| gearRatio | 电机的齿轮比。200步/转速设置为“1:1”,400步/转速设置为“2:1”等。 | "1:1" | - -### 示例 - -| Result | Attrs | -| ------------------------------------------------------------- | ------------------------ | -| | `{ "display": "steps" }` | -| | `{ "display": "angle" }` | -| | `{ "display": "none" }` | -| | `{ "arrow": "orange" }` | - -## 使用步进电机 - -使用步进电机时,您需要一个驱动芯片,该芯片可以为电机的线圈提供大量电流。Wokwi支持常见的[A4988 driver board](wokwi-a4988)。您还可以将步进电机直接连接到微控制器。Wokwi使用数字模拟引擎,因此不考虑线圈电流。 - -您可以使用各种Arduino库来控制步进电机:步进电机、AccelStepper等。 - -### 仿真行为 - -步进电机每步移动1.8度(每转200步)。电机还支持半步(每步0.9度/每转400步)。您甚至可以使用较小的微步(例如1/4或1/8步),但模拟电机仅以半步分辨率显示角度。有关更多信息,请查看[A4988 microstepping configuration table](wokwi-a4988#microstepping-configuration)。 - -## 仿真案例 - -- [Stepper motor using the Arduino Stepper library](https://wokwi.com/projects/327324886912467538) -- [Direct control of the motor (no library)](https://wokwi.com/projects/327360139702043220) -- [Advanced control with the AccelStepper library and potentiometer](https://wokwi.com/projects/327381547863769683) -- [Manually control the stepper motor using switches and relays](https://wokwi.com/projects/327424914940232274) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md deleted file mode 100644 index 5499d1c..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: wokwi-tm1637-7segment参考 -sidebar_label: wokwi-tm1637-7segment参考 ---- - -TM1637——4线接口的七段LED显示模块 - -![Wokwi TM1637 Seven Segment](wokwi-tm1637-7segment.svg) - -## 引脚名称 - -| Name | Description | -| ---- | ----------- | -| CLK | 时钟线 | -| DIO | 数据线 | -| VCC | 电源 | -| GND | 接地 | - -## 属性 - -| Name | Description | Default value | -| ----- | ----------- | ------------- | -| color | 段LED的颜色 | "red" | - -## 使用 7 段显示器 - -七段显示器的这种变体使用TM1637芯片。您只需要2个微控制器引脚即可与它通信。 - -TM1637通信协议不标准。它类似于I2C协议,但它更简单,与I2C不兼容。幸运的是,您可以使用库,而不必担心协议的实现。以下是您可以在Arduino上使用的一些TM1637库: [SevenSegmentTM1637@1.0.0](https://github.com/bremme/arduino-tm1637),Grove 4-Digit Display。 - -## 仿真实例 - -- [TM1637 Counter](https://wokwi.com/projects/339227323398095442) -- [TM1637 Clock](https://wokwi.com/projects/339227567530705492) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg deleted file mode 100644 index 424ace8..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tm1637-7segment.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - 4-Digit Display - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md deleted file mode 100644 index 13c7184..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: wokwi-tv参考 -sidebar_label: wokwi-tv参考 ---- - -黑白模拟PAL电视屏幕。 - -![Wokwi TV](wokwi-tv.svg) - -## 引脚名称 - -| Name | Description | -| ---- | ---------------------- | -| IN | Data (image) signal | -| SYNC | Synchronization signal | -| GND | Ground | - -## 工作方式 - -模拟PAL电视的分辨率为768x576像素,宽高比为4:3。 - -PAL视频使用模拟信号。信号通过空气或使用电缆传输。常见的布线标准之一是复合视频,它将像素数据与同步信号和单根电线上的颜色数据相结合。 - -Wokwi TV不支持颜色信息,并将像素数据与同步信号分开。信号的分离使使用数字微控制器生成图像变得更加容易。 - -像素数据使用_IN_引脚,同步脉冲使用_SYNC_引脚。Arduino [TVout](https://github.com/pkendall64/arduino-tvout) 库可以为您驱动这些信号。 - -### 信号计时 - -模拟器以每秒25帧的速度模拟信号的标准PAL定时。框架是交错的:每个框架分为两部分,称为“字段”。第一个字段包含奇数线,第二个字段包含偶数线。每帧需要40ms,每个字段需要20ms(帧持续时间的一半)。 - -每帧分为625个64uS时段。每个时段都包含一条线路的像素数据,但其中一些行是空的-它们的唯一用途是同步。 - -模拟器预计每个字段(半帧)至少从一个~30uS的同步脉冲开始。这意味着您必须将SYNC线保持在低30uS左右。PAL标准规定了特定系列的同步脉冲,但对模拟器相当没有压力:即使是1~30uS脉冲,它也可以很容易做到。 - -每条线路还应该从一个短的4uS同步脉冲开始。在这些同步脉冲中保持数据信号低。 - - [Logic Analyzer](../guides/logic-analyzer) 对调试PAL电视信号非常有帮助。 - -## 物理电视连接 - -PAL标准使用模拟信号。在模拟器中运行时,您不必担心这一点,但如果您想在实体电视上运行游戏,那么您需要生成以下电压级别: - -- 用于同步信号的0V(HSYNC/VSYNC) - -- 黑色像素0.3V - -- 白色像素为1V - -好消息是:你只需要几个电阻器就可以将数字信号(在模拟器中工作)转换为模拟信号。 - -复合视频通常使用RCA连接器。您需要与RCA连接器的中央引脚进行以下连接: - -1. 通过1KΩ\*电阻的同步引脚 - -2. 数据引脚穿过470Ω\*电阻器 - -3. 或者,另一个75Ω进入地面(电阻通常已经内置在电视接收器电路中)。 - -\*如果您使用3.3V板(如 [Raspberry Pi Pico](wokwi-pi-pico)),SYNC使用470Ω,数据使用270Ω。 - -此外,请确保还将接地连接到RCA连接器的环上。 - -这是怎么工作的?我们根据两个数字引脚电平实现一个简单的分压器来产生所需的电压: - -| SYNC | DATA | Output Voltage | Calculation | -| --------- | --------- | -------------- | --------------------------------------------- | -| High (5V) | High (5V) | 0.95 | (5\*75)/((1/(1/1000+1/470))+75) | -| High (5V) | Low | 0.304 | (5\*(1/(1/75+1/470)))/(1000+(1/(1/75+1/470))) | -| Low | Low | 0 | 0 | - -如您所见,驱动SYNC/DATA高分辨率约为1V,白色像素级,驱动SYNC高和DATA低分辨率约为0.3V,黑色像素级,驱动两个引脚低分辨率为0伏特,这就是同步级别。 - -理论上,在SYNC低时使用此设置并驱动DATA高,您还可以生成灰色像素级别(~0.65V),但模拟器目前不支持此功能。 - -## Arduino 代码示例 - -使用TVout库绘制圆圈的简单示例: - -```cpp -// Connect SYNC to Arduino pin 9, IN to Arduino pin 7 - -#include - -TVout TV; - -void setup() { - TV.begin(PAL, 120, 96); - TV.clear_screen(); - TV.draw_circle(60, 48, 32, WHITE); -} - -void loop() { -} -``` - -## 仿真实例 - -- [TVout demo reel](https://wokwi.com/projects/301776607665717769) -- [Flappy Cat game](https://wokwi.com/projects/286182458416693768) - 使用蓝色按钮跳转 -- [Arduino Pong for Wokwi TV](https://wokwi.com/projects/290059909639176713) -- [Conway's Game of Life](https://wokwi.com/projects/299605461742649864) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg b/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg deleted file mode 100644 index d54f8c3..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/parts/wokwi-tv.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/debugging.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/debugging.md deleted file mode 100644 index e8b0086..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/debugging.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: 调试你的代码 -sidebar_label: 调试 ---- - -您可以在模拟器运行代码时使用 VS Code 调试器对其进行调试。要设置调试器,请按照以下步骤操作: - -## 配置 Wokwi - -将以下行添加到 `wokwi.toml` 配置文件的 `[wokwi]` 部分: - -```toml -gdbServerPort=3333 -``` - -## 配置 VS Code - -在 `.vscode/launch.json` 为 VS Code 创建启动配置文件。这是您可以使用的模板: - -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Wokwi GDB", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/build/your-firmware.elf", - "cwd": "${workspaceFolder}", - "MIMode": "gdb", - "miDebuggerPath": "/usr/local/bin/xtensa-esp32-elf-gdb", - "miDebuggerServerAddress": "localhost:3333" - } - ] -} -``` -`type` 描述了此处使用的 VS Code 扩展。在本例中为 `cppdbg`。因此必须安装以下扩展:https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools -将 `program` 路径替换为固件的 ELF 文件路径,将 `miDebuggerPath` 替换为支持项目架构的 GDB 可执行文件的路径(例如,对于 AVR 项目,使用 `avr-gdb`)。 - -## 启动调试器 - -按 **F1** 启动 Wokwi 模拟器,然后选择“**Wokwi: Start Simulator and Wait for Debugger**”。模拟器将加载,但程序将暂停,等待调试器连接。然后按 **F5** 启动调试器。 - -:::warning -您需要在启动调试器之前启动 Wokwi。如果先启动调试器,它将无法连接到模拟器。 -::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/getting-started.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/getting-started.md deleted file mode 100644 index e180df4..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/getting-started.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: 开始使用 Wokwi for VS Code -sidebar_label: 开始使用 ---- - -Wokwi for Visual Studio Code 为嵌入式和物联网系统工程师提供了一个模拟解决方案。该扩展与您现有的开发环境集成,允许您直接从代码编辑器模拟您的项目。 - -您可以将 Wokwi for VS Code 与 Zehpyr Project、PlatformIO、ESP-IDF、Pi Pico SDK、NuttX、Rust、Arduino CLI 和其他嵌入式开发框架和工具链一起使用。 - -:::warning -Wokwi for VS Code 目前处于公开测试阶段。测试结束后,一些功能将只对付费用户开放。 -::: - -
- -
Wokwi for VS Code running an ESP-IDF project
-
- -## 安装 - -首先,安装 [Wokwi for VS Code](https://marketplace.visualstudio.com/items?itemName=wokwi.wokwi-vscode) 扩展。然后,按 `F1` 并选择“Wokwi: Request a new License”。 VS Code 会要求您确认在浏览器中打开 Wokwi 网站。单击“Open”进行确认。 - -然后单击“GET YOUR LICENSE”按钮。可能需要登录您的 Wokwi 帐户。如果您没有帐户,可以免费创建一个。 - -浏览器将要求确认将许可证发送到 VS Code。确认(您可能需要确认两次,一次在浏览器中,一次在 VS Code 中)。你会在 VS Code 中看到一条消息,上面写着“License activated for [你的名字]”。恭喜你,已经安装好了! - -## 示例项目 - -要为您自己的项目配置 Wokwi,请参阅[项目配置](./project-config)页面。 - -如果您只是想快速入门并使用 Wokwi for VS Code,这里有一些示例项目,预先配置了 [diagram.json](../diagram-format) 和 [wokwi.toml](./project-config) 文件。 - -:::info -在模拟以下任何项目之前,您需要编译代码并生成 固件 / ELF 文件。有关如何编译代码的说明,请参阅项目的自述文件。 -::: - -### Platform IO 示例 - -- [Arduino Simon Game](https://github.com/wokwi/arduino-simon-game) - 带有 4 个 LED、4 个按钮、一个蜂鸣器和一个 7 段显示器的记忆游戏 -- [ESP32 Network Clock](https://github.com/wokwi/esp32-ntp-clock) - 从互联网 (NTP) 同步时间并将其显示在 LCD 显示屏上 -- [ESP32 Web Server](https://github.com/wokwi/esp32-http-server) - 控制 2 个 LED 的 HTTP 服务器 -- [ESP32 Async Web Server](https://github.com/wokwi/esp32-async-web-server-example) - 使用 ESPAsyncWebServer 库控制 2 个 LED 的 HTTP 服务器 - -### ESP-IDF 示例 - -- [WiFi + FreeRTOS Tasks](https://github.com/wokwi/esp32-idf-hello-wifi) - -### ESP32 + Rust - -- [Hello Display](https://github.com/playfulFence/esp-hello-display/tree/feature/vscode-wokwi) - 使用 ESP32-C3 和 ILI9341 显示器 -- [esp-gallery](https://github.com/playfulFence/esp-gallery) - 互动艺术画廊 (ESP32-C3) -- [ESP32-S2 Keypad Example](https://github.com/playfulFence/esp-keypad-example/tree/feature/vscode-wokwi) -- [Scrolling text](https://github.com/playfulFence/esp-rolling-stone) - 使用 LED 点阵显示 -- [Etch-A-Sketch](https://github.com/playfulFence/esp-etch-a-sketch) - 使用模拟操纵杆在 LED 点阵上绘图 - -### Arduino 扩展示例 - -:::warning -VS Code 的 Arduino 扩展需要安装 Arduino IDE 1.8 或 [Arduino CLI](https://github.com/microsoft/vscode-arduino/issues/1477#issuecomment-1278699661)。它不适用于 Arduino IDE 2.0(目前)。 -::: - -- [Arduino LCD-1602 "Hello World"](https://github.com/wokwi/arduino-lcd-helloworld) - -### Other 示例 - -- [Custom chips example](https://github.com/wokwi/inverter-chip) - 反转输入信号的[自定义芯片](../chips-api/getting-started) -- [Raspberry Pi Pico SDK](https://github.com/wokwi/pico-sdk-blink) - Blinky for Raspberry Pi Pico diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/project-config.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/project-config.md deleted file mode 100644 index 6768c73..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/vscode/project-config.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: 配置你的项目(wokwi.toml) -sidebar_label: 项目配置 ---- - -要在 Wokwi 上模拟你的项目,你需要在项目的根目录中创建两个文件: - -- `wokwi.toml` - 告诉 Wokwi 如何运行你的项目的配置文件。 -- `diagram.json` - 用于描述电路的 [diagram file](../diagram-format) 文件。 - -## wokwi.toml - -基本的 `wokwi.toml` 看起来像这样: - -```toml -[wokwi] -version = 1 -firmware = 'path-to-your-firmware.hex' -elf = 'path-to-your-firmware.elf' -``` - -将 “path-to-your-firmware” 替换为已编译固件的位置,**相对于** wokwi.toml 文件的位置(即你的工作空间的根目录)。 - -固件文件的扩展名取决于你使用的开发板: - -| Board | Supported firmware types | -| -------------------------- | ------------------------ | -| Arduino Uno/Mega, ATtiny85 | .hex, .elf | -| Raspberry Pi Pico | .hex, .uf2 | -| ESP32 Family | .bin, .uf2, .elf | - -你可以通过按 **F1** 键然后选择 “Wokwi: Start Simulator” 来检查测试你的配置。 - -:::warning -避免在路径中使用反斜杠(`\`)。改用正斜杠(`/`)代替,它会使你的项目能够在任何平台上打开(包括Windows、Mac和Linux)。 -::: - -### 串口转发 - -Wokwi for VS Code 允许你使用 RFC2217 TCP 服务连接到模拟微控制器的串行端口。要启用此功能,请将以下配置添加到 wokwi.toml 文件的 `[wokwi]` 部分内: - -```toml -rfc2217ServerPort = 4000 -``` - -这将在端口 4000 上启动 RFC2217 服务。然后你可以使用任何 telnet 客户端(例如 [PuTTY](https://www.putty.org/))连接到串行端口。此外,你可以使用 PySerial 的 [RFC2217 support](https://pyserial.readthedocs.io/en/latest/url_handlers.html#rfc2217) 支持从你的 Python 代码连接到串口: - -```python -import serial - -ser = serial.serial_for_url('rfc2217://localhost:4000', baudrate=115200) -ser.write(b'hello') -``` - -注意:确保模拟器选项卡在 VS Code 中可见,否则模拟可能会暂停并且你不会从微控制器获得任何串行输出。 - -### 物联网网关 (ESP32 WiFi) - -Wokwi for VS Code 包含一个捆绑版本的 [Wokwi 私有物联网网关](../guides/esp32-wifi#internet-access),它允许你将模拟 ESP32 的虚拟 WiFi 连接到你的本地网络和互联网。 - -你还可以从你的计算机连接到模拟 ESP(例如,你正在 ESP32 上运行网络服务器)。为此,请在 wokwi.toml 中设置端口转发。比如将本地的8180端口转发到ESP32的80端口,添加如下配置: - -``` -# 将 http://localhost:8180 转发到模拟 ESP32 上的 80 端口: -[[net.forward]] -from = "localhost:8180" -to = "target:80" -``` - -有关完整示例,请参阅 [ESP32 Web 服务器](https://github.com/wokwi/esp32-http-server)项目。 - -### 自定义芯片 - -您可以通过在 wokwi.toml 配置中添加 `[[chip]]` 部分来加载自定义芯片到仿真中。以下示例将从“chip/inverter.chip.wasm”加载芯片,并在 Wokwi 的图表中将其命名为 `chip-inverter`,以供使用: - -```toml -[[chip]] -name = 'inverter' # To use the chip in diagram.json, add a part with "chip-inverter" type. -binary = 'chips/inverter.chip.wasm' -``` - -Wokwi 还需要一个描述芯片引脚的 JSON 文件。这个 JSON 文件应该与 wasm 二进制文件同名,但是扩展名为 json(例如在上面的示例中 `chips/inverter.chip.json`)。完整的例子请查看 [the inverter-chip repo](https://github.com/wokwi/inverter-chip)。 - -您可以通过添加多个 `[[chip]]` 部分来向您的项目添加多个芯片,每个部分具有不同的`名称`和`二进制文件`。 - -## diagram.json - -您可以从 [Wokwi.com](https://wokwi.com) 上的现有项目复制 [diagram file](../diagram-format)。例如,如果您正在处理 ESP32 项目,则可以从 https://wokwi.com/projects/new/esp32 复制 diagram.json 的内容。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/welcome.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/welcome.md deleted file mode 100644 index 5793ea0..0000000 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/welcome.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -slug: / -title: 欢迎使用Wokwi! ---- - -import { LEDBullet } from '@site/src/components/LEDBullet' - -Wokwi是一个在线的电子电路仿真器。你可以使用它来仿真Arduino、ESP32和许多其他流行的电路板、元器件以及传感器。 - -这里为你准备了可以体验Wokwi的一些快速示例: - -- [Arduino Uno "Hello World"](https://wokwi.com/projects/322062421191557714) -- [Blink an LED on ESP32](https://wokwi.com/projects/305566932847821378) -- [Monitor the weather on ATtiny85](https://wokwi.com/projects/292900020514980360) -- [Control 32 Servos with Arduino Mega](https://wokwi.com/projects/305336312628511297) -- [Animate an LED Matrix with FastLED](https://wokwi.com/projects/320579687608746578) -- [7 Segment Counter with MicroPython on ESP32](https://wokwi.com/projects/300210834979684872) - -## Wokwi有什么特点呢? - - - -无需使用实际的元器件或下载大型软件。wokwi在线网站可以提供你需要的一切!在这里你可以用短时间去构建你的下一个物联网项目。 - - - - - -您是不会损坏虚拟硬件的。相信我们,我们都测试完毕了!所以不要担心烧毁了你珍贵的元器件。与真正的硬件不同,在这里,你总是可以撤销,你还有重来无数次的机会。 - - - - - -在这里,你只需要分享你的Wokwi项目的链接,就可以方便的寻求帮助。 - - - - - -在这里,硬件和软件问题是分开的,不用担心硬件的问题,专心你的软件。 - - - - - -再也不用从旧的项目中拆除元器件了,随意的取用你需要使用的零件吧!你再也不用担心项目的花费和元器件的库存。 - - - - - -这是一个分享项目、寻求帮助和获得灵感的地方!
- Wokwi Discord Community -
- -## 独家提供——特色功能! - -- [WiFi 仿真](guides/esp32-wifi) - 仿真项目可以连接到互联网。您可以使用MQTT、HTTP、NTP和许多其他网络协议。 -- [虚拟逻辑分析仪](guides/logic-analyzer) - 在仿真中可以捕获数字信号(例如UART、I2C、SPI)并在你的计算机上进行分析。 -- [强力的GDB仿真](gdb-debugging) - 为高级用户提供了强大的Arduino和Raspberry Pi Pico调试器。 -- [SD卡仿真](parts/wokwi-microsd-card) - 可以使用代码来存储和检索文件和目录。[Club](https://wokwi.com/pricing?ref=docs_sdcard) 会员也可以上传二进制文件(例如图像)。 - -## 要付多少钱才能用wokwi? - -Wokwi个人使用是免费的。对于商业用户和专业人士,请查看我们的[定价页面](https://wokwi.com/pricing?ref=docs_welcome)了解付费计划。 diff --git a/i18n/zh-CN/docusaurus-theme-classic/footer.json b/i18n/zh-CN/docusaurus-theme-classic/footer.json deleted file mode 100644 index 2a961f8..0000000 --- a/i18n/zh-CN/docusaurus-theme-classic/footer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "link.title.Docs": { - "message": "文档", - "description": "The title of the footer links column with title=Docs in the footer" - }, - "link.title.Community": { - "message": "社区", - "description": "The title of the footer links column with title=Community in the footer" - }, - "link.title.More": { - "message": "更多", - "description": "The title of the footer links column with title=More in the footer" - }, - "link.item.label.Welcome": { - "message": "欢迎", - "description": "The label of footer link with label=Welcome linking to /" - }, - "link.item.label.diagram.json": { - "message": "diagram.json", - "description": "The label of footer link with label=diagram.json linking to /diagram-format" - }, - "link.item.label.Discord": { - "message": "Discord", - "description": "The label of footer link with label=Discord linking to https://wokwi.com/discord" - }, - "link.item.label.Twitter": { - "message": "Twitter", - "description": "The label of footer link with label=Twitter linking to https://twitter.com/WokwiMakes" - }, - "link.item.label.Blog": { - "message": "Blog", - "description": "The label of footer link with label=Blog linking to https://blog.wokwi.com" - }, - "link.item.label.GitHub": { - "message": "GitHub", - "description": "The label of footer link with label=GitHub linking to https://github.com/wokwi/wokwi-docs" - } -} diff --git a/i18n/zh-CN/docusaurus-theme-classic/navbar.json b/i18n/zh-CN/docusaurus-theme-classic/navbar.json deleted file mode 100644 index 35707b2..0000000 --- a/i18n/zh-CN/docusaurus-theme-classic/navbar.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": { - "message": "Wokwi", - "description": "The title in the navbar" - }, - "item.label.Docs": { - "message": "文档", - "description": "Navbar item with label Docs" - }, - "item.label.Blog": { - "message": "Blog", - "description": "Navbar item with label Blog" - }, - "item.label.Simulator": { - "message": "模拟器", - "description": "Navbar item with label Simulator" - } -}