Show Posts
Pages: 1 ... 77 78 [79] 80 81 ... 183
1171  International / Deutsch / Re: Zähler zählt ohne Impuls on: June 11, 2013, 01:22:35 pm
Probleme löst man, indem man sie isoliert:

Schreib den einfachstmöglichen Sketch zum Pulse Zählen / Anzeigen
Bau eine einfache Schaltung, um die Pulse zu generieren.
Du kannst übrigens auch zwischen 5V Signal aus dem Relais und "buttonPin" mit dem 1k Pulldown Widerstand eine kleine rote LED schalten: Wenn das Relais schaltet, sollte die LED leuchten und noch eine ausreichend hohe Spannung ( > 3V ) für den DigitalPin übrig lassen.


5V --- o/ o ---->|----+---o buttonPin
      Relais   LED    |
                     1 k
                      |
                      +---o GND  


Nachtrag: hängen Zählen und LED Pulse zusammen ?
1172  International / Deutsch / Re: Zähler zählt ohne Impuls on: June 11, 2013, 05:05:00 am
Dein Code ist mir zu groß und schlecht eingerückt,
ausserdem kommt da kein Relais drin vor,

daher vermute ich mal, dass es an fehlenden Pullup/Pulldown Widerständen liegt.

Hängt das Relais an buttonPin ?

1173  International / Deutsch / Re: Drehzahlanzeige mit dem Arduino on: June 11, 2013, 05:00:57 am
>oder steht das irgendwo
Das steht irgendwo! Aber ich bin nicht wikipedia.
 
Interrupte werden gemerkt und ausgeführt, sobald wieder enabled.
Es kann aber nur 1 Ereignis je Interrupt gemerkt werden.

1174  International / Deutsch / Re: Hilfe bei millis() on: June 11, 2013, 04:53:06 am
Ähnlich schlecht wie delay() ist deine for-Schleife.

loop() an sich ist die Schleife.
Sorg dafür dass sie schnell fertig ist, und prüfe beim nächsten Mal wieder, ob eine Wartezeit abgelaufen ist.
Du solltest dir dazu merken, wie der KameraPin gerade steht und vieviele Fotos du schon gemacht hast.

Code:
boolean k = LOW;
int foto = 9999;
unsigned long t;
void loop()
{
      if (digitalRead( Startbutton) && foto >= 400)
      {
          foto = 1; // Start-Trigger
      }

      if (foto <= 400)
      {
           if (k == LOW)
           {
                 if ( millis() - t > (newPos*1000) )
                 {
                      k = HIGH;
                      digitalWrite(KameraPin, k);
                      myLcdDisplay ( foto );  // Positionieren,Text ausgeben ... ( meine Faulheit, hier eine Funktion hinzuschreiben )
                      t = millis();
                 }
           }
           else      // k == HIGH
           {
                 if (millis() - t > 500)
                 { 
                       // Delay zu ende
                       k = LOW;
                       foto ++;
                       digitalWrite(KameraPin, k);
                       t = millis();   // startet das andere delay
                 }
           }
      }
}

.. und nicht von den vielen Klammern verwirren lassen smiley-wink

Deinen startwert verstehe ich evtl. nicht richtig...
Hab mal einen Button mit pulldown angenommen, stattdessen
1175  International / Deutsch / Re: Grenzen der Verschachtelten Wenn-Funkton on: June 11, 2013, 04:09:18 am
Ausser den Rücksprungadressen sind übrigens noch alle lokalen Variablen einer Funktion auf dem Stack, aber eigentlich egal:

Wenn der Stack die statischen/globalen Variablen kaputt macht ( oder umgekehrt ) ist alles zu spät !

Die "Verschachtelte Wenn-Funktion" des OP , belastet den Stack nicht sonderlich, denn sie ist eher eine elende
   if ... else if ... else if  ... Kette.

geforce sollte besser sein String Objekt durch ein char [] ersetzen.
Ich fürchte, "r17" ... "r26" steht immer an der geichen Stelle in readString und das Ganze ist also nur eine Quälerei des armen Arduino smiley-wink
 

Und vor  "langen Würsten" schützt sich das Forum effektiv durch zeitweises Verschwinden. Das kann ich bestätigen.
1176  International / Deutsch / Re: Arduino-Oszilloskop - [Nano Version] on: June 11, 2013, 03:49:02 am
> wieviel Programmiererfahrung hast du eigentlich mit C# ?
so viel : <--------> smiley-wink

Hilfe für c#  gibt es reichlich. Wenn du ein bisschen c kannst, ist es angenehmer als Basic, finde ich.
Kannst aber auch VB.net nehmen, wenn du keine Semikolons magst und lieber Dim i As Integer als int i;  schreibst.
 
