Schritt 10: Zusätzliche Tipps
Wenn Sie seriellen Kommunikation tun möchten: Serielle Software ist ein Arduino-Bibliothek, die Ihnen erlaubt, alle von dem Arduino Pins in serielle Pins zu verwandeln. Normalerweise, wenn Sie ein Arduino-Projekt, die seriellen Kommunikation erfordert durchführen, verwenden Sie digitale Pins 0 und 1 weil sie serielle Daten schicken sein müssen. Ich möchte ihnen für die 8-Bit DAC verwenden, da Pins 0-7 alle Teil des PORTD auf dem Arduino Atmel328 Chip sind, dies ermöglicht es mir, alle in einer einzigen Codezeile anzugehen. PORTB hat nur 6 Pins (digitale Stifte 8-13) und COSINUS hat nur 6 pins (analogen Pins 0-5), so dass Sie eine 8-Bit DAC mit diesen Ports allein erstellen können nicht.
Möchten Sie verwenden die PWM Pins oder sonst müssen verschiedene Pins als DAC verwenden: Wenn Sie, die PWM-Pins verwenden müssen können Sie Bit Manipulation Pins 3, 5 und 6 und ersetzen Sie diese durch Stifte 8, 12 und 13. Sagen Sie, dass Sie die Zahl 36 an PORTD senden möchten. Hier können Sie die folgenden Zeilen:
definieren Sie Variablen:
Boolesche bit3state ;
Boolesche bit5state;
Boolesche bit6state;
in Ihren wichtigsten loop():
bit3state = (36 & B00001000) >> 3; //get das dritte Bit 36
bit5state = (36 & B00100000) >> 5; //get das fünfte Bit der 36
bit6state = (36 & B01000000) >> 6; //get das sechste Bit 36
Senden von Daten an Portd w/o-Pins 3, 5 und 6 zu stören
PORTD | = (36 & B10010111); //set hohe Pins hoch mit der Nummer 36 mit Nullen ersetzen Bits 3, 5 und 6
PORTD & = (36| B01101000); //set niedrigen Stifte niedrig mit der Nummer 36 mit Bits 3, 5 und 6 zu ersetzen
Senden von Daten an Portb w/o-Pins 9, 10 und 11 zu stören
PORTB | = 0 | (bit3state) | (bit5state << 4) | (bit6state << 5); //set hohe Stifte
PORTB & = 255 & ~(1-bit3state) & ~((1-bit5state) << 4) & ~((1-bit6state) << 5); //set niedrigen Stifte
Achten Sie darauf, diese PORTD und PORTB Linien direkt neben einander in Ihrem Code zu halten, Sie wollen die Pins am Port d und Port b, möglichst zur gleichen Zeit wie möglich zu wechseln.
Hier ist der Code aus dem vorherigen Schritt bearbeitet, so dass keine PWM Stifte verwendet werden. Wie Sie in Abb. 1 sehen, hat die ungefilterte Ausgabe aus der DAC viele Diskontinuitäten, verursacht durch die Verzögerung zwischen dem Senden von Daten an Port d und Port b sowie die Aufspaltung der Befehle zur Einstellung Pins hoch und niedrig. Sie können die meisten dieser Brüche mit Tiefpassfilter (Abb. 2) loswerden. Wollten Sie diese Technik verwenden, sollten Sie überlegen, Erhöhung der Grenzfrequenz Tiefpass-Filter. Wenn Sie dies machen wollte wirklich gut, Sie könnten Ihre 5 wichtigsten Bits an Port d und Ihre 3 niederwertigsten Bits an Port b senden. Dies würde die Amplitude von einigen der Diskontinuitäten, reduzieren die Größe des Rauschens verringern. Ich lasse Sie herausfinden, dass man auf eigene Faust.
//Sine out, 40kHz sampling rate, w/o using PWM pins //by Amanda Ghassaei
Wenn Sie von digitalen Stifte laufen und mehr brauchen: Denken Sie daran, dass Sie immer Ihre analogen Pins als digitale i/o verwenden können. Probieren Sie die folgenden Funktionen, sie funktionieren genauso wie mit einem normalen digitalen Stift zu tun haben.
DigitalWrite (A0, HIGH); //set Pin A0 hoch
DigitalWrite (A0, niedrige); //set Pin A0 niedrig
DigitalRead (A0); //read digitale Daten von Pin A0
Andernfalls verwenden Sie einen multiplexer. Benötigen Sie weitere digitale Ausgänge, können die 74HC595 Sie drei der Arduino digitale Stifte in 8 Ausgänge zu verwandeln. Sie können auch Daisy-Chain, die mehrere 595 zusammen ist, um viele weitere Ausgänge Pins zu erstellen. Sie können Ihre ganze DAC auf einen dieser Chips einrichten, wenn man wollte (obwohl es ein paar Zeilen Code bräuchte, um es anzugehen und möglicherweise Sie zuviel für höhere Abtastraten verlangsamen). Die Arduino-Webseite ist ein guter Ort zum Einstieg zur Verwendung von 595.
Benötigen Sie weitere digitale Eingänge, können 74HC165 oder CD4021B Sie drei der Arduino digitale Stifte in 8 Eingänge zu verwandeln. Der Arduino-Webseite ist wiederum ein guter Ort zum lernen, wie man diese Chips zu verwenden zu beginnen.
Wenn Sie die Informationen in diesem Instructable mit dem Mega oder anderen Boards verwenden möchten: In dieser Instructable sprach ich ausschließlich über den Arduino Uno mit Atmel328. Der gleiche Code wird auf jedem Board mit einem Atmel328 oder Atmel168 Chip darauf problemlos ausgeführt. Sie können auch die gleichen Ideen mit einem Mega. Sie sollten versuchen, Ihre DAC an jedem Port anhängen, die hat 8 Pins zur Verfügung, so können Sie Ihre DAC mit einer Zeile Code beheben ("PORTD =") auf die Uno, ist der einzige Hafen, die 8 verfügbaren Pins hat Port d.
Bild zeigt an, dass die Mega mehrere Ports mit 8 Pins hat: Ports a, b, C und l sind die offensichtliche Wahl. Wenn Sie kümmern sich nicht um Verschwendung von analogen Pins können Sie auch Häfen f oder k.