Show Posts
Pages: 1 ... 27 28 [29] 30 31 ... 43
421  International / Deutsch / Re: Verständnissproblem mit loop von einem Neuen on: May 06, 2011, 06:14:35 am
Ja, OK.
Das wußte ich nicht aber trotzdem meine Frage:
0 - 4294967295 ergibt dann so lange 1 bis millies() > 4294967295 ist oder nicht?
Weil so lange würde es negativ sein.
Und demnach würden wir nie wieder auf interval kommen da dann ja schon wieder ein überlauf kommt.


Gehen wir mal von folgendem aus:
Das Ergebiss war wahr, millis() liefert 4294967293 und oldMillis übernimmt den Wert.

oldMillis steht somit auch auf 4294967293.
Eine Millisekunde später liefert millis() den nächsthöheren Wert, also 4294967294.
Der Vergleich liefert also millis() - oldMillis = 4294967294 - 4294967293 = 1.
Noch eine Millisekunde später liefert millis() also 4294967295, millis() - oldMillis = 4294967295 - 4294967293 = 2.
Wieder eine Millisekunde später müsste millis() 4294967296 liefern. Dieser Wert passt nicht mehr in ein unsigned long, es entsteht also ein Überlauf. Da wegen dem unsigned kein negativer Wert entstehen kann, liefert millis() somit 0.
Die Vergleichsrechnung wäre demzufolge: millis() - oldMillis = 0 - 4294967293
Da wegen unsigned long keine negative Zahl entstehen kann ist das Ergebnis 3.
Beim nächsten mal wäre millis() - oldMillis = 1 - 4294967293 = 4.

Die Vergleichsergebnisse sind also fortlaufend 1, 2, 3, 4, ... obwohl dazwischen ein Überlauf stattgefunden hat.
Jetzt alles klar?
422  International / Deutsch / Re: maximale Kabellänge on: May 06, 2011, 02:31:05 am
Mit den Inputs sollte es keine Probleme geben, aber mit I²C vermutlich schon.
423  International / Deutsch / Re: Verständnissproblem mit loop von einem Neuen on: May 06, 2011, 02:28:09 am
Sollte so einwandfrei funktionieren.
Nur die Abfrage würde ich eher so durchführen:
Code:
  if (millies() - oldMillies > Interval)
Das vermeidet Probleme beim Überlauf von millies(). Zudem wäre noch anzumerken, dass oldMillies unbedingt als unsigned long deklariert werden sollte.
Das Problem "Überlauf" wollte ich eh nochmal erfragen:
Kommt es da nicht auch zu verschiebungen?

Angenommen:
millies geht bis 15
intervall ist 5
angenommen der letze intervall liegt genau bei 14 dann ist old millies bei 14
dann müßte doch millies bis 20 gehen können damit millies - oldmillies = 6 ist und dementsprechen > 5 interval
oder anders:
wenn oldmillies durch den überlauf erheblich größer ist wie millies kommen minus werte raus und demnach dauert es auf jeden fall länger da millies erstmal wieder oldmillies einholen muß.

Oder denke ich falsch.

Darum sagte ich ja, dass oldMillis als unsigned long deklariert werden muss. Die Funktion millis() liefert auch unsigned long, somit gibt es keine negativen Werte.
Durch die Konstellation millis() - oldMillis kommt immer das richtige Ergebnis raus. Wenn millis() durch den Überlauf 0 liefert und oldMillis noch auf 4294967295 steht verursacht 0 - 4294967295 ja auch einen Überlauf und liefert 1.
424  International / Deutsch / Re: Verständnissproblem mit loop von einem Neuen on: May 06, 2011, 01:17:12 am
Korregiert mich wenn ich falsch liege aber so währe es doch machbar:

Code:
...
Interval = 1000;
oldMillies = millies();

void loop(){
  taster abfragen
  Poti abfragen
  mach damit was
  if (millies() > oldMillies + Interval){
    Displayausgabe
    oldmillies = millies();
  }
}
So würden die Daten zwar durchgehend ausgelesen und verarbeitet aber das langsame Display wird nur jede Sekunde aktualisiert.
Wenn das so richtig ist ist das ja ziemlich simpel und kaum mehr code.

Gruß
Thorsten


Sollte so einwandfrei funktionieren.
Nur die Abfrage würde ich eher so durchführen:
Code:
  if (millies() - oldMillies > Interval)
Das vermeidet Probleme beim Überlauf von millies(). Zudem wäre noch anzumerken, dass oldMillies unbedingt als unsigned long deklariert werden sollte.
425  International / Deutsch / Re: Servomotor und tips gesucht on: May 04, 2011, 01:15:02 pm
Wow, das ist mal ein Kühlkörper ... Sehr fein.
Wenn ich mir den Pololu so ansehe, dann stehen die angelöteten Stiftleisten weiter nach oben als der IC. Da muss ich mir was einfallen lassen...
Vielen Dank für den Link - und: Schöne Sachen machst du da! Ab in die Bookmarks...

Danke smiley

Das Problem mit den Stiftleisten hab ich recht pragmatisch gelöst: ich hab sie oben abgeschliffen.
426  International / Deutsch / Re: Servomotor und tips gesucht on: May 03, 2011, 05:01:12 pm
Quote
Wie kühlt ihr das Ding?
Schau mal in meinen Blog: http://www.mafu-foto.de/blog
Einträge "Das Problem mit der Hitze" und "Temperaturtest und neue Teile"
427  International / Deutsch / Re: smoothstep für Steppermotor integrieren, wer kann helfen on: May 01, 2011, 12:05:01 pm
Ich habe mir kürzlich die EasyDriver4 Library für den Pololu Stepper Driver umgeschrieben. Diese Pololu Library erweitere ich zur Zeit um eine SmoothStep Funktion. Wenn ich die fertig habe, kommt sie auch in die EasyDriver4 Lib. Beide Libs kann man dann von meiner Website downloaden.

Es wird aber noch etwas dauern, da ich die nächsten Tage unterwegs bin. Rechne also frühestens nächstes Wochenende mit einem brauchbaren Ergebnis.
428  International / Deutsch / Re: Frage Serielen Monitor on: April 27, 2011, 06:23:10 am
Du schaltest die LED aus und wieder ein. Anschließend frägst Du den Zustand ab. Merkst Du was? Warum sollte eine "LED aus" Meldung kommen?
429  International / Deutsch / Re: Suche Starter Kit für zweiten Anlauf mit Arduino on: April 25, 2011, 01:23:54 pm
Ich versehe alle meine ATmegas (328 und 644) mit Bootloader, ein Problem beim Programmupload hatte ich noch NIE. Meinen ISP-Programmer verwende ich meist nur zum Aufspielen des Bootloaders.
Das liegt aber teilweise auch daran, dass die meisten meiner Projekte eh eine (zumindest zeitweise) Verbindung zum PC benötigen und deshalb einen USB/Seriell Adapter besitzen.
430  International / Deutsch / Watterott Touch Display MI0283QT-2 und ATmega 644 on: April 24, 2011, 05:34:52 pm
Zweiter Streich:

Es geht wieder um das Touch-Display von Watterott: http://www.watterott.com/de/MI0283QT-2-Adapter
Hier hatte ich ja schon meine Button Library vorgestellt: http://arduino.cc/forum/index.php/topic,59105.0
Für mein MotoStack Projekt(http://www.mafu-foto.de/projektebasteln/projektebastelnmotostack) werden mir die Pins des 328 zu knapp, daher werde ich den 644 verwenden. Da die vorhandene Arduino-Bibliothek zu diesem Chip nicht kompatibel ist, habe ich die nötigen Anpassungen vorgenommen.
Wer also das Display mit einem ATmega 644/644P verwenden möchte, findet hier die passende Bibliothek: http://www.mafu-foto.de/elektronik/arduino
431  International / Deutsch / Re: motor steuern , position speichern und abrufen on: April 23, 2011, 04:57:25 pm
Servos geben keine Position zurück. Ein Servo fährt die Position an, die er gesagt bekommt. Welche das ist, musst Du schon selber speichern.
Ein Schrittmotor macht hingegen nur Schritte, der kennt überhaupt keine Positionen. Da muss man sich selber darum kümmern. Die einzige Konstante beim Schrittmotor ist, dass er für eine komplette Umdrehung 200 (Voll-)Schritte benötigt (normalerweise, es gibt aber auch Modelle mit anderer Schrittweite). Soll er sich also um 90° drehen, musst Du ihn 50 Vollschritte machen lassen.
432  International / Deutsch / Re: Arduino? Mini? Pro? ATMEGA 328? ATMEGA 168? USB-Breakout? Verstehe ich nicht! on: April 23, 2011, 07:30:09 am
Der Bootloader ist die Basissoftware im ATmega, welche Dir das einfache aufspielen der Programme erlaubt. Wenn Du einen fertigen Arduino kaufst (UNO, Mini, ...) ist der Bootloader ja schon aufgespielt und braucht Dich NICHT zu interessieren. Du musst nur in der IDE den richtigen Arduino auswählen, sonst klappt das aufspielen der Programme nicht.
433  International / Deutsch / Re: Bibliothek für das Touch Display MI0283QT-2 von Watterott on: April 23, 2011, 04:52:29 am
Hier ist ein Beispiel für die Verdrahtung:
http://www.watterott.net/mi0283qt2/mi0283qt-2_arduino-uno.jpg

Ich verwende es auch ohne Shield. Da ich eh keine Arduinos verwende, sondern nur die ATmegas auf eigenen Platinen, wird das Display bei mir einfach über eine Buchsenleiste angeschlossen.
434  International / Deutsch / Re: Bibliothek für das Touch Display MI0283QT-2 von Watterott on: April 22, 2011, 06:04:49 pm
Es sind ja nur wenige Funktionen und die Handhabung dürfte sich anhand des Beispielprogramms und des Videos weitestgehend ergeben.
Aber bei der nächsten Version der Lib werde ich eine kleine Beschreibung mitliefern.
435  International / Deutsch / Re: Segment Leds (Zahlen) steuern on: April 21, 2011, 09:20:16 am
oder was ich noch versucht habe ist die hier zu testen:

http://www.pollin.de/shop/downloads/D120212D.PDF

da leuchtet überhaupt nix ich verstehe das nicht ich habe mir das viel leichter vorgestellt -.-'

also bei der LED habe ich PIN 15 der LED an GND angeschlossen und mal getestet ob etwas leuchtet egal was aber nix passiert.

Da steht aber, dass Pin 15 die Anode ist. Pin 18 ist die Kathode und somit GND. LED leuchten nur wenn der Strom in die richtige Richtung fließt (ist ja schließlich eine Diode).
Und beachte auch die Spannung der LEDs. Wenn ich mich noch richtig erinnere, stand im vorigen PDF was von 1,7V. Wenn Du die LEDs ohne Vorwiderstand an 5V hängst, kann es sein, dass Du sie nur ganz kurz und dann nie mehr zum leuchten bekommst  smiley-wink
Pages: 1 ... 27 28 [29] 30 31 ... 43