Da, anders als bei Java, keine Unabhängigkeit vom Betriebssystem angestrebt wird, ist man oft näher dran.
Ansonsten das gleiche Konzept (Managed Code, Müllabfuhr, usw.,  wie du es von Basic gewohnt bist).

Mit Grafik mach ich beruflich nichts. Da sind meine Versuche mit DrawLines() Hobby-Neuland.
Ein Äquivalent zum pureBasic Backbuffer scheint es zu geben, DoubleBuffer,  hab ich noch nicht ausprobiert smiley-wink

Direct2D wäre evtl das richtige, um richtig Performance rauszukitzeln.

c/c++ für Arduino ist schön nach dem Motto "Back to the Roots"
Zum Spass könnte man sich auch in den atmel assembler reinknien.

> Fourier-Transformation hatten wir mal im 3. Semester
Wir auch, daher ahne ich, was du mit FFT meinst. Allerdings ist bei mir das 3. Semester vermutlich schon länger her smiley-wink
1177  International / Deutsch / Re: Grenzen der Verschachtelten Wenn-Funkton on: June 10, 2013, 08:21:17 am
Die Grenze liegt wohl eher in readString ....
1178  International / Deutsch / Re: Arduino-Oszilloskop - [Nano Version] on: June 10, 2013, 08:19:57 am
Ja, das DrawLine mit 5 (oder bei dir nur 3 FPS) ist unbefriedigend.
1179  International / Deutsch / Re: Arduino-Oszilloskop - [Nano Version] on: June 10, 2013, 07:48:51 am
Quote
habe heute extra für dich 2 Programme geschrieben, einen Benchmark in C und PureBasic
Sehr schönes Testprogramm, Danke ! Grafik 4 flimmert beeindruckend smiley-wink

Hier meine Ergebnisse, falls es dich interessiert [Win7 64 bit auf einem 2.17GHz * 2 (intel T7400) ]

Performance-Test: Programmiersprache PureBasic 
------------------------------------------------------------


[ ok ]   Test 1: Ganzzahl von 0 bis 1.000.000.000 hochzählen     [    3261 ms]
[ ok ]   Test 2: Gleitkommazahl von 0 bis 1.000.000 hochzählen   [    4648 ms]
[ ok ]   Test 3: Stringinhalt 100.000.000 mal ändern             [   15725 ms]
[ ok ]   Grafik 1: direkt in die GUI zeichnen         [  38 FPS] [  30714 W/s]
[ ok ]   Grafik 2: in Backbuffer zeichnen             [ 578 FPS] [ 462876 W/s]
[ ok ]   Grafik 3: in Backbuffer zeichnen (skaliert)  [ 287 FPS] [2296945 W/s]
[ ok ]   Grafik 4: in Backbuffer zeichnen (Rauschen)  [ 340 FPS] [ 272487 W/s]
...
by SBond, 09.06.2013


Der Backbuffer wird wohl nur angezeigt, wenn Zeit übrig ist ...
Dafür Flimmerfrei, das ist ja auch was wert, auch wenn man wohl nicht alles sieht und die FPS Werte daher nicht vergleichbar sind  smiley-wink


Beeindruckend, wieviel schneller
Code:
char Text[10];
sprintf (Text,"aaaaaaaaa");
gegenüber

Text = "aaaaaaaaa" 

in Basic oder wohl auch mit anderen String-Objekten ist.
1180  International / Deutsch / Re: SRAM SPI 1Mbit @ Mega2560 on: June 10, 2013, 05:45:16 am
Das ist wohl eher nur ein kleiner Testausschrieb.

Aber Stefan hat schon Recht:

sram_read (SRAM_DEVICE, testaddress, outputvar);  // geht so nicht.

Wenn outputvar beschrieben werden soll, kannst du sram_read nicht einfach dessen Wert übergeben.


in C übergibt man die Adresse von outputvar:

Code:
sram_read (SRAM_DEVICE, testaddress, & outputvar);
...

void sram_read (const byte device, unsigned long address, byte* pdata) {
// überall data durch *pdata ersetzen...
}


In c++ gibts auch referenzen, aber das wird, wenn pointer ein Problem sind, evtl. eher noch verwirrender.
1181  International / Deutsch / Re: Übungsprojekt mit viel geblinke und sensoren usw. funktioniert nicht so ganz on: June 10, 2013, 05:34:15 am
Quote
Ich daklariere sie doch jedes mal in void loop neu !?
Nein, aber selbst wenn du sie deklarieren würdest, brächte dir das nichts:

Code:
void loop() {
  int zeit;  // Das wäre eine Deklaration
  zeit = millis();
  while(millis() <= zeit + 10000) {  // das ist ein Vergleich von unsigned long, 32 sec nach reset wird das nie mehr true
  }
}

Damit es auch 49 Tage nach reset immer funktioniert, wäre das hier optimal:

Code:
unsigned long zeit = millis();
while (millis() - zeit <= 10000) {
// selbst bei Überlauf eines unsigned long ist die Differenz richtig !
}

... wenn man mal davon absieht, dass es selten optimal ist, wenn loop() 10 sec hängt...
1182  International / Deutsch / Re: Arduino-Oszilloskop - [Nano Version] on: June 09, 2013, 04:00:23 pm
Oh, das Hochwasser ist schlimm dieses Jahr.

Schön, dass du offensichtlich hier wieder Zeit hast und dir nicht alles abgesoffen ist.

Werde mir deine Tests auch mal anschauen. Danke!

Neben DrawPolygon gibt es bei .net (c#) auch noch DrawLines, der Unterschied scheint im wesentlichen zu sein, dass das erste eine geschlossene Figur zeichnet.
Aber vergleichbare Geschwindigkeit. Das Ganze natürlich in einem extra Thread, damit das Programm interaktiv bleibt.
1183  International / Deutsch / Re: Drehzahlanzeige mit dem Arduino on: June 09, 2013, 03:34:25 pm
Auch andersrum:

Variable, die in der ISR verändert werden und in loop gelesen werden, sollten auch als "volatile" deklariert werden.
Das teilt dem Compiler mit, keine falsche Optimierung einzubauen: Immer wenn die Variable gebraucht wird, muss sie auch aus dem Speicher gelesen werden.

Und Variable, die größer als 1 byte sind, müssen unter geschlossenem Interrupt umkopiert werden. Da sonst im Extremfall die ISR dazwichenkommen kann und in loop ein inkonsistenter Zustand erkannt wird.

Das ist zwar recht selten, aber daher um so schlimmer.
Stell dir vor, die ISR erhöht den counter von 255 (0x00ff) auf 256 (0x0100).
Wenn counter in loop gleichzeitig verwendet wird, kann der Wert auch 0x01ff oder 0x0000 sein, je nachdem welches byte zuerst gelesen wird.

Nach noInterrupt() geht übrigens kein Interrupt verloren, sondern wird nur verzögert, falls das nur kurz geschieht ( zum Umkopieren der ISR Variablen )
1184  International / Deutsch / Re: Arduino-Oszilloskop - [Nano Version] on: June 08, 2013, 11:37:50 pm
Hallo SBond,

ich hoffe das Thema interessiert dich noch...

Nachdem ich meine Java Version wegen max. 115200 Bd in die Tonne getreten habe, bin ich auf C# umgestiegen und kann nun bequem 500000 Bd Kommunikation mit dem Arduino fahren, was etwas schneller als die ADC ist.

Bei der Geschwindigkeit der graphischen Darstellung bin ich eigentlich auch zufrieden, da schaffe ich mit lokalen Testdaten max. 100 * 1000 Werte / sec, seit ich alle Werte eines Trends als Polygon zeichne ( und wieder lösche ). Das sollte dann für die < 50.000 Werte/s des Arduino reichen.

Deine >200.000 Werte/s machen mich aber schon neidisch. Wie machen du und  dein PureBasic das ???

Falls es interessiert, habe ich den entsprechenden c# Code im Anhang zum Ansehen,
( und wer .net 4.5 installiert hat, kann evtl. auch die test.exe ausprobieren )
1185  International / Deutsch / Re: bitte hilfe kann kaum programmieren on: June 08, 2013, 07:30:59 am
Quote
Sobald das Funksignal des Temperatursensors vom Nachbarn auf öffentlichem Grund empfangbar ist, also beispielsweise auf dem Bürgersteig vor dem Haus, entfällt der Schutz von §202b, weil dann keine "nichtöffentlichen Datenübermittlung" mehr vorliegt, sondern im Gegenteil eine "öffentliche Datenübermittlung", weil das Signal auf öffentlichem Grund empfangbar ist.

Also ist jede mail in einem unzureichend gesicherten WLAN eine öffentliche Datenübermittlung für den draussen vorbeifahrenden google streetview Wagen ?
Was soll dann das Geschrei ?

Und "empfangbar" ist doch sehr relativ, und stark von der Technik des Empfängers abhängig, oder ?

Ich glaube eher, du machst es die etwas zu leicht, jurs. Wenn du Rechtsanwalt wärst, wüsstest du, dass solche Fragen nicht so leicht und eindeutig zu beantworten sind. (Das ist eher die Geschäftsgrundlage dieses Berufs)
Pages: 1 ... 77 78 [79] 80 81 ... 183