Inhaltsverzeichnis:

Arduino weniger bekannte Funktionen - Gunook
Arduino weniger bekannte Funktionen - Gunook

Video: Arduino weniger bekannte Funktionen - Gunook

Video: Arduino weniger bekannte Funktionen - Gunook
Video: 🔴 Lerne Arduino in 12 Minuten, ….…JEDER KANN DAS! | #EdisTechlab 2024, Juli
Anonim
Arduino weniger bekannte Funktionen
Arduino weniger bekannte Funktionen

Dies ist eher eine Auflistung von nicht so oft erwähnten Funktionen von Arduino-Plattformen, die typischerweise verwendet werden (z. B. Uno, Nano). Diese Auflistung sollte als Referenz dienen, wenn Sie diese Funktionen nachschlagen und die Nachricht verbreiten möchten.

Schauen Sie sich den Code an, um Beispiele für all diese Funktionen zu sehen, wie ich sie in mehreren meiner Projekte hier auf instructable verwendet habe (z. B. Arduino 1-wire Display (144 Chars)). Die folgenden Schritte erläutern jeweils eine Funktion.

Schritt 1: Versorgungsspannung

Der Arduino kann indirekt seine eigene Versorgungsspannung messen. Durch Messen der internen Referenz mit der Versorgungsspannung als oberer Referenzgrenzwert erhalten Sie das Verhältnis zwischen interner Referenz und Versorgungsspannung (die Versorgungsspannung fungiert als obere Grenze für die Analog-/ADC-Messung). Da Sie den genauen Wert der internen Spannungsreferenz kennen, können Sie dann die Versorgungsspannung berechnen.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

  • Geheimes Arduino Voltmeter – Batteriespannung messen:
  • Kann Arduino seinen eigenen Vin messen?:

Schritt 2: Innentemperatur

Einige Arduino sind mit einem internen Temperatursensor ausgestattet und können daher ihre interne (Halbleiter-)Temperatur messen.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

Interner Temperatursensor:

Kann Arduino seinen eigenen Vin messen?:

Schritt 3: Analoger Komparator (Interrupt)

Arduino kann einen analogen Komparator zwischen Pin A0 und A1 einrichten. So gibt einer den Spannungspegel an und der andere wird auf ein Überschreiten dieser Spannung geprüft. Ein Interrupt wird ausgelöst, je nachdem, ob die Kreuzung eine steigende oder fallende Flanke (oder beides) ist. Der Interrupt kann dann von Software abgefangen und entsprechend reagiert werden.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

Analog-Komparator-Interrupt:

Schritt 4: Zähler

Natürlich haben die AVR mehrere Zähler enthalten. Normalerweise werden sie verwendet, um Timer mit verschiedenen Frequenzen einzurichten und bei Bedarf Interrupts auszulösen. Eine andere kann sehr altmodisch sein, sie nur als Zähler ohne zusätzliche Magie zu verwenden, lesen Sie einfach den Wert, wenn Sie ihn brauchen (Umfrage). Eine interessante Verwendung könnte dies sein, um Knöpfe zu entprellen, z. B. Vermitteln Sie zum Beispiel diesen Beitrag: AVR Beispiel T1-Zähler

Schritt 5: Vordefinierte Konstanten

Es gibt einige vordefinierte Variablen, die verwendet werden können, um Ihrem Projekt Versions- und Kompilierungsinformationen hinzuzufügen.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

Serial.println (_DATE_); // Erstellungsdatum

Serial.println (_TIME_); // Kompilierungszeit

String stringOne = String(ARDUINO, DEC);

Serial.println (stringOne); // Arduino-Ide-Version

Serial.println (_VERSION_); // gcc-Version

Serial.println (_FILE_); // Datei kompiliert

Diese Code-Schnipsel geben diese Daten an die serielle Konsole aus.

Schritt 6: Behalten Sie die Variable im RAM durch Zurücksetzen bei

Es ist bekannt, dass Arduino Uno (ATmega328) über ein internes EEPROM verfügt, mit dem Sie Werte und Einstellungen beim Ausschalten erhalten und beim nächsten Einschalten wiederherstellen können. Eine nicht so bekannte Tatsache könnte sein, dass es tatsächlich möglich ist, den Wert während des Resets sogar im RAM zu erhalten - die Werte gehen jedoch beim Power-Cycle verloren - mit der Syntax:

unsigned long variable_that_is_preserved_attribute_ ((Abschnitt (".noinit")));

Damit können Sie beispielsweise die Anzahl der RESETs und bei Verwendung des EEPROMs auch die Anzahl der Power-Ups zählen.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

  • Variable im Ram durch Reset beibehalten:
  • EEPROM-Bibliothek:

Schritt 7: Greifen Sie auf das Taktsignal zu

Arduinos und andere AVR (wie ATtiny) haben eine interne Uhr, die es Ihnen ermöglicht, sie ohne Verwendung eines externen Quarzoszillators auszuführen. Gleichzeitig können sie dieses Signal auch nach außen schalten, indem sie es auf einen Pin (z. B. PB4) stecken. Der knifflige Teil hier ist, dass Sie die Sicherungsbits des Chips austauschen müssen, um diese Funktion zu aktivieren, und das Ändern der Sicherungsbits birgt immer die Gefahr, dass der Chip gemauert wird.

Sie müssen die CKOUT-Sicherung aktivieren und dies am einfachsten tun, indem Sie den Anweisungen zum Ändern der Sicherungsbits von AVR Atmega328p - 8-Bit-Mikrocontroller mit Arduino folgen.

Genaue Details dazu, einschließlich Beispielcode, finden Sie unter:

  • Tuning des internen ATtiny-Oszillators:
  • So ändern Sie Sicherungsbits von AVR Atmega328p - 8-Bit-Mikrocontroller mit Arduino:

Schritt 8: Interne Portstruktur von ATmega328P

Wenn wir die interne Struktur der Ports von ATmega328P kennen, können wir die Standardnutzungsgrenzen überschreiten. Weitere Details und ein Schema der internen Schaltung finden Sie im Abschnitt über das Kapazitätsmessgerät für den Bereich 20 pF bis 1000 nF.

Das einfache Beispiel ist die Verwendung von Tasten mit digitalen Ports, die keinen Widerstand benötigen, da ein interner Pull-up-Widerstand verwendet wird, wie im Input Pullup Serial Example oder der anweisbaren Arduino-Taste ohne Widerstand gezeigt.

Weiter fortgeschritten ist die Nutzung dieses Wissens wie erwähnt für die Messung von Kondensatoren ab 20 pF und darüber hinaus ohne zusätzliche Verdrahtung! Um diese Leistung zu erreichen, verwendet das Beispiel die interne/Eingangsimpedanz, den internen Pull-up-Widerstand und den Streukondensator. Vergleichen Sie mit dem Arduino CapacitanceMeter Tutorial, das nicht unter ein paar nF gehen kann.

Schritt 9: On-Board (eingebaute) LED als Fotodetektor

Viele Arduino-Boards haben On-Board- oder eingebaute LEDs, die über Code gesteuert werden können, z. die Uno- oder Nano-Platinen an Pin 13. Durch Hinzufügen eines einzelnen Drahtes von diesem Pin zu einem analogen Eingangspin (z. B. A0) können wir diese LED auch als Fotodetektor verwenden. Dies kann auf verschiedene Weise verwendet werden, z. zum Messen der Umgebungsbeleuchtung verwenden, LED als Taste verwenden, LED für bidirektionale Kommunikation verwenden (PJON AnalogSampling) usw.

Empfohlen: