Show Posts
|
|
Pages: [1] 2 3 ... 38
|
|
1
|
International / Deutsch / Re: Hallo brauche Hilfe
|
on: May 18, 2013, 07:03:34 am
|
|
Für sich alleine gestellt gehen die Beispiele ja und das Verfahren ist "akzeptabel". Aber im Mischbetrieb würdest Du damit auf die Schnauze fallen. Sinnvoll und sauber geht sowas nur ohne delay(). Schau dir mal das Beispiel "Blink without delay" an. Das wäre eine Ausgangsbasis auf die man aufsetzen könnte. Oder noch besser: Hier im Forum gibt es einen Thread, bei dem es um unterschiedliche Blinkfrequenzen mehrerer Leuchttürme geht. Das würde genau in Deine Richtung gehen, such den mal.
P.S.: und verwende bitte das nächste mal einen etwas aussagekräftigeren Threadtitel.
|
|
|
|
|
2
|
International / Deutsch / Re: arduino stepper projekt für schule
|
on: May 15, 2013, 10:00:03 am
|
... @MaFu ja wir wollen die Taster gedrückt halten und wollten diese auch an analogRead() ranhängen. ... Das bringt natürlich nichts. Da der Taster ja nur zwei Zustände liefern kann, liest Du bei analogRead() auch nur zwei Werte aus: 0 oder 1023. Häng die zwei Taster einfach an normale Digitalpins und lies den Zustand über digitalRead().
|
|
|
|
|
3
|
International / Deutsch / Re: arduino stepper projekt für schule
|
on: May 15, 2013, 09:06:35 am
|
|
Irgendwas passt da nicht. Du redest von Push-Buttons, also Taster. Die können nur zwei Zustände annehmen (gedrückt/nicht gedrückt) und werden demzufolge digital ausgelesen. Im Sketch wiederum hast Du ein analogRead(). Hängt da der Taster dran?
|
|
|
|
|
4
|
International / Deutsch / Re: Temperaturmessung mit mehreren DS18S20
|
on: May 15, 2013, 12:52:28 am
|
Hallo Kalli, hat funktioniert.  Vielen Dank dafür. Der Tipp von MaFu funktioniert nicht. Es wird ein Sensor angezeigt und der andere Zeigt immer den Wert 0 an. Gruß JensHast Du bei der Serial Ausgabe dann auch temp[0] und temp[1] verwendet? Oder weiterhin temp[1] und temp[2]? Arrays in C beginnen bei 0. Bei "MaxSensors=4" geht Dein Array somit von temp[0] bis temp[3] und NICHT von temp[1] bis temp[4]. Wenn Du dann irgendwann den Bereich von MaxSensors ausnutzt und vier Sensoren dranhängst, stehst Du vor dem nächsten Problem wenn Du erst bei temp[1] beginnst. for (int i = 0; i < MaxSensors; i++) temp[i]=sensors.getTempCByIndex(i);
|
|
|
|
|
7
|
International / Deutsch / Re: Dumme Frage zum Gyro MPU-6050
|
on: May 05, 2013, 11:54:42 am
|
UPDATE: Direkt an die SCL/SDA angeschlossen, funktioniert es. Aus dem Sketch von kommen jetzt auch vernünftige Daten raus.  Hat jetzt noch zufällig jemand zur Fehlermeldung eine Idee MPU6050_raw.ino:39:21: error: MPU6050.h: No such file or directory MPU6050_raw:45: error: 'MPU6050' does not name a type MPU6050_raw.ino: In function 'void setup()': MPU6050_raw:64: error: 'accelgyro' was not declared in this scope MPU6050_raw.ino: In function 'void loop()': MPU6050_raw:76: error: 'accelgyro' was not declared in this scope Die Bibliothek aus dem FreeIMU Zip lautet MPU60X0 und nicht MPU6050. Auch die Dateien lauten so und in den Beispielprogrammen stehen auch die richtigen includes. Bist Du sicher, dass Du nicht aus versehen Beispiele verwendest, die woanders her sind? Wobei ich mir an Deiner Stelle die Beispiele aus dem FreeIMU Bibliotheksverzeichnis ansehen würde. Da ist eigentlich alles dabei was man braucht. Probier mal "FreeIMU_yaw_pitch_roll" aus.
|
|
|
|
|
8
|
International / Deutsch / Re: Dumme Frage zum Gyro MPU-6050
|
on: May 04, 2013, 06:21:10 pm
|
Der MPU6050 hat ein I2C Interface (SDA/SCL) und wird demnach an die I2C Schnittstelle des Arduino angeschlossen (Analog Pins 4 und 5). Hier kannst Du dich näher über I2C informieren: http://playground.arduino.cc//Main/InterfacingWithHardware#i2cXDA/XCL ist eine zweite I2C Schnittstelle des 6050 für den Anschluss eines Magnetometers (z.B. HMC5883). Dessen Daten werden dann vom 6050 intern verarbeitet und zusammen mit den Accel./Gyro Daten ausgegeben, aus 6DOF werden dann 9DOF. Mit ADO auf VCC oder GND kann zwischen zwei verschiedenen I2C Adressen gewählt werden. Wichtig, wenn man zwei 6050 gleichzeitig anschließen will. INT gibt ein Interruptsignal aus, wenn Daten bereitstehen. Wird meist nicht benötigt. Die beste Bibliothek für die Verwendung eines 6050 findest Du hier: http://www.varesano.net/projects/hardware/FreeIMU
|
|
|
|
|
10
|
International / Deutsch / Re: Hilfe bei Schaltplan zum Anschluß von Ventilen
|
on: May 03, 2013, 03:38:22 am
|
|
Und wenn Du es so machst wie Gunther vorschlägt, funktioniert es wie von Dir gewünscht ohne dass das Programm irgendwo wartet. Und Du bist wesentlich offener für eventuelle Erweiterungen (Beispiel: ein Display anschließen, welches den ablaufenden Countdown und den aktuellen Status anzeigt).
|
|
|
|
|
11
|
International / Deutsch / Re: Schrittmotor: Step Typ per Code ändern
|
on: May 03, 2013, 01:06:14 am
|
Wie kommst Du auf analoge?
Ich hab angenommen, dass das Signal auf einem digitalen Output moduliert wird. In anderen Bereichen wird oft nach bestimmter Zeit High geschickt um die Synchronisation nicht zu verlieren. M1/M2/M3 sind nur eine Bitcodierung für den Controller, also einfach digital auf HIGH/LOW setzen. Abgesehen davon, dass ein Arduino überhaupt keine analogen Ausgänge hat
Hm ich dachte schon? Mein Board hat eine Beschriftung "Analog" und es gibt eine AnalogWrite funktion? Das sind PWM-Ausgänge, hat nichts mit Analog zu tun. Per Default macht der nur 1/16tel Schritte, was für meine Zwecke viel zu wenig ist. Was meinst Du mit zu wenig? Ich sehe keine Vorteil die Schrittmodi umzuschalten. Beim 1/16 Microstepping mußt Du nur 16 mal mehr Schritte machen (im Vergleich zu Vollschritten) . Hab schon herumprobiert und festgestellt, dass er sich viel langsamer dreht(verwende diese AccellStepper library). Max geschwindigkeit und beschleunigung hab ich natürlich angepasst. Hab außerdem gelesen, dass der dann weniger Kraft hat. Da sollte eigentlich kein Unterschied sein. Zudem läuft ein Schrittmotor wesentlich "runder", wenn es möglichst viele Microschritte macht. Was Du aber beachten musst: Für Microschritte muss der Motor mit einer mindestens drei bis viermal höheren Spannung als angegeben betrieben werden.
|
|
|
|
|
12
|
International / Deutsch / Re: Schrittmotor: Step Typ per Code ändern
|
on: May 02, 2013, 05:48:56 pm
|
Ich hab einen Big Easy Driver gekauft und meinen Schrittmotor angeschlossen. Per Default macht der nur 1/16tel Schritte, was für meine Zwecke viel zu wenig ist. Habe also die entsprechenden Anschlüsse(M1,M2,M3) verkabelt und somit auf ganze Schritte umgestellt. Jetzt will ich das ganze aber nicht fest verkabelt haben, sondern über den Arduino steuern. Wie genau funktioniert das? Such ich mir 3 Pins aus(analoge nehm ich an ???), die ich dann mit M1/M2/M3 verbinde und setze die entsprechenden Pins dann auf 0 um die Steps zu vergrößern?
Würde mich freuen, wenn jemand helfen kann! Danke
Wie kommst Du auf analoge? Abgesehen davon, dass ein Arduino überhaupt keine analogen Ausgänge hat: einfach drei x-beliebige Pins nehmen und dann je nach Schrittwunsch auf HIGH oder LOW setzen. Vorher natürlich mit pinMode(pinnummer, OUTPUT) als Ausgang festlegen.
|
|
|
|
|
13
|
International / Deutsch / Re: Hilfe bei Schaltplan zum Anschluß von Ventilen
|
on: April 30, 2013, 09:50:43 am
|
Du kannst die analogen Eingänge auch als Digitalpins verwenden.
Kann ich dafür auch INPUT_PULLUP verwenden? const int TRIP = A5; // Pin A5 = Starttaste void setup() { pinMode(TRIP, INPUT_PULLUP); } void loop() { While (analogRead(TRIP) == LOW && start == false) // wenn Taste gedrückt wird { startzeit = millis(); } ... ??? Aber nicht analogRead() verwenden sondern wie bei den andern Pins auch digitalRead(). Die Pins sollen ja schließlich als Digitalpins verwendet werden. Und es wird einfach weitergezählt. Analogpin 0 ist Digitalpin 14, Analogpin 1 ist Digitalpin 15, ...
|
|
|
|
|
14
|
International / Deutsch / Re: Hilfe bei Schaltplan zum Anschluß von Ventilen
|
on: April 29, 2013, 08:30:41 am
|
Und hier nochmal der jetzt hoffentlich endgültige Sketch: const int CAM = 8; const int BUTTON = 13;
int VAR = 0;
void setup( { pinMode(CAM, OUTPUT); pinMode(BUTTON, INPUT_PULLUP); // aktiviert den internen Pullup (= HIGH wenn BUTTON nicht gedrueckt wird) }
void loop() { VAR = digitalRead(BUTTON);
if (VAR == LOW) // wenn BUTTON gedrückt wird ist VAR = LOW { delay(3000); // 3 Sekunden warten digitalWrite(CAM, HIGH); // CAM durch HIGH auslösen delay(20); // Auslöseimpuls 20 Millisekunden digitalWrite(CAM, LOW); // Verbindung trennen } else // wenn BUTTON nicht gedrückt wird ist VAR = HIGH { digitalWrite(CAM, LOW); } }
Den else Zweig brauchst Du nicht.
|
|
|
|
|
15
|
International / Deutsch / Re: Hilfe bei Schaltplan zum Anschluß von Ventilen
|
on: April 29, 2013, 07:55:39 am
|
Ok, also so:
if (VAR == LOW) { delay(3000); digitalWrite(CAM, HIGH); delay(20); } else { digitalWrite(CAM, LOW); }
Ja. Ich würds aber dann gleich so schreiben: if (VAR == LOW) { delay(3000); digitalWrite(CAM, HIGH); delay(20); digitalWrite(CAM, LOW); }
|
|
|
|
|