Technische Informatik; Hardwarenahe Programmierung
Analog IO Grundlegend
AnalogIn¶
Auf dem Mbed LPC 1768 stehen insgesamt 12-Bit-6-Analogeingänge von p15 bis p20 zur Verfügung, und 1 Analogausgangspin ist auf p18 verfügbar (NUCLEO-L432KC). Vergleiche mit dem folgenden Programm die AnalogIn class reference. Kopiere das folgende Programm in den Simulator und füge mit Add component
einen Analog termistor
auf p20
hinzu.
AnalogInVonTermistor.cpp
/* Im Mbed simulator: + Add component Analog termistor p20 */ #include "mbed.h" AnalogIn Ain(p20); // Erstellt ein AnalogIn-Objekt für den Pin, der als Analogeingang verwendet wird. float ADCdata; uint16_t dig; int main() { while (1) { ADCdata=Ain.read(); // Auslesen der analogen Eingangsspannung im Bereich von 0,0 bis 1,0 Volt. ADCdata=Ain; // Float Operator als Abkürzung für die read() Funktion printf("%f \n\r",ADCdata); dig=Ain.read_u16(); // Auslesen der analoge Eingangsspannung im Bereich von 0x0 bis 0xFFFF gelesen. printf("%d \n\r",dig); wait (0.5); } }
NUCLEO-AnalogIn-Code Beispiel und Vergleich zum PWM Ausgabe.
Hinweis:
AnalogIn() liest die Spannung als Bruchteil der Systemspannung. Der Wert ist ein Gleitkommawert von 0,0 (VSS) bis 1,0 (VCC). Wenn Sie zum Beispiel ein 3,3-V-System haben und die angelegte Spannung 1,65 V beträgt, liest AnalogIn() 0,5 als Wert.
AnalogOut¶
Das folgende Programm in den Online Editor importieren und Kopfhörer einstecken. Das Programm verwendet das Poti 1 am AnalogIn Pin p19 und AnalgOut am Pin p18 (P0.26), an dem der 3,5 mm Audio Klinkenstecker angeschlossen ist.
Import programapp-AnalogOut_Umpolen
Ausgabefrequenz durch Umpolung und Lautstärke mit Poti einstellen
Die Frequenz wird durch das Umpolen am Analog-Ausgang zwischen dem Wert des Potis und "0" erzeugt.
Es gibt leider kein vergleichbares Element im Simulator für dieses Programm. Sie müssen es am mbed-Application-Board testen.
app-AnalogOut_Umpolen.cpp
include "mbed.h" AnalogOut Aout(p18); // Kopfhörer AnalogIn pot1(p19); int main() { while(1) { Aout = pot1.read(); // Lautstärke wait_us(1000); // Frequenz Aout = 0; wait_us(1000); } }