http://sites.schaltungen.at/arduino-uno-r3/skalieren
Wels, am 2014-10-20BITTE nützen Sie doch rechts OBEN das Suchfeld [ ] [ Diese Site durchsuchen]DIN A3 oder DIN A4 quer ausdrucken ********************************************************************************** DIN A4 ausdrucken
********************************************************* Skalieren mit mapmap(value, fromLow, fromHigh, toLow, toHigh)http://arduino.cc/en/pmwiki.php?n=Reference/MapBeschreibung Re-Map konvertiert einen Wert von einem Bereich zum anderen. Das heißt, würde ein Wert von fromLow zu toLow ein Wert von fromHigh zu toHigh zugeordnet bekommen, Werte dazwischen, um Werte in-zwischen etc. Keine Werte zu begrenzen in dem Bereich, weil out-of-Range-Werte sind manchmal gedacht und nützlich. Die Funktion constrain () kann entweder vor oder nach dieser Funktion verwendet werden, wenn Grenzen der Bereiche gewünscht sind. Beachten Sie, dass die "untere Grenze" der beiden Bereich kann größer oder kleiner als die "obere Grenze", so der map ()-Funktion verwendet, z.B. Werte umkehren y = map(x, 1, 50, 50, 1); // wenn Werte unzukehren sind (aus 1 wird 50)Die map Funktion übernimmt auch negative Zahlen y = map(x, 1, 50, 50, -100); // (aus 50 wird -100)Die Funktion map () verwendet Integer-Operationen, so wird nicht Fraktionen zu erzeugen, wenn die Mathematik könnte darauf hindeuten, dass es so zu tun. Fraktionierte Reste abgeschnitten und nicht gerundet oder gemittelt. Parameter value: Roh-Wert = Integer-Variable fromLow: die untere Grenze der Strombereich für den Wert fromHigh: die obere Grenze der Strombereich für den Wert toLow: die untere Grenze für den Wert des Zielbereichs toHigh: die obere Grenze des Wertes der Zielbereich Retouren Der Wert zugeordnet. Beispiel / * 10-bit (0 bis 1023) Analogwert auf 8-bit (0 bis 255) * / void setup() {} void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); } Anhang Für die mathematisch veranlagt, hier ist die gesamte Funktion long map(long x, long in_min, long in_max, long out_min, long out_max){ return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;} ********************************************************* BUCH: Arduino Praxiseinstieg Seite 213 Analoge Temperaturanzeige In der digitalen Welt sind die meisten Temperaturanzeigen und Wetterstationen mit Digitalanzeigen ausgestattet. Mit einer kleinen Servoanwendung kann man aber auch eine analoge Temperaturanzeige realisieren. Die Position des analogen Zeigers, der die aktuelle Umgebungstemperatur auf der Analogskala anzeigt, wird mit dem Servo gesteuert. Dazu wird eine runde Skala mit einem Winkel von 180 Grad auf ein Blatt oder einen Karton gezeichnet. Im Drehpunkt wird ein Loch für den Servo gemacht und an der Drehachse des Servos wird nun ein Zeiger aus Papier oder Karton angeschlossen. Das Temperatursignal wird von einen Temperatursensor LM35 ermittelt. Der Servo steuert dann den Zeiger für eine Anzeige von 0 bis 50 Grad. #include <Servo.h> //Variablen int tempval; int tempPin = 0; int servoval; // Servo-Objekt erstellen Servo myservo; void setup() { // Servo an Port 9 myservo.attach(9); } void loop() { // Temperaturwert vom Analogport 0 lesen // Daten von LM35 // 0-50 Grad ergeben 0-500 mV = 0-103 tempval = analogRead(tempPin); // Skalieren des Sollwertes für den Servo // 103 entsprechen 0-180 Grad // max. Temp von 50 Grad (linker Anschlag) // min. Temp von 0 Grad (rechter Anschlag) servoval = map(tempval, 103, 0, 0, 179); // Temperaturwert am Servo ausgeben myservo.write(servoval); delay(1000); // 1sec. warten } Servoanwendung: Ansteuerung eines Zeigers für eine analoge Temperaturanzeige Zur Kalibrierung wird mittels Potentiometer der Analogwert der Temperatur simuliert, der Zeiger korrekt positioniert (Endwert) und auf der Skala angezeigt. Zur Kontrolle wird nun noch der Minimalwert für eine Temperatur von 0 Grad eingegeben. Der Zeiger bewegt sich an den Anfang der Skala. Auch hier wird der Skalawert markiert. Nun können noch Werte dazwischen, beispielsweise 20 und 30 Grad, mit derselben Methode simuliert und auf der Skala markiert werden. DIN A4 ausdrucken ********************************************************* Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected] ENDE a |