Loading...
  Show Posts
Pages: 1 [2] 3 4 ... 100
16  International / Deutsch / Re: EEPROM mit Werten jenseits der 255 belegen on: May 17, 2013, 05:10:58 am
Es geht um eine hochdynamische XXX genauer darf ich nicht drauf eingehen und ist auch unwichtig.

hmm, 500.000 Baud.... aber da spielt der Serielle Monitor von der ArduinoSoftware doch nicht mit oder?

Der SerialMonitor benutzt die Java RxTxComm, die erlaubt max 115200.
Aber du willst ja "hochdynamisch" Binärdaten speichern, nur eben mehr als in einen FRAM passen, oder ...
17  Using Arduino / General Electronics / Re: Calculating input voltage beforehand [Newbie question] on: May 17, 2013, 04:21:50 am
We usually identify ourselves with the Arduino, so "Vout" and "Vin" sound rather strange.

But from the voltage divider point of view its perfect smiley

 
18  International / Deutsch / Re: Ausschaltverzögerung über fertiges Arduino Board möglich? on: May 17, 2013, 03:07:21 am
oder gleich
float threshold = 0.0586;

Ich denke, das ist auch das Hauptproblem.

const int threshold = 11; // compared to 0 .. 1023

würde das nächste "Problem" zeigen: Die float Zahlen verstecken, dass der Messbereich eher ungünstig gewählt ist...
19  International / Deutsch / Re: EEPROM mit Werten jenseits der 255 belegen on: May 17, 2013, 02:39:32 am
Quote
vorerst ca 2000-10000 Messwerte in der obigen Konfiguration, aber noch mehr wär natürlich besser für später...
Ein Messwert besteht aus: Zeit (0-65000), Analogwert (0-1023), Puls1 (low-high), Puls2 (low-high).
Das sind 4 byte / event. Für 8000 Events brauchst du schon 32kB

Stellt sich noch die Frage nach der Erfassungsgeschwindigkeit.
Normales analogRead dauert über 100 µs.

Wenn die Zeit in millis ist und du max. einen Wert / Millisekunde hast, sehe ich den einfachsten externen Speicher in deinem PC.
Eine Übertragung mit 115200 reicht sogar leicht für 2 Events / ms.

Bei 8 Events / ms mit 500000 Bd (kontinuierlich) hat man die Grenze der normalen Analogerfassung sowieso erreicht, und noch nicht ausgenutzt, dass mindestens in deinem Zeitstempel bei dem Tempo viel Komprimierungspotential steckt.

Und die Frage nach den 10000 Events ( wofür brauchst du so viel Datenschrott ; = ) stellt sich da erst gar nicht.
20  International / Deutsch / Re: Hex - Zahlen / Binärzahlen mit dem Arduino empfangen via Serial Port on: May 16, 2013, 04:38:08 pm
Wenn du eine bestimmte Zeilennummer suchst: Beim Lesen die '\n' zeichen zählen ?
Eine komplette Zeile lesen: Bis zum nächsten '\n' (oder Dateiende) lesen ?
Wenn du eine bestimmte Zeile suchst, musst du halt jede gelesene Zeile auswerten und bei Bedarf die nächste lesen ?

Zum Splitten hast du strtok ja schon gefunden,
atoi / atol , um eine Zahl draus zu machen, sollte auch zu finden sein.
 
21  International / Deutsch / Re: EEPROM mit Werten jenseits der 255 belegen on: May 16, 2013, 11:23:31 am
Quote
es bietet sich da da der Eeprom bereits vorhanden ist
... dort irgendwelche Konfigurationsdaten zu speichern, damit man nicht bei gelegentlichen Änderungen, die nach einem Reset noch da sein sollen, einen neuen Sketch brennen muss.

"Leute wie wir", die alle naslang einen geänderten Sketch hochladen, brauchen eigentlich kein Eeprom smiley-wink
Aber gibt auch andere Anwendungen für einen µC.
22  International / Deutsch / Re: Ausschaltverzögerung über fertiges Arduino Board möglich? on: May 16, 2013, 10:30:03 am
1.
float threshold = 15/256;
könnte 0.0 sein, da 15 und 256 zwei Integer Zahlen sind...

8-bit µController können von sich aus keine Gleitkomma-Berechnungen, und meist kommt man auch als Mensch ganz gut ohne aus... smiley-wink

2. Was misst du denn überhaupt ? Welchen Widerstand hat der Draht ( am Anfang, minimal / später ... )
Kannst du mit einem Messgerät die Spannung an deinem 82 Ohm Widerstand messen?

Da du den Arduino über USB mit Strom versorgst, kannst du sicher auch den SerialMonitor aus der IDE anschliessen und dir mit Serial.print  sagen lassen was passiert.

23  International / Deutsch / Re: EEPROM mit Werten jenseits der 255 belegen on: May 16, 2013, 09:45:53 am
Quote
Ich habe verschiedene Werte die ich gern im EEPROM sammel möchte und anschließend per USB übertragen will.
Je Messung sollen 4 Werte gespeichert werden: Zeit 0-65000, Analogwert 0-1023, Puls1 0-1, Puls2 0-1.
Dafür ist ein eeprom eigentlich nicht gemacht...
eeprom ist langsamer und kleiner als ram, und  verträgt nur eine begrenzte Anzahl Schreibzyklen.

Aus der Arduino Reference:
Quote
Note
An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it.


Ist es denn wichtig, dass die Daten ein Ausschalten des Arduino überleben ?
Na ja, ein Batterie-Backup und sleep Modus des Arduino ist etwas aufwendiger ...
24  International / Deutsch / Re: Led Uhr on: May 16, 2013, 09:20:52 am
Quote
ich habe noch nie mit Funktionen gearbeitet.

Gelogen:
Code:
void setup() {
...
}
ist eine Funktion, die du geschrieben hast, und
digitalWrite(latchPin, LOW);
ist eine Funktion, die du verwendet hast.

Wolltest du digitalWrite selber schreiben, ginge das so
void digitalWrite (byte pin, boolean state) {
 // was macht man nun, damit *pin* den Zustand *state* kriegt ?
}


Es gibt übrigens auch Funktionen, die einen Wert zurückliefern:

Code:
boolean digitalDummyRead( byte pin ) {
   // liefert auf ungeraden pins LOW zurück, sonst HIGH (nur zum Spass)
   if (pin & 1) return LOW;
   else return HIGH;
}

Quote
das wird noch dauern, weil ich sehr überraschend krank geworden bin
Oh, scheint eher eine schwere Krankheit zu sein, na gute Besserung !
25  International / Deutsch / Re: EEPROM mit Werten jenseits der 255 belegen on: May 16, 2013, 08:47:51 am
Du kannst Datenstrukturen definieren, und sie als Byte array adressieren.

Und du bist nicht der erste der sowas will: http://playground.arduino.cc/Code/EEPROMWriteAnything

Nachtrag: Falls dich templates erschrecken, schau dir dort den letzten Abschnitt an:
Quote
If you don't want to bother with a separate header file, you can use the avr eeprom library instead ...
26  International / Deutsch / Re: String seriell einlesen und teilen on: May 16, 2013, 08:43:58 am
Quote
Dann soll das ganze am Komma noch mal geteilt werden so das ich hinter her die zwei zahlen als int in einer Variable habe.
Ich hoffe ihr versteht was ich will :smiley-grin:
In einer int Variable kann nur eine Zahl sein, und auch keine "1,1"
Das will ich also lieber nicht verstehen smiley-wink
27  International / Deutsch / Re: String seriell einlesen und teilen on: May 16, 2013, 08:40:04 am
Quote
Wird der String denn wirklich als String übergeben seriell
Seriell liest immer zeichenweise.
In deinem Beispiel kommen '1'    ','   '1'  ';'   usw. nacheinander an.
Es kann auch sein, dass nicht sofort alle Zeichen da sind.

Ob du alles erst zusammensammelst und dann an den Trennzeichen , und ; wieder trennst, oder alles gleich verarbeitest, ist deine Sache.
28  International / Deutsch / Re: SD-Card Interface von Conrad on: May 16, 2013, 08:31:46 am
Quote
Der Schaltplan von Megaionstorm ist etwas problematisch.
Die Sendeleitung SD-Karte -> Arduino (MISO) benötigt keinen Pegelwandler!
Sie sollte direkt verbunden werden.

Soweit stimmt es ...

Aber: Das MISO Signal kommt aus der SD Card, und sollte als 3.3V Signal auch an einem 1k Widerstand immer noch > 3V sein.
Das kann man gut (egal ob direkt oder über einen 560 Ohm Widerstand ) auf einen Arduino Input Pin geben.
Ist also nicht schädlich, nur überflüssig.
Immerhin kann man sich so schonmal 1/4 der befürchteten Lötarbeiten sparen.

Die berüchtigten chinesischen SD-Adapter und vermutlich auch der hier diskutierte (kann man auf dem ebay Bild nicht gut erkennen) haben einen 3.3V Regler und mindestens die Hälfte der Widerstände (als PullUp) schon drauf, so dass max ein kleiner Widerstand oder eine Rückwärts-Diode in der Zuleitung von CS, MOSI, CLK reichen...
Die Lötarbeit hält sich also in Grenzen und ist eh erforderlich, da die Pin-Reihenfolge nicht zum Arduino passt.
29  International / Deutsch / Re: Den Exponenten einer float Variablen ohne Logarithmus finden! on: May 16, 2013, 06:27:16 am
Und was ist daran schlecht ?

Wenn dir 2 Nachkommastellen nicht reichen, mach doch z.B.
Code:
float x = PI;
Serial.println(x,6);


Ansonsten nimm sowas wie
Code:
union {float f; byte b[4];} test;
test.f = PI;
int pow = (test.b[3] & 0x7f) - 0x3f; //entspricht ca.  log2(f) / 2  


Wenn du log nicht willst, möchtest du sicher auch keine float Multiplikation,
sonst könntest du natürlich (mit Rundungsfehlers) aus einem log2 einen log10 machen...

geht nur auf little endians mit der üblichen float-Darstellung
( auch auf einem PC ):

Das angehängte Programm liefert z.B.  
314.159271 = 63 14 9d 43 --> 4
 31.415928 = d2 53 fb 41 --> 2
  3.141593 = db 0f 49 40 --> 1
  0.314159 = 7c d9 a0 3e --> -1
  0.031416 = fd ad 00 3d --> -2
  0.003142 = 2e e3 4d 3b --> -4
  0.000314 = be b5 a4 39 --> -6
  0.000031 = 98 c4 03 38 --> -7
  0.000003 = 26 d4 52 36 --> -9
  0.000000 = b8 a9 a8 34 --> -11

Nachtrag: wir ignorieren der Einfachheit halber das kleinste Bit des Exponenten
edit: pow ist natürlich vorzeichenbehaftet
30  Using Arduino / General Electronics / Re: Calculating input voltage beforehand [Newbie question] on: May 16, 2013, 04:28:38 am
no, vOut and GND are at the same level in your drawing.
Pages: 1 [2] 3 4 ... 